數(shù)據(jù)庫(kù)故障&分析:
SQL server數(shù)據(jù)庫(kù)數(shù)據(jù)無(wú)法讀取。
經(jīng)過(guò)初檢,發(fā)現(xiàn)SQL server數(shù)據(jù)庫(kù)文件無(wú)法被讀取的原因是因?yàn)榈讓覨ile Record被截?cái)酁?,無(wú)法找到文件開(kāi)頭,數(shù)據(jù)表結(jié)構(gòu)損壞。鏡像文件的前面幾十M空間和中間一部分空間被覆蓋掉,系統(tǒng)表?yè)p壞,無(wú)法讀取。考慮用自動(dòng)備份文件來(lái)提取表結(jié)構(gòu)。
日志中的操作記錄:
北亞企安數(shù)據(jù)恢復(fù)——SQL Server數(shù)據(jù)恢復(fù)
由于系統(tǒng)表?yè)p壞,有大量數(shù)據(jù)表的結(jié)構(gòu)無(wú)法確定,只能依靠數(shù)據(jù)恢復(fù)工程師的技術(shù)和經(jīng)驗(yàn)嘗試進(jìn)行恢復(fù)。
經(jīng)過(guò)初檢的結(jié)果,北亞企安數(shù)據(jù)恢復(fù)工程師團(tuán)隊(duì)最終敲定數(shù)據(jù)恢復(fù)方案:
1、備份數(shù)據(jù)。
2、基于備份文件分析舊SQL server數(shù)據(jù)庫(kù)底層數(shù)據(jù)。
3、從舊SQL server數(shù)據(jù)庫(kù)中尋找數(shù)據(jù)表的結(jié)構(gòu)。
4、從日志中提取一部分?jǐn)?shù)據(jù)表的結(jié)構(gòu)。
5、從日志和殘留數(shù)據(jù)中提取完好的數(shù)據(jù)。
6、根據(jù)日志恢復(fù)對(duì)應(yīng)的數(shù)據(jù),檢查數(shù)據(jù)是否正確。
7、數(shù)據(jù)核對(duì)沒(méi)有問(wèn)題后恢復(fù)出所有數(shù)據(jù)。
數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)過(guò)程:
1、將涉及到的所有硬盤(pán)交由硬件工程師進(jìn)行物理故障檢測(cè),經(jīng)過(guò)檢測(cè)沒(méi)有發(fā)現(xiàn)有硬盤(pán)存在物理故障。將每塊硬盤(pán)以只讀方式做全盤(pán)鏡像,后續(xù)的數(shù)據(jù)分析和數(shù)據(jù)恢復(fù)工作都基于鏡像文件進(jìn)行,避免對(duì)原始磁盤(pán)數(shù)據(jù)造成二次破壞。
對(duì)硬盤(pán)做鏡像:
北亞企安數(shù)據(jù)恢復(fù)——SQL Server數(shù)據(jù)恢復(fù)
2、基于鏡像文件分析硬盤(pán)底層數(shù)據(jù),發(fā)現(xiàn)底層殘留許多以前SQL server數(shù)據(jù)庫(kù)的日志和備份文件。經(jīng)過(guò)查看分析,發(fā)現(xiàn)日志中有很多包括插入語(yǔ)句的操作記錄。在備份文件中發(fā)現(xiàn)建表語(yǔ)句和一部分舊數(shù)據(jù)。
3、北亞企安數(shù)據(jù)恢復(fù)工程師編寫(xiě)提取SQL server數(shù)據(jù)庫(kù)相關(guān)數(shù)據(jù)的小程序,掃描硬盤(pán)中所有存在的SQL server數(shù)據(jù)庫(kù)殘留數(shù)據(jù)并進(jìn)行提取。
4、分析掃描到的所有日志文件,發(fā)現(xiàn)日志文件中的數(shù)據(jù)記錄都有固定的開(kāi)頭和結(jié)尾,每條數(shù)據(jù)在固定的位置都有object ID號(hào)。在接下來(lái)的掃描中,繼續(xù)尋找有同樣object Id的數(shù)據(jù)記錄,發(fā)現(xiàn)這些數(shù)據(jù)記錄結(jié)構(gòu)相同,由此可以判斷這是完好的數(shù)據(jù),可以提取。
5、分析掃描到的備份文件,發(fā)現(xiàn)可以通過(guò)提取其中的建表語(yǔ)句來(lái)得到一部分的表結(jié)構(gòu)。對(duì)于剩余的表結(jié)構(gòu),因?yàn)榻財(cái)酁?的部分剛好在系統(tǒng)表,所以沒(méi)有辦法提取,只能根據(jù)從日志中提取出來(lái)的數(shù)據(jù)猜測(cè)表結(jié)構(gòu)和數(shù)據(jù)類(lèi)型。
6、根據(jù)前面分析的結(jié)果,北亞企安數(shù)據(jù)恢復(fù)工程師編寫(xiě)程序從備份文件中提取建表語(yǔ)句,根據(jù)建表語(yǔ)句分析表結(jié)構(gòu)與各種數(shù)據(jù)的類(lèi)型。在殘留的系統(tǒng)表中尋找22H、07H、05H表,根據(jù)這些建立表與OBJECT_ID的對(duì)應(yīng)關(guān)系。
7、北亞企安數(shù)據(jù)恢復(fù)工程師編寫(xiě)程序提取日志中的記錄,根據(jù)object ID來(lái)對(duì)應(yīng)數(shù)據(jù)和表,并將數(shù)據(jù)插入到新表中。
8、完成上述的所有操作后對(duì)數(shù)據(jù)進(jìn)行驗(yàn)證,經(jīng)過(guò)驗(yàn)證確認(rèn)恢復(fù)出來(lái)的新表與用工具觀察到的數(shù)據(jù)基本一致。本次數(shù)據(jù)恢復(fù)工作完成。
審核編輯:湯梓紅
-
Server
+關(guān)注
關(guān)注
0文章
94瀏覽量
24391 -
數(shù)據(jù)恢復(fù)
+關(guān)注
關(guān)注
10文章
624瀏覽量
17911 -
數(shù)據(jù)庫(kù)
+關(guān)注
關(guān)注
7文章
3875瀏覽量
65443
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)——MongoDB數(shù)據(jù)庫(kù)文件拷貝后服務(wù)無(wú)法啟動(dòng)的數(shù)據(jù)恢復(fù)

數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—SQL Server附加數(shù)據(jù)庫(kù)提示“錯(cuò)誤 823”的數(shù)據(jù)恢復(fù)案例

Devart: dbForge Compare Bundle for SQL Server—比較SQL數(shù)據(jù)庫(kù)最簡(jiǎn)單、最準(zhǔn)確的方法
SqlServer數(shù)據(jù)恢復(fù)—SqlServer數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)案例

Sybase數(shù)據(jù)恢復(fù)—Sybase數(shù)據(jù)庫(kù)無(wú)法啟動(dòng)怎么恢復(fù)數(shù)據(jù)?

數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—通過(guò)拼接數(shù)據(jù)庫(kù)碎片恢復(fù)SQLserver數(shù)據(jù)庫(kù)

數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—Oracle ASM實(shí)例無(wú)法掛載的數(shù)據(jù)恢復(fù)案例

Oracle數(shù)據(jù)恢復(fù)—異常斷電后Oracle數(shù)據(jù)庫(kù)啟庫(kù)報(bào)錯(cuò)的數(shù)據(jù)恢復(fù)案例

數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—Oracle數(shù)據(jù)庫(kù)文件system01.dbf損壞的數(shù)據(jù)恢復(fù)案例

數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—SQL Server數(shù)據(jù)庫(kù)出現(xiàn)823錯(cuò)誤的數(shù)據(jù)恢復(fù)案例

數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—SqlServer數(shù)據(jù)庫(kù)底層File Record被截?cái)酁?的數(shù)據(jù)恢復(fù)案例

數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—SQL Server數(shù)據(jù)庫(kù)所在分區(qū)空間不足報(bào)錯(cuò)的數(shù)據(jù)恢復(fù)案例
數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—數(shù)據(jù)庫(kù)所在分區(qū)空間不足導(dǎo)致sqlserver故障的數(shù)據(jù)恢復(fù)案例

數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—raid5陣列上層Sql Server數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)案例

評(píng)論