【資料庫資料恢復】Oracle資料庫誤truncate table的資料恢復案例

北亞資料恢復發表於2022-05-17

資料恢復環境:

Oracle 11g R2資料庫。


資料庫故障情況:

資料庫管理員誤truncate table  CM_CHECK_ITEM_HIS,表資料丟失,業務查詢到該表時報錯。資料庫備份不可用,表資料

無法查詢。


*Oracle資料庫小知識:

Truncate原理:ORACLE會在資料字典和Segment Header中更新表的Data Object ID,而實際資料部分的塊則不會做修改。

由於資料字典與段頭的DATA_OBJECT_ID與後續的資料塊中的並不一致,所以ORACLE服務程式在讀取全表資料時不會讀取

到已經被TRUNCATE的記錄。


Oracle資料庫資料恢復過程:

1、為保護使用者的資料,本文件模擬構建與使用者生產環境相同的故障。Scott使用者建立表emp1,複製emp表,連續複製多次

,總記錄數為:7340032條。truncate表emp1,之後沒有進行任何操作。查詢該表,資料庫中該表的記錄為0條。


注: Os:win server 2008R2。資料庫版本:win_oracle_11.2.0.1_x64;


2、對system表空間檔案進行分析,找到truncate表的原始資料所在的位置。



3、解析表所在的資料檔案,找到truncate的資料。


4、將truncate的資料插入到資料庫中。


總結:透過解析system01.dbf檔案,北亞資料恢復工程師找到truncate的資料所在的位置,找到被刪除的資料。解析表所在的資料檔案,將truncate的資料插入到資料庫中。

在資料庫中,查詢被truncate,發現資料回來了,直接備份資料。



5、Exp匯出scott使用者。



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31380569/viewspace-2894787/,如需轉載,請註明出處,否則將追究法律責任。

相關文章