Oracle數據庫故障:
北京某公司Oracle數據庫誤truncate table CM_CHECK_ITEM_HIS,表數據丟失,業務查詢到該表時報錯,數據庫備份也不可用,表數據無法查詢。
ORACLE數據庫Truncate原理:ORACLE會在數據字典和SegmentHeader中更新表的DataObjectID,實際數據部分的塊不會做修改。由于數據字典與段頭的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數據庫數據恢復
審核編輯 黃昊宇
-
數據恢復
+關注
關注
10文章
552瀏覽量
17397 -
數據庫
+關注
關注
7文章
3767瀏覽量
64283
發布評論請先 登錄
相關推薦
評論