MSSQL資料庫資料恢復案例:ndf檔案大小變為0KB恢復資料
一、故障描述
成都某客戶,儲存損壞,資料庫崩潰。重組儲存,恢復資料庫檔案,發現有四個ndf檔案大小變為0 KB。資料庫大小約80TB。資料庫中有1223個檔案,資料庫每10天生成一個NDF檔案,每個NDF大約500GB,資料庫包含兩個LDF檔案。
二、故障分析
儲存損壞,NDF檔案大小變為0 KB,根據NDF檔案在磁碟上可能存在。可以透過編寫資料庫掃描碎片程式,掃描資料庫碎片、拼接碎片恢復NDF檔案,然後修復資料庫。
三、恢復過程
1 磁碟掃描,掃描資料庫碎片
2 拼接碎片;根據NDF檔案的頁面特徵,按照檔案號,頁號拼接碎片,重組生成出這些0kb的NDF檔案。
3 檢測資料庫檔案;使用北亞MSSQL檔案檢測工具對所有資料檔案進行檢測,結果:拼接出的4個NDF檔案有少量的空頁,其他檔案正常。
4 進一步對損壞lun進行分析,發現這些資料頁在儲存層面已經不存存在了。不能恢復這些資料頁,即這4個檔案不能完全恢復
5嘗試附加資料庫,報錯 “處理資料庫的日誌時出錯,如果可能請從備份還原。如果沒有可用的備份,可能需要重新生成日誌”。
6、無日誌附加資料庫;修改系統表,從系統表剔除掉最後新增的LDF檔案,計算並修改校驗。進行無日誌附加資料庫。報錯:資料庫存在一致性錯誤,圖一:
7 修改系統表中這4個損壞的NDF檔案的塊數量,使其和恢復出來的檔案的塊數量一致;修改系統表,將系統表記錄這4個NDF的塊數量的值改為和掃描出來的NDF檔案塊數量一致,同時更改這4個NDF檔案首頁,使得資料庫中記錄的檔案的塊數量和拼接出來的NDF的塊數量一致,計算並修改校驗值。
8 無日誌附加資料庫,報錯資料庫存在一致性錯誤,圖二
9 逐個修改系統表中這4個損壞的NDF檔案的塊數量,使其值等於報錯塊前一頁;分析報錯,由於空頁都出現在這4個NDF後面十幾個塊中,截斷檔案對資料完整性影響不大。重新修改系統表和NDF檔案,將資料庫中記錄NDF塊數量的值改至報錯的前一頁,計算並修改校驗。
10 、重新進行無日誌附加資料庫,報錯“由於資料庫沒有完全關閉,無法重新生成日誌”圖三:
11、修改MDF檔案中的資料庫的狀態值,讓資料庫認為是完全關閉的
12、重新附加資料庫,附加成功. 圖四:
四、結果
資料庫檔案成功附加後,客戶透過資料庫中的物件進行初步查詢、驗證,表中資訊基本完整,資料得到恢復。資料驗證完畢,客戶對恢復結果表示滿意。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31380569/viewspace-2214312/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【資料庫資料恢復】透過恢復NDF檔案修復資料庫的資料恢復過程資料庫資料恢復
- 資料庫資料恢復-SQL SERVER資料庫檔案大小變為“0”的資料恢復方案資料庫資料恢復SQLServer
- 【資料庫資料恢復】MongoDB資料庫檔案損壞的資料恢復案例資料庫資料恢復MongoDB
- 【資料庫資料恢復】SAP資料庫資料恢復案例資料庫資料恢復
- 【資料庫資料恢復】Sql Server資料庫資料恢復案例資料庫資料恢復SQLServer
- 資料庫資料恢復-SQL SERVER資料庫MDF (NDF)或LDF損壞如何恢復資料?資料庫資料恢復SQLServer
- 【資料庫資料恢復】EXT3檔案系統下MYSQL資料庫恢復案例資料庫資料恢復MySql
- 資料庫資料恢復—MongoDB資料庫檔案丟失,啟動報錯的資料恢復案例資料庫資料恢復MongoDB
- 【資料庫資料恢復】Oracle資料庫檔案出現壞塊報錯的資料恢復案例資料庫資料恢復Oracle
- 【資料庫資料恢復】mdb_catalog.wt檔案丟失的MongoDB資料恢復案例資料庫資料恢復MongoDB
- 【資料庫資料恢復】Oracle資料庫誤truncate table的資料恢復案例資料庫資料恢復Oracle
- 【資料庫資料恢復】linux系統下MYSQL資料庫資料恢復案例資料庫資料恢復LinuxMySql
- Vsan資料恢復—Vsan資料恢復案例資料恢復
- 【Vsan資料恢復】Vsan資料恢復案例資料恢復
- 伺服器資料恢復—透過拼接資料庫碎片恢復SqlServer資料庫資料的資料恢復案例伺服器資料恢復資料庫SQLServer
- 【伺服器資料恢復】StorNext檔案系統資料恢復案例伺服器資料恢復
- 【資料庫資料恢復】sql server資料庫連線失效的資料恢復案例資料庫資料恢復SQLServer
- 【資料庫資料恢復】SqlServer資料庫無法讀取的資料恢復案例資料庫資料恢復SQLServer
- 【資料庫資料恢復】Sql Server資料庫檔案丟失的資料恢復過程資料庫資料恢復SQLServer
- MongoDB資料庫報錯,資料庫檔案丟失資料恢復案例MongoDB資料庫資料恢復
- 伺服器資料恢復-ext3檔案系統下oracle資料庫資料恢復案例伺服器資料恢復Oracle資料庫
- 【儲存資料恢復】WAFL檔案系統下raid資料恢復案例資料恢復AI
- 【資料庫資料恢復】華為雲ECS網站伺服器mysql資料庫資料恢復案例資料庫資料恢復網站伺服器MySql
- 資料庫資料恢復—附加資料庫錯誤823的SQL Server資料恢復案例資料庫資料恢復SQLServer
- 【資料庫資料恢復】SQL Server資料庫磁碟空間不足的資料恢復案例資料庫資料恢復SQLServer
- 【資料庫資料恢復】ASM磁碟組掉線的Oracle資料庫資料恢復案例資料庫資料恢復ASMOracle
- 【伺服器資料恢復】linux ext3檔案系統下mysql資料庫資料恢復案例伺服器資料恢復LinuxMySql資料庫
- 【北亞資料恢復】MongoDB資料遷移檔案丟失的MongoDB資料恢復案例資料恢復MongoDB
- 【伺服器資料恢復】xfs檔案系統資料丟失的資料恢復案例伺服器資料恢復
- 【北亞資料恢復】sqlserver資料庫被加密的資料恢復案例分享資料恢復SQLServer資料庫加密
- 【資料庫資料恢復】ASM例項不能掛載的Oracle資料庫資料恢復案例資料庫資料恢復ASMOracle
- 【資料庫資料恢復】MongoDB資料庫服務啟動失敗的資料恢復案例資料庫資料恢復MongoDB
- 【資料庫資料恢復】斷電導致Oracle資料庫資料丟失的資料恢復案例資料庫資料恢復Oracle
- 【VSAN資料恢復】VSAN儲存資料恢復案例資料恢復
- 【伺服器資料恢復】Vsan資料恢復案例伺服器資料恢復
- 資料庫修復資料恢復資料庫資料恢復
- 寶塔資料庫恢復 mysql資料庫丟失恢復 mysql資料庫刪除庫恢復 寶塔mysql資料庫恢復資料庫MySql
- 【分散式儲存資料恢復】hbase和hive資料庫底層檔案誤刪的資料恢復案例分散式資料恢復Hive資料庫