Oracle數(shù)據(jù)庫故障:
北京某國(guó)企服務(wù)器中部署的Oracle 11g R2數(shù)據(jù)庫被誤操作執(zhí)行了truncate table CM_CHECK_ITEM_HIS,表數(shù)據(jù)丟失,查詢?cè)摫頃r(shí)報(bào)錯(cuò),數(shù)據(jù)庫備份不可用,表數(shù)據(jù)無法查詢。
Truncate數(shù)據(jù)原理:表被Truncate后,ORACLE會(huì)在數(shù)據(jù)字典和SegmentHeader中更新表的DATA_OBJECT_ID,但是不會(huì)修改實(shí)際數(shù)據(jù)部分的塊。由于數(shù)據(jù)字典與段頭的DATA_OBJECT_ID與后續(xù)的數(shù)據(jù)塊中的并不一致,所以O(shè)RACLE服務(wù)進(jìn)程在讀取全表數(shù)據(jù)時(shí)讀取不到已經(jīng)被TRUNCATE但是實(shí)際未被覆蓋的數(shù)據(jù)。
Oracle數(shù)據(jù)庫恢復(fù)過程:
1、為了保護(hù)用戶的原始數(shù)據(jù)和更好演示truncate table的數(shù)據(jù)恢復(fù)過程,北亞企安數(shù)據(jù)恢復(fù)工程師構(gòu)造了與用戶相同的故障環(huán)境。
用Scott用戶創(chuàng)建表emp1,連續(xù)復(fù)制emp表多次,總記錄數(shù)為:7340032條。truncate表emp1,沒有做其他任何操作。查詢?cè)摫?,Oracle數(shù)據(jù)庫中該表的記錄為0條。
北亞企安數(shù)據(jù)恢復(fù)——Oracle數(shù)據(jù)恢復(fù)
注: Os:win server;Oracle數(shù)據(jù)庫版本:win_oracle_11.2.0.1_x64。
2、分析system表空間文件,找到truncate表的原始數(shù)據(jù)所在位置。
北亞企安數(shù)據(jù)恢復(fù)——Oracle數(shù)據(jù)恢復(fù)
3、解析truncate表所在的數(shù)據(jù)庫數(shù)據(jù)文件,找到truncate的數(shù)據(jù)。
4、將truncate的數(shù)據(jù)插入到數(shù)據(jù)庫中。
通過解析system01.dbf文件,找到truncate的數(shù)據(jù)所在的位置,找到被刪除的數(shù)據(jù)。解析表所在的數(shù)據(jù)文件,將truncate的數(shù)據(jù)插入到數(shù)據(jù)庫中。
在數(shù)據(jù)庫中,查找被truncate的表,發(fā)現(xiàn)數(shù)據(jù)回來了,備份數(shù)據(jù)。
北亞企安數(shù)據(jù)恢復(fù)——Oracle數(shù)據(jù)恢復(fù)
5、Exp導(dǎo)出scott用戶。
北亞企安數(shù)據(jù)恢復(fù)——Oracle數(shù)據(jù)恢復(fù)
審核編輯黃宇
-
數(shù)據(jù)恢復(fù)
+關(guān)注
關(guān)注
10文章
577瀏覽量
17480 -
數(shù)據(jù)庫
+關(guān)注
關(guān)注
7文章
3816瀏覽量
64448
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論