oracle恢复误删除数据


适⽤范围:

适⽤于oracle 10g or high


处理过程

1.闪回drop的表:(当表所在的表空间空间不足,oracle也会删除回收站里的内容,所以此方法需要表空间空间充足、recyclebin没有被清空、删除时没加purge)

drop删除的表存放在recyclebin中,基于recyclebin闪回。

查看回收站对象:

SELECT owner,object_name,original_name,type,ts_name,droptime FROM dba_recyclebin;


闪回:

FLASHBACK TABLE TEST TO BEFORE DROP; 或者

FLASHBACK TABLE "BIN$BLmi9vltN3TgUKjAgYxoiA==$0" TO BEFORE DROP; (删除多次按照original_name闪回)或者

flashback table test to before drop rename to test1; (删除后原表已经产生新的数据,闪回时候可以rename一个新表,然后再insert到原表中)


2.闪回dml修改的表:

dml修改后的表是基于undo闪回。

按scn闪回:

flashback table test to scn xxxxxx;  


按时间闪回:

flashback table test to timestamp to_timestamp('2023-07-02 16:26:11','yyyy-mm-dd hh24:mi:ss');


创建表的方式恢复:

create table test1 as select * from test as of timestamp to_timestamp('2023-07-02 16:30:11','yyyy-mm-dd hh24:mi:ss');