flashback drop 是基于資源回收筒技術的,對于10g,11g的資料庫預設是開啟改功能的,不需要額外設定的。
下面做一些簡單操作示範下。
--建立測試表
create table tmp_pyb_20160419
as
select *
from dba_objects do
where 1=1
and rownum < 1000
;
--删除測試表
drop table tmp_pyb_20160419
;
--查詢測試表,會報 ORA-00942 錯誤
select *
from tmp_pyb_20160419
where 1=1
;
使用 PL/SQL Developer 工具 在 Recycle bin 目錄下可以看到被删除的表
在 資料字典 user_recyclebin 可以看到被删除的表
請注意object_name,original_name 列,感覺
oracle 是對 table 做了的 rename to BIN$MNXlPuGsbj7gUyoDAwobhQ==$0
如果要恢複被删除的表則執行如下操作:
alter table tmp_pyb_20160419 enable row movement;
flashback table tmp_pyb_20160419 to
before drop;
如果該schema 下已經有表或者視圖 tmp_pyb_20160419
flashback table tmp_pyb_20160419 to
before drop rename to
xxxxx;