FLASHBACK

上一篇 / 下一篇  2010-06-19 14:13:41 / 个人分类:ORACLE

.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!f k0

[9|u)j'km#G)d;n02.删除整个表
2W8|DPUHIhN0         drop table My_Table;

3Q#Y}wN8Ad0

0RHR|O6?K3~DQ{0如何恢复不小心 Drop 掉的表呢,其实 Oracle 中也有类似的 "回收站"

d!RzAh ^}*W^4b"ep0

8LkCdt;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_1rYx w
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{+ph kN

E;c*Y4P!l2BM*F$_$hm!R0
m``l U0ORACLE闪回和恢复DROP掉的表
+[*I[0f6_T2m5r5a0--闪回51Testing软件测试网9\y's j`p5M,s

51Testing软件测试网7an?H6Y tl

SELECT * FROM tableName AS OF TIMESTAMP(sysdate-1/12)  --查看2个小时以前的数据

m/r4s:q:A n0

G)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软件测试网PUW 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&lt4s8~3k
DROP TABLE drop_table;
[3T D4tk}YvI01.用如下语句查询到这个表还在Oracle回收站中:51Testing软件测试网@2O``;f l
SELECT * FROM user_recyclebin WHERE original_name='drop_table';
"V;{&K7zB+G%w$]"d02.用以下语句进行恢复:
2k#W w%b.DWZ-Qkt _f0FLASHBACK TABLE drop_table TO BEFORE DROP;
@z/n0_?0  ORACLE10G增加了回收站(recycle bin)的功能,从原理来说就是一个数据字典,保存被DROP对象的信息
:i iz7F F6J!dp~0,实际上被DROP的对象,并没有被数据库删除,任然占有空间。除非用户手工purge和数据空间不够被清除掉.
9l-}ax&K V03.清除回收站的数据
s7Y-~8b5Q.W1j[$[ N+]0purge table tableName
M]GN;]0purge recyclebin;--全部清除

0Iq&Y*U!Rnm0

1x4Cv(w'K0rsI8z'r0 51Testing软件测试网(K!nT$[ c


TAG:

 

评分:0

我来说两句

Open Toolbar