【資料庫資料恢復】如何恢復Oracle資料庫truncate表的資料

北亞資料恢復發表於2022-10-24

Oracle資料庫故障:

北京某公司Oracle資料庫誤truncate table CM_CHECK_ITEM_HIS,表資料丟失,業務查詢到該表時報錯,資料庫備份也不

可用,表資料無法查詢。

ORACLE資料庫Truncate原理:ORACLE會在資料字典和Segment Header中更新表的Data Object ID,實際資料部分的塊

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

據時不會讀取到已經被TRUNCATE的記錄(實際仍未被覆蓋)。


Oracle資料庫資料恢復過程:

1、為了保護使用者原Oracle資料庫中的資料不被二次破壞,我們透過構造與使用者相同的環境和相同的故障對本案例的Oracle

資料庫資料恢復的過程進行講解。

構造環境: 用Scott使用者建立表emp1,多次連續複製emp表,總記錄數為7340032條。只做truncate表emp1的操作,查詢

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



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



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

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

5、透過解析system01.dbf檔案,北亞資料恢復工程師找到truncate的資料所在的位置,找到被刪除的資料。解析truncate數

據表所在的資料檔案,將truncate的資料插入到資料庫中。在Oracle資料庫中查詢被truncate的資料表,發現資料已經回來了

,備份資料。



6、Exp匯出scott使用者。



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

相關文章