數(shù)據(jù)庫數(shù)據(jù)恢復(fù)環(huán)境&故障:
一個運(yùn)行在存儲上的SQLServer數(shù)據(jù)庫,有1000多個文件,大小幾十TB。數(shù)據(jù)庫每10天生成一個NDF文件,每個NDF幾百GB大小。數(shù)據(jù)庫包含兩個LDF文件。
存儲損壞,數(shù)據(jù)庫不可用。管理員試圖恢復(fù)數(shù)據(jù)庫,發(fā)現(xiàn)有數(shù)個ndf文件大小變?yōu)?KB。
雖然NDF文件大小變?yōu)?KB,但是NDF文件在磁盤上還可能存在。可以嘗試通過掃描&拼接數(shù)據(jù)庫碎片來恢復(fù)NDF文件,然后修復(fù)數(shù)據(jù)庫。
數(shù)據(jù)庫數(shù)據(jù)恢復(fù)過程:
1、將存儲上所有磁盤標(biāo)記后取出,經(jīng)過硬件工程師檢測沒有發(fā)現(xiàn)有硬盤存在硬件故障,都可以正常讀取。以只讀方式將所有磁盤進(jìn)行扇區(qū)級全盤鏡像。鏡像完成后將所有磁盤按照原樣還原到原存儲中。后續(xù)的數(shù)據(jù)分析和數(shù)據(jù)恢復(fù)操作都基于鏡像文件進(jìn)行,避免對原始數(shù)據(jù)造成二次破壞。
2、北亞企安數(shù)據(jù)恢復(fù)工程師編寫數(shù)據(jù)庫碎片掃描程序掃描數(shù)據(jù)庫碎片。根據(jù)NDF文件的頁面特征,按照文件號和頁號拼接碎片,重組生成那些大小變?yōu)?kb的NDF文件。
3、使用SQLServer文件檢測工具檢測所有數(shù)據(jù)文件,結(jié)果發(fā)現(xiàn)拼接出的數(shù)個NDF文件有少量的空頁,其他文件正常。
4、進(jìn)一步分析發(fā)現(xiàn)數(shù)據(jù)頁在存儲層面已經(jīng)不存在了,這些數(shù)據(jù)頁無法恢復(fù),即這幾個NDF文件無法完整恢復(fù)。
5、嘗試附加數(shù)據(jù)庫,報錯 “處理數(shù)據(jù)庫的日志時出錯,如果可能請從備份還原。如果沒有可用的備份,可能需要重新生成日志。”
6、修改系統(tǒng)表,從系統(tǒng)表剔除掉最后添加的LDF文件,計(jì)算并修改校驗(yàn)。嘗試進(jìn)行無日志附加數(shù)據(jù)庫,報錯:“數(shù)據(jù)庫存在一致性錯誤。”
北亞企安數(shù)據(jù)恢復(fù)—SQLServer數(shù)據(jù)庫數(shù)據(jù)恢復(fù)
7、修改系統(tǒng)表中記錄這幾個損壞的NDF文件的塊數(shù)量的值,改為和拼接出來的NDF文件塊的數(shù)量一致,更改這4個NDF文件首頁,計(jì)算并修改校驗(yàn)值。
8、無日志附加數(shù)據(jù)庫,仍然報錯“數(shù)據(jù)庫存在一致性錯誤。”
9、由于空頁都出現(xiàn)在這幾個NDF文件后面的十幾個塊中,截?cái)辔募?shù)據(jù)完整性影響不大。重新修改系統(tǒng)表和NDF文件,將數(shù)據(jù)庫中記錄NDF文件的塊數(shù)量的值改為等于報錯的塊前一頁,計(jì)算并修改校驗(yàn)。
10、重新進(jìn)行無日志附加數(shù)據(jù)庫,報錯“由于數(shù)據(jù)庫沒有完全關(guān)閉,無法重新生成日志。”
北亞企安數(shù)據(jù)恢復(fù)—SQLServer數(shù)據(jù)庫數(shù)據(jù)恢復(fù)
11、修改MDF文件中的數(shù)據(jù)庫的狀態(tài)值,讓數(shù)據(jù)庫認(rèn)為是完全關(guān)閉的。
12、重新附加數(shù)據(jù)庫,附加成功。
北亞企安數(shù)據(jù)恢復(fù)—SQLServer數(shù)據(jù)庫數(shù)據(jù)恢復(fù)
數(shù)據(jù)庫數(shù)據(jù)恢復(fù)結(jié)果:
數(shù)據(jù)庫文件成功附加后,由用戶方通過數(shù)據(jù)庫中的對象進(jìn)行查詢&驗(yàn)證,經(jīng)過查詢驗(yàn)證,確定表中信息基本完整,數(shù)據(jù)恢復(fù)完整。用戶方認(rèn)可數(shù)據(jù)恢復(fù)結(jié)果。
審核編輯 黃宇
-
數(shù)據(jù)恢復(fù)
+關(guān)注
關(guān)注
10文章
624瀏覽量
17911 -
數(shù)據(jù)庫
+關(guān)注
關(guān)注
7文章
3875瀏覽量
65443 -
SQLserver
+關(guān)注
關(guān)注
0文章
19瀏覽量
7091
發(fā)布評論請先 登錄
相關(guān)推薦
數(shù)據(jù)庫數(shù)據(jù)恢復(fù)——MongoDB數(shù)據(jù)庫文件拷貝后服務(wù)無法啟動的數(shù)據(jù)恢復(fù)

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

SqlServer數(shù)據(jù)恢復(fù)—SqlServer數(shù)據(jù)庫數(shù)據(jù)恢復(fù)案例

數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—Mysql數(shù)據(jù)庫表記錄丟失的數(shù)據(jù)恢復(fù)流程

數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—MYSQL數(shù)據(jù)庫ibdata1文件損壞的數(shù)據(jù)恢復(fù)案例
數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—Oracle ASM實(shí)例無法掛載的數(shù)據(jù)恢復(fù)案例

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

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

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

Oracle數(shù)據(jù)恢復(fù)—Oracle數(shù)據(jù)庫delete刪除的數(shù)據(jù)恢復(fù)方法
數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—SqlServer數(shù)據(jù)庫底層File Record被截?cái)酁?的數(shù)據(jù)恢復(fù)案例

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

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

評論