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資料庫資料恢複
2、通過對system表空間檔案的分析,找到truncate資料表的原始資料所在的位置。
北亞資料恢複——Oracle資料庫資料恢複
3、解析truncate資料表所在的資料檔案,找到truncate的資料。
4、将truncate的資料表插入到資料庫中。
5、通過解析system01.dbf檔案,北亞資料恢複工程師找到truncate的資料所在的位置,找到被删除的資料。解析truncate資料表所在的資料檔案,将truncate的資料插入到資料庫中。在Oracle資料庫中查找被truncate的資料表,發現資料已經回來了,備份資料。
北亞資料恢複——Oracle資料庫資料恢複
6、Exp導出scott使用者。
北亞資料恢複——Oracle資料庫資料恢複