oracle數據庫誤執行truncate命令導致數據丟失是一種常見情況。通常情況下,oracle數據庫誤操作刪除數據只需要通過備份恢復數據即可。也會碰到一些特殊情況,例如數據庫備份無法使用或者還原報錯等。下面和大家分享一例oracle數據庫誤執行truncate命令導致數據丟失的數據庫數據恢復過程。
Tips:oracle數據庫Truncate命令工作原理:oracle通過Segment?Header及數據字典對表的Data?Object?ID進行更新,實際上存儲數據部分的塊并未被修改。oracle服務再次讀取全表數據時就會因為Data?Object?ID與實際存儲的數據塊內容不一致導致被truncate的內容記錄無法被讀取。
oracle數據庫數據恢復過程:
北亞企安數據恢復工程師模擬出現問題的oracle數據庫環境:
操作系統:win server;
數據庫版本:win_oracle_x64;
1、使用Scott用戶創建表emp1,復制emp表,連續復制多次。truncate表emp1。此時查詢該表,數據庫中該表的記錄為0條。
2、打開數據庫文件的底層數據,分析system表空間文件。通過解析system01.dbf文件,找到被truncate表的原始數據所在的位置。
3、解析被truncate表所在的數據庫數據文件,找到被truncate的數據。
4、將被truncate的數據庫插入到數據庫中。
5、在數據庫中查找被truncate的表,發現數據回來了,備份數據。
Exp導出scott用戶。