.af1}6C`5q0Oracle中删除表,删除数据以及恢复数据51Testing软件测试网&m$O"?J;AV&sCE]
1.删除表中数据两种方法51Testing软件测试网{Ost-U;y
a. delete * from My_Table;
D*@7f3L)N0 b. truncate table My_Table;
%F+g'heF!fk0[9|u)j'km#G)d;n02.删除整个表
2W8|DPUHIhN0 drop table My_Table;
3Q#Y}wN8Ad00RHR|O6?K3~ DQ{0如何恢复不小心 Drop 掉的表呢,其实 Oracle 中也有类似的 "回收站"
d!RzAh ^}*W^4b"ep08LkCdt;AK$Mk0比如不小心删除了表 My_Table51Testing软件测试网9B1beOr
drop table My_Table;51Testing软件测试网}"g1Z\$sN
这个时候再用SELECT语句查询此表时,将会提示表或视图不存在.51Testing软件测试网vUJU2C9u0i
51Testing软件测试网H'W-P2j&Y8qV ~P_L但可以用如下语句查询到这个表还在Oracle回收站中:51Testing软件测试网^*L'_ UU,B,F;dQ
SELECT * FROM user_recyclebin WHERE original_name='My_Table';51Testing软件测试网a yw*x"^V[
51Testing软件测试网l1}m~\6M]B:]:u@那么现在就可以用如下语句进行恢复:
H!Ac{+K`M0FLASHBACK TABLE My_Table TO BEFORE DROP;51Testing软件测试网*NRd;L3j/Hy]\J
3r{_co|_03、如何彻底的删除表:51Testing软件测试网K"Qi1a*P5_1rYxw
oracle10g具有回收站功能,当我们删除表时其实并没有彻底的删除表,而是把表放入回收站,最后就出现一堆奇怪的表名:BIN$2cMp4FjwQ2Cw3Lj+BxLYTw==$0
u c_
]W#w0清除的方法如下:51Testing软件测试网#Dp
b0W`5D
purge table origenal_tableName;51Testing软件测试网
\t*F(xl A
purge index origenal_indexName;
i5?2X3z3P+E0查询垃圾信息,可以用如下SQL语句:
%q$u'y/Q~R0SELECT t.object_name,t.type ,t.original_name FROM user_recyclebin t;51Testing软件测试网5O0O{W(fZj3N
现在发现,原来还有这个命令:
PXJEB,V]0PURGE recyclebin;
?%s!F(a
M |&^0根本用不了上面那么复杂。呵呵!51Testing软件测试网;Iy ec'v!z|@(xy
另:删除Table不进入Recycle的方法:51Testing软件测试网`A,?7ha(x.U z8`2G
drop table tableName purge;51Testing软件测试网3FbV^7m7{+phkN
E;c*Y4P!l2BM*F$_$hm!R0
m``l U0ORACLE闪回和恢复DROP掉的表
+[*I[0f6_T2m5r5a0--闪回51Testing软件测试网9\y's
j`p5M,s
51Testing软件测试网7an?H6YtlSELECT * FROM tableName AS OF TIMESTAMP(sysdate-1/12) --查看2个小时以前的数据
m/r4s:q:A
n0G)M'b/PE01/2就是12小时
ZcBo'A6t5H01/24就是1小时51Testing软件测试网H} I4O%L!N|.R*b
1/24/60就是1分钟
/US9l!TJM&n0alter table tableName enable row movement;51Testing软件测试网lCN$Y3k8Y"n
这个命令的作用是,允许修改ORACLE分配给行的ROWID,在oracle中,插入一行数据51Testing软件测试网'MY}?8c+v
就会给它分配一个rowid,这行永远拥有这个ROWID,闪回表处理会对EMP完成DELETE操作51Testing软件测试网PU W
i l'hn
并添加新行,这样就会对新行分配一个新的ROWID; 否则会报 ora-08189错误。51Testing软件测试网;^[4d.E%E-D
flashback table tableName to scn timestamp_to_scn(sysdate-1/12);--利用时间转换成SCN号,进行数据恢复.
C:gqh:Yy0SCN:
1r.J6P2try0 SCN(System ChangeNumber):系统改变号,一个由系统内部维护的序列号。当系统需要更新的时候自动
XSTV pV]
d0增加,他是系统中维持数据的一致性和顺序恢复的重要标志。51Testing软件测试网;{+dT zj.C
51Testing软件测试网$zy9miC7Ug\
X-r
KN#f/sn'bp0--恢复删除的表51Testing软件测试网c<4s8~3k
DROP TABLE drop_table;
[3T D4tk}YvI01.用如下语句查询到这个表还在Oracle回收站中:51Testing软件测试网@2O``;fl
SELECT * FROM user_recyclebin WHERE original_name='drop_table';
"V;{&K7zB+G%w$]"d02.用以下语句进行恢复:
2k#Ww%b.DWZ-Qkt_f0FLASHBACK TABLE drop_table TO BEFORE DROP;
@z/n0_?0 ORACLE10G增加了回收站(recycle bin)的功能,从原理来说就是一个数据字典,保存被DROP对象的信息
:i iz7FF6J!dp~0,实际上被DROP的对象,并没有被数据库删除,任然占有空间。除非用户手工purge和数据空间不够被清除掉.
9l-}ax&K
V03.清除回收站的数据
s7Y-~8b5Q.W1j[$[N+]0purge table tableName
M]GN;]0purge recyclebin;--全部清除
0Iq&Y*U!Rnm01x4Cv(w'K0rsI8z'r0 51Testing软件测试网(K!nT$[ c