天天看點

「資料庫資料恢複」Oracle資料庫如何恢複truncate表的資料

作者:北亞資料恢複中心

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條。

「資料庫資料恢複」Oracle資料庫如何恢複truncate表的資料

北亞資料恢複——Oracle資料庫資料恢複

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

「資料庫資料恢複」Oracle資料庫如何恢複truncate表的資料

北亞資料恢複——Oracle資料庫資料恢複

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

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

5、通過解析system01.dbf檔案,北亞資料恢複工程師找到truncate的資料所在的位置,找到被删除的資料。解析truncate資料表所在的資料檔案,将truncate的資料插入到資料庫中。在Oracle資料庫中查找被truncate的資料表,發現資料已經回來了,備份資料。

「資料庫資料恢複」Oracle資料庫如何恢複truncate表的資料

北亞資料恢複——Oracle資料庫資料恢複

6、Exp導出scott使用者。

「資料庫資料恢複」Oracle資料庫如何恢複truncate表的資料

北亞資料恢複——Oracle資料庫資料恢複