Oracle數(shù)據(jù)庫(kù)故障&分析:
北京某單位Oracle 11g R2數(shù)據(jù)庫(kù)誤執(zhí)行truncate table CM_CHECK_ITEM_HIS,表數(shù)據(jù)丟失,查詢?cè)摫頃r(shí)報(bào)錯(cuò)。數(shù)據(jù)庫(kù)備份無(wú)法使用,表數(shù)據(jù)無(wú)法查詢。
Oracle數(shù)據(jù)庫(kù)Truncate數(shù)據(jù)的機(jī)理:執(zhí)行Truncate命令后,ORACLE數(shù)據(jù)庫(kù)會(huì)在數(shù)據(jù)字典和SegmentHeader中更新表的DataObjectID,但是不會(huì)修改實(shí)際數(shù)據(jù)部分的塊。Truncate數(shù)據(jù)會(huì)導(dǎo)致數(shù)據(jù)字典和SegmentHeader的DATA_OBJECT_ID與后續(xù)的數(shù)據(jù)塊中的不一致,ORACLE服務(wù)進(jìn)程在讀取全表數(shù)據(jù)時(shí)就不會(huì)讀取到已經(jīng)被TRUNCATE的記錄,實(shí)際數(shù)據(jù)其實(shí)并沒(méi)有被覆蓋。
Oracle數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)過(guò)程:
為了保護(hù)用戶隱私和數(shù)據(jù)安全,我們沒(méi)有將恢復(fù)該oracle數(shù)據(jù)庫(kù)數(shù)據(jù)的過(guò)程演示出來(lái),北亞企安數(shù)據(jù)恢復(fù)工程師還原了和該案例相同的oracle故障環(huán)境,用來(lái)演示如何恢復(fù)Oracle數(shù)據(jù)庫(kù)Truncate數(shù)據(jù)。
1、通過(guò)Scott用戶創(chuàng)建表emp1,連續(xù)復(fù)制emp表多次,總記錄數(shù)為7340032條。truncate表emp1,之后沒(méi)有進(jìn)行任何增刪改的操作。經(jīng)過(guò)查詢,Oracle數(shù)據(jù)庫(kù)中表emp1的記錄為0條。
北亞企安數(shù)據(jù)恢復(fù)——Oracle數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)
2、分析system表空間文件,找到truncate表(表emp1)的原始數(shù)據(jù)所在的位置。
北亞企安數(shù)據(jù)恢復(fù)——Oracle數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)
3、解析表emp1所在的數(shù)據(jù)文件,找到truncate的數(shù)據(jù)。
4、將truncate的數(shù)據(jù)插入到數(shù)據(jù)庫(kù)中。
Oracle數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)結(jié)果:
解析system01.dbf文件,找到truncate的數(shù)據(jù)所在的位置,找到被刪除的數(shù)據(jù)。解析truncate表所在的數(shù)據(jù)文件,將truncate的數(shù)據(jù)插入到數(shù)據(jù)庫(kù)中。
這時(shí)在oracle數(shù)據(jù)庫(kù)中查找被truncate的表,發(fā)現(xiàn)數(shù)據(jù)已經(jīng)回來(lái)了,備份數(shù)據(jù)。
北亞企安數(shù)據(jù)恢復(fù)——Oracle數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)
Exp導(dǎo)出scott用戶。
北亞企安數(shù)據(jù)恢復(fù)——Oracle數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)
審核編輯 黃宇
-
數(shù)據(jù)恢復(fù)
+關(guān)注
關(guān)注
10文章
552瀏覽量
17397 -
數(shù)據(jù)庫(kù)
+關(guān)注
關(guān)注
7文章
3767瀏覽量
64279
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論