天天看點

oracle delete 删除資料回複

有兩種方案解決此問題,具體操作:

一:根據時間來恢複:

1、查詢資料庫目前時間(目的是為了檢查資料庫時間是否與你電腦時間相近,避免時間不同而将資料恢複到錯誤時間點)

select to_char(sysdate,‘yyyy-mm-dd hh24:mi:ss’) from dual;

2、查詢删除資料時間點之前的資料

select * from 表名 as of timestamp to_timestamp(‘2019-04-30 16:12:11’,‘yyyy-mm-dd hh24:mi:ss’);

(若沒有資料 ,将時間繼續提前)

3、恢複資料(激動人心的時刻)

flashback table 表名 to timestamp to_timestamp(‘2019-04-30 16:12:11’,‘yyyy-mm-dd hh24:mi:ss’);

大功告成,資料恢複成功;

但是也可能會出現問題,比如報錯:ORA-08189:未啟用行移動功能,不能閃回表;

不要怕,這個很簡單;

alter table 表名 enable row movement;

然後再次執行上面SQL即可;

二:根據資料庫SCN恢複資料

1、查詢目前資料庫SCN号

select current_scn from v$database;(不能執行的話,切換到sys使用者或system使用者查詢)

查詢到的目前值為:91799988

2、縮小SCN号查詢被删除表資料(若無資料繼續縮小SCN,由于資料庫操作不止一人,SCN号變化比較多,可以多縮小幾個号)

select * from 表名 as of scn 91799960;

3、恢複資料

flashback table 表名 to scn 91799960;