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

北亞資料恢復發表於2023-03-24

Oracle資料庫故障:

北京某國企伺服器中部署的Oracle 11g R2資料庫被誤操作執行了truncate  table  CM_CHECK_ITEM_HIS,表資料丟失,

查詢該表時報錯,資料庫備份不可用,表資料無法查詢。

Truncate資料原理:表被Truncate後,ORACLE會在資料字典和Segment Header中更新表的DATA_OBJECT_ID,但是不

會修改實際資料部分的塊。由於資料字典與段頭的DATA_OBJECT_ID與後續的資料塊中的並不一致,所以ORACLE服務進

程在讀取全表資料時讀取不到已經被TRUNCATE但是實際未被覆蓋的資料。


Oracle資料庫恢復過程:

1、為了保護使用者的原始資料和更好演示truncate table的資料恢復過程,北亞企安資料恢復工程師構造了與使用者相同的故

障環境。

用Scott使用者建立表emp1,連續複製emp表多次,總記錄數為:7340032條。truncate表emp1,沒有做其他任何操作。

查詢該表,Oracle資料庫中該表的記錄為0條。



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


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



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

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

透過解析system01.dbf檔案,找到truncate的資料所在的位置,找到被刪除的資料。解析表所在的資料檔案,將truncate

的資料插入到資料庫中。

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



5、Exp匯出scott使用者。



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

相關文章