1. 程式人生 > >Oracle 資料誤刪的恢復措施

Oracle 資料誤刪的恢復措施

         Oracle中,常見的資料刪除操作就三種,truncate,drop,delete,下面分類說一下如何恢復

 

Truncate:

         該操作執行後,保留表結構,清空表資料,不記錄日誌,雖然常規手段無法恢復,但是聯絡資料修復團隊還是可以做到的,網上也有自己恢復的教程,我個人試了幾次都沒有成功......

         誤刪後停止對該表的任何操作,避免後續的不當操作影響資料恢復的可能性。

 

Drop:

         通過檢視Oracle的回收站,可以查到被刪除的表、索引等,通過下列語句可以實現表資料恢復

         Oracle回收站:SELECT * FROM RECYCLEBIN;

         還原指定表:FLASHBACK TABLE recycle_tmp TO BEFORE DROP;

         還原指定表:FLASHBACK TABLE "BIN$dtGnFYeHXSvgU304AArEyg==$0" TO BEFORE DROP;

         清空回收站:PURGE TABLE  "BIN$34btciE8RySPmHqIlCGnVg==$0";

         清空回收站:PURGE TABLE recycle_tmp;

 

Delete:

------------恢復delete誤刪資料-1

         --根據時間戳查看錶資料情況

         select * from t1 as of timestamp to_timestamp('2018-09-17 09:50:11','yyyy-mm-dd hh24:mi:ss');

         --設定允許錶行移動

         alter table t1 enable row movement;

         --將表資料恢復到某一時間點

         flashback Table t1 to timestamp to_timestamp('2018-09-17 09:50:11','yyyy-mm-dd hh24:mi:ss');

         --或者直接插入丟失資料

         Insert Into t1 Select * FROM t1 As Of Timestamp to_timestamp('2018-09-17 09:50:11','yyyy-mm-dd hh24:mi:ss');

 

------------恢復delete誤刪資料-2

         --檢視資料庫當前scn(system change number)

         select current_scn from v$database;

         --尋找誤刪前的表資料(縮小scn號查詢)

         select * from t1 as of scn 38887000;

         --將表資料恢復到指定scn

         flashback table t1 to scn 38887000;

         

歡迎大家在評論區補充,我會不定期更新進來!