一.delete誤刪 方法1:如果表結構沒有改變,直接閃回整個表,具體步驟: --首先需要表閃回許可權,開啟行移動功能 alter table 表名 enable row movement; --執行閃回恢復表數據到某個時間點 flashback table 表名 to timestamp to_ti ...
一.delete誤刪
方法1:如果表結構沒有改變,直接閃回整個表,具體步驟:
--首先需要表閃回許可權,開啟行移動功能
alter table 表名 enable row movement;
--執行閃回恢復表數據到某個時間點
flashback table 表名 to timestamp to_timestamp(‘恢復的時間點','yyyy-mm-dd hh24:mi:ss');
--關閉行移動功能
alter table 表名 disable row movement;
方法2:查詢被刪除數據,再執行insert
insert into 表名 (select * from 表名 as of timestamp to_timestamp('恢復的時間點','yyyy-mm-dd hh24:mi:ss'));
二.drop誤刪
原理:由於oracle在刪除表時,沒有直接清空表所占的塊,oracle把這些已刪除的表的信息放到了一個虛擬容器“回收站”中,而只是對該表的數據塊做了可以被覆寫的標誌,所以在塊未被重新使用前還可以恢復。
1.如果記得被刪的表名,直接閃回
flashback table 原表名 to before drop;
2.不記的表明,先從“回收站”找到唄刪除的表,再執行恢復:
-- 查詢被刪除的表,table_name或者object_name就是刪除後在回收站中被重新命名的表名
select table_name,dropped from user_tables;
select object_name,original_name,type,droptime from user_recyclebin;
-- 執行恢復
flashback table "回收站中的表名" to before drop rename to 新表名;
三.閃回整個資料庫
alter database flashback on;
flashback database to scn SCNNO;
flashback database to timestamp to_timestamp('恢復的時間點','yyyy-mm-dd hh24:mi:ss');