數(shù)據(jù)庫(kù)恢復(fù)環(huán)境:
操作系統(tǒng):windows server;
數(shù)據(jù)庫(kù):win_oracle_x64。
數(shù)據(jù)庫(kù)故障&分析:
oracle數(shù)據(jù)庫(kù)誤truncate table,備份無(wú)法使用。
oracle數(shù)據(jù)庫(kù)誤操作導(dǎo)致數(shù)據(jù)丟失是比較常見(jiàn)的一種故障,如果有備份只需要恢復(fù)備份數(shù)據(jù)即可,我們中心數(shù)據(jù)恢復(fù)工程師接到的case多是無(wú)備份或者備份無(wú)法使用、還原報(bào)錯(cuò)等。
首先介紹下Truncate工作原理:正常情況下oracle會(huì)通過(guò)Segment Header及數(shù)據(jù)字典對(duì)表更新Data Object ID,實(shí)際上存儲(chǔ)數(shù)據(jù)部分的塊并未被修改,如果被truncate,那么oracle在讀取全表數(shù)據(jù)時(shí)會(huì)因?yàn)閿?shù)據(jù)字典和Data Object ID與實(shí)際存儲(chǔ)的數(shù)據(jù)塊內(nèi)容不一致而不會(huì)讀取被truncate的內(nèi)容記錄。
數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)過(guò)程:
本次案例演示中,北亞數(shù)據(jù)恢復(fù)工程師構(gòu)造了一個(gè)相同環(huán)境下的類似故障。
1、用Scott用戶創(chuàng)建表emp1,連續(xù)多次復(fù)制emp表,然后truncate表emp1。此時(shí)查詢?cè)摫恚瑪?shù)據(jù)庫(kù)中該表的記錄為0條。
北亞數(shù)據(jù)恢復(fù)——oracle數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)
2、基于oracle數(shù)據(jù)庫(kù)文件底層分析system表空間文件,找到truncate表的原始數(shù)據(jù)所在的位置。
北亞數(shù)據(jù)恢復(fù)——oracle數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)
3、解析表所在的數(shù)據(jù)文件數(shù)據(jù)庫(kù),找到truncate的數(shù)據(jù)并將truncate的數(shù)據(jù)插入到數(shù)據(jù)庫(kù)中。通過(guò)解析system01.dbf文件,找到truncate的數(shù)據(jù)所在的位置,繼而找到被刪除的數(shù)據(jù)。解析表所在的數(shù)據(jù)文件,然后將truncate的數(shù)據(jù)插入到數(shù)據(jù)庫(kù)中。
4、在數(shù)據(jù)庫(kù)中查找被truncate的數(shù)據(jù),結(jié)果發(fā)現(xiàn)被truncate的數(shù)據(jù)已經(jīng)恢復(fù),備份數(shù)據(jù)。
北亞數(shù)據(jù)恢復(fù)——oracle數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)
5、Exp導(dǎo)出scott用戶。
北亞數(shù)據(jù)恢復(fù)——oracle數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)
審核編輯:湯梓紅
-
WINDOWS
+關(guān)注
關(guān)注
4文章
3573瀏覽量
89368 -
數(shù)據(jù)恢復(fù)
+關(guān)注
關(guān)注
10文章
586瀏覽量
17661 -
數(shù)據(jù)庫(kù)
+關(guān)注
關(guān)注
7文章
3851瀏覽量
64717 -
Oracle
+關(guān)注
關(guān)注
2文章
296瀏覽量
35250
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論