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;
歡迎大家在評論區補充,我會不定期更新進來!