【資料庫資料恢復】透過恢復NDF檔案修復資料庫的資料恢復過程

北亞資料恢復發表於2023-04-27

資料庫資料恢復環境:

某公司儲存上部署SQL SERVER資料庫,資料庫中有1000多個檔案,該SQL SERVER資料庫每10天生成一個NDF檔案,資料

庫包含兩個LDF檔案。


資料庫故障&分析:

儲存裝置出現故障導致SQL SERVER資料庫異常,經過檢測發現有幾個ndf檔案大小變為0KB。

雖然儲存故障導致NDF檔案大小變為0KB,但是資料恢復工程師推測NDF檔案還存在於磁碟中。可以透過編寫資料庫掃描碎

片程式掃描資料庫碎片,透過碎片拼接來恢復NDF檔案,最後修復資料庫。


資料庫資料恢復過程:

1、將故障儲存中所有磁碟以只讀方式進行全盤備份,後續的資料分析和資料恢復操作都基於映象檔案進行,避免資料恢復

過程中可能對原始資料造成的二次破壞。

2、由北亞企安資料恢復工程師編寫資料庫碎片掃描程式掃描資料庫碎片。

3、根據NDF檔案的頁面特徵,按照檔案號,頁號拼接掃描出來的資料庫碎片,重組生成出這些0kb的NDF檔案。

4、使用北亞企安自主開發的MSSQL檔案檢測工具對所有資料檔案進行檢測,結果發現拼接出的4個NDF檔案有少量的空數

據頁,其他檔案正常。

5、進一步分析儲存中損壞的lun,發現這些空資料頁在儲存層面已經完全損壞,無法恢復,即這4個NDF檔案不能完全恢復。

6、嘗試附加資料庫,報錯 “處理資料庫的日誌時出錯,如果可能請從備份還原。如果沒有可用的備份,可能需要重新生成

日誌”。

7、修改系統表,從系統表剔除掉最後新增的LDF檔案,計算並修改校驗。嘗試進行無日誌附加資料庫,報錯:“資料庫存在

一致性錯誤”。

8、修改系統表中這4個損壞的NDF檔案的塊數量,使資料庫中記錄的檔案的塊數量和拼接出來的NDF的塊數量一致,計算並

修改校驗值。無日誌附加資料庫,仍然報錯“資料庫存在一致性錯誤”。

9、由於空資料頁都出現在這4個NDF檔案後面的十幾個塊中,截斷檔案對資料完整性影響不大。重新修改系統表和NDF檔案

,將資料庫中記錄NDF塊數量的值改至報錯的前一頁,計算並修改校驗。重新進行無日誌附加資料庫,報錯“由於資料庫沒

有完全關閉,無法重新生成日誌”。

10、修改MDF檔案中的資料庫的狀態值,讓資料庫認為是完全關閉的。重新附加資料庫,附加成功。


資料庫資料驗證:

資料庫檔案成功附加後,使用者透過資料庫中的物件進行初步查詢、驗證,經過反覆驗證後確認表中資訊正確,資料完整可用

。本次資料恢復工作完成。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31380569/viewspace-2949144/,如需轉載,請註明出處,否則將追究法律責任。

相關文章