0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

Frombyte ? 來(lái)源:Frombyte ? 作者:Frombyte ? 2024-10-31 13:21 ? 次閱讀

數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)環(huán)境&故障:
一個(gè)運(yùn)行在存儲(chǔ)上的SQLServer數(shù)據(jù)庫(kù),有1000多個(gè)文件,大小幾十TB。數(shù)據(jù)庫(kù)每10天生成一個(gè)NDF文件,每個(gè)NDF幾百GB大小。數(shù)據(jù)庫(kù)包含兩個(gè)LDF文件。
存儲(chǔ)損壞,數(shù)據(jù)庫(kù)不可用。管理員試圖恢復(fù)數(shù)據(jù)庫(kù),發(fā)現(xiàn)有數(shù)個(gè)ndf文件大小變?yōu)?KB。
雖然NDF文件大小變?yōu)?KB,但是NDF文件在磁盤上還可能存在??梢試L試通過(guò)掃描&拼接數(shù)據(jù)庫(kù)碎片來(lái)恢復(fù)NDF文件,然后修復(fù)數(shù)據(jù)庫(kù)。

數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)過(guò)程:
1、將存儲(chǔ)上所有磁盤標(biāo)記后取出,經(jīng)過(guò)硬件工程師檢測(cè)沒(méi)有發(fā)現(xiàn)有硬盤存在硬件故障,都可以正常讀取。以只讀方式將所有磁盤進(jìn)行扇區(qū)級(jí)全盤鏡像。鏡像完成后將所有磁盤按照原樣還原到原存儲(chǔ)中。后續(xù)的數(shù)據(jù)分析和數(shù)據(jù)恢復(fù)操作都基于鏡像文件進(jìn)行,避免對(duì)原始數(shù)據(jù)造成二次破壞。
2、北亞企安數(shù)據(jù)恢復(fù)工程師編寫(xiě)數(shù)據(jù)庫(kù)碎片掃描程序掃描數(shù)據(jù)庫(kù)碎片。根據(jù)NDF文件的頁(yè)面特征,按照文件號(hào)和頁(yè)號(hào)拼接碎片,重組生成那些大小變?yōu)?kb的NDF文件。
3、使用SQLServer文件檢測(cè)工具檢測(cè)所有數(shù)據(jù)文件,結(jié)果發(fā)現(xiàn)拼接出的數(shù)個(gè)NDF文件有少量的空頁(yè),其他文件正常。
4、進(jìn)一步分析發(fā)現(xiàn)數(shù)據(jù)頁(yè)在存儲(chǔ)層面已經(jīng)不存在了,這些數(shù)據(jù)頁(yè)無(wú)法恢復(fù),即這幾個(gè)NDF文件無(wú)法完整恢復(fù)。
5、嘗試附加數(shù)據(jù)庫(kù),報(bào)錯(cuò) “處理數(shù)據(jù)庫(kù)的日志時(shí)出錯(cuò),如果可能請(qǐng)從備份還原。如果沒(méi)有可用的備份,可能需要重新生成日志?!?br /> 6、修改系統(tǒng)表,從系統(tǒng)表剔除掉最后添加的LDF文件,計(jì)算并修改校驗(yàn)。嘗試進(jìn)行無(wú)日志附加數(shù)據(jù)庫(kù),報(bào)錯(cuò):“數(shù)據(jù)庫(kù)存在一致性錯(cuò)誤。”

wKgaoWcjE32AbQdWAAJD_hojvJc119.png北亞企安數(shù)據(jù)恢復(fù)—SQLServer數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)



7、修改系統(tǒng)表中記錄這幾個(gè)損壞的NDF文件的塊數(shù)量的值,改為和拼接出來(lái)的NDF文件塊的數(shù)量一致,更改這4個(gè)NDF文件首頁(yè),計(jì)算并修改校驗(yàn)值。
8、無(wú)日志附加數(shù)據(jù)庫(kù),仍然報(bào)錯(cuò)“數(shù)據(jù)庫(kù)存在一致性錯(cuò)誤?!?br /> 9、由于空頁(yè)都出現(xiàn)在這幾個(gè)NDF文件后面的十幾個(gè)塊中,截?cái)辔募?duì)數(shù)據(jù)完整性影響不大。重新修改系統(tǒng)表和NDF文件,將數(shù)據(jù)庫(kù)中記錄NDF文件的塊數(shù)量的值改為等于報(bào)錯(cuò)的塊前一頁(yè),計(jì)算并修改校驗(yàn)。
10、重新進(jìn)行無(wú)日志附加數(shù)據(jù)庫(kù),報(bào)錯(cuò)“由于數(shù)據(jù)庫(kù)沒(méi)有完全關(guān)閉,無(wú)法重新生成日志。”

poYBAGM1Ey2AboEdAAE1URGGv-c292.png北亞企安數(shù)據(jù)恢復(fù)—SQLServer數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)



11、修改MDF文件中的數(shù)據(jù)庫(kù)的狀態(tài)值,讓數(shù)據(jù)庫(kù)認(rèn)為是完全關(guān)閉的。
12、重新附加數(shù)據(jù)庫(kù),附加成功。

wKgZoWcjE5mAPCmpAAG8-MZl5WM510.png北亞企安數(shù)據(jù)恢復(fù)—SQLServer數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)


數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)結(jié)果:
數(shù)據(jù)庫(kù)文件成功附加后,由用戶方通過(guò)數(shù)據(jù)庫(kù)中的對(duì)象進(jìn)行查詢&驗(yàn)證,經(jīng)過(guò)查詢驗(yàn)證,確定表中信息基本完整,數(shù)據(jù)恢復(fù)完整。用戶方認(rèn)可數(shù)據(jù)恢復(fù)結(jié)果。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

    Mysql數(shù)據(jù)庫(kù)故障: Mysql數(shù)據(jù)庫(kù)表記錄丟失。 Mysql數(shù)據(jù)庫(kù)故障表現(xiàn): 1、Mysql數(shù)據(jù)庫(kù)表中無(wú)任何數(shù)據(jù)或只有部分
    的頭像 發(fā)表于 12-16 11:05 ?151次閱讀
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>—Mysql<b class='flag-5'>數(shù)據(jù)庫(kù)</b>表記錄丟失的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>流程

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—MYSQL數(shù)據(jù)庫(kù)ibdata1文件損壞的數(shù)據(jù)恢復(fù)案例

    mysql數(shù)據(jù)庫(kù)故障: mysql數(shù)據(jù)庫(kù)文件ibdata1、MYI、MYD損壞。 故障表現(xiàn):1、數(shù)據(jù)庫(kù)無(wú)法進(jìn)行查詢等操作;2、使用mysqlcheck和myisamchk無(wú)法修復(fù)數(shù)據(jù)庫(kù)
    的頭像 發(fā)表于 12-09 11:05 ?154次閱讀

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

    Oracle數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)環(huán)境&故障: Oracle ASM磁盤組由4塊磁盤組成。Oracle ASM磁盤組掉線 ,ASM實(shí)例不能mount。 Oracle數(shù)據(jù)庫(kù)故障分析&
    的頭像 發(fā)表于 10-28 11:26 ?162次閱讀
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>—Oracle ASM實(shí)例無(wú)法掛載的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>案例

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

    Oracle數(shù)據(jù)庫(kù)故障: 機(jī)房異常斷電后,Oracle數(shù)據(jù)庫(kù)庫(kù)報(bào)錯(cuò):“system01.dbf需要更多的恢復(fù)來(lái)保持一致性,數(shù)據(jù)庫(kù)無(wú)法打開(kāi)
    的頭像 發(fā)表于 09-30 13:31 ?305次閱讀
    Oracle<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>—異常斷電后Oracle<b class='flag-5'>數(shù)據(jù)庫(kù)</b>啟<b class='flag-5'>庫(kù)</b>報(bào)錯(cuò)的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>案例

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

    打開(kāi)oracle數(shù)據(jù)庫(kù)報(bào)錯(cuò)“system01.dbf需要更多的恢復(fù)來(lái)保持一致性,數(shù)據(jù)庫(kù)無(wú)法打開(kāi)”。
    的頭像 發(fā)表于 09-21 14:25 ?355次閱讀
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>—Oracle<b class='flag-5'>數(shù)據(jù)庫(kù)</b>文件system01.dbf損壞的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>案例

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

    SQL Server數(shù)據(jù)庫(kù)故障: SQL Server附加數(shù)據(jù)庫(kù)出現(xiàn)錯(cuò)誤823,附加數(shù)據(jù)庫(kù)失敗。數(shù)據(jù)庫(kù)沒(méi)有備份,無(wú)法通過(guò)備份
    的頭像 發(fā)表于 09-20 11:46 ?350次閱讀
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>—SQL Server<b class='flag-5'>數(shù)據(jù)庫(kù)</b>出現(xiàn)823錯(cuò)誤的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>案例

    Oracle數(shù)據(jù)恢復(fù)—Oracle數(shù)據(jù)庫(kù)delete刪除的數(shù)據(jù)恢復(fù)方法

    刪除Oracle數(shù)據(jù)庫(kù)數(shù)據(jù)一般有以下2種方式:delete、drop或truncate。下面針對(duì)這2種刪除oracle數(shù)據(jù)庫(kù)數(shù)據(jù)的方式探討一下oracle
    的頭像 發(fā)表于 09-11 11:45 ?378次閱讀

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

    SQL Server數(shù)據(jù)庫(kù)數(shù)據(jù)無(wú)法被讀取。 經(jīng)過(guò)數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)工程師的初步檢測(cè),發(fā)現(xiàn)SQL Server
    的頭像 發(fā)表于 07-26 11:27 ?390次閱讀
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>—<b class='flag-5'>SqlServer</b><b class='flag-5'>數(shù)據(jù)庫(kù)</b>底層File Record被截?cái)酁?的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>案例

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

    Server數(shù)據(jù)庫(kù)故障: 存放SQL Server數(shù)據(jù)庫(kù)的D盤分區(qū)容量不足,管理員在E盤中生成了一個(gè).ndf的文件并且將數(shù)據(jù)庫(kù)路徑指向E盤繼續(xù)使用。數(shù)據(jù)庫(kù)繼續(xù)運(yùn)行一段時(shí)間后出現(xiàn)故障
    的頭像 發(fā)表于 07-10 13:54 ?496次閱讀

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

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)環(huán)境: 某品牌r520服務(wù)器,服務(wù)器中有7塊SAS硬盤,這7塊硬盤組建了一組2盤raid1陣列和一組5盤raid5陣列,raid1陣列存儲(chǔ)空間安裝操作系統(tǒng),raid5陣列存儲(chǔ)空間存放
    的頭像 發(fā)表于 05-22 13:16 ?463次閱讀
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>—<b class='flag-5'>數(shù)據(jù)庫(kù)</b>所在分區(qū)空間不足導(dǎo)致<b class='flag-5'>sqlserver</b>故障的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>案例

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

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)環(huán)境: 5塊硬盤組建一組RAID5陣列,劃分LUN供windows系統(tǒng)服務(wù)器使用。windows系統(tǒng)服務(wù)器內(nèi)運(yùn)行了Sql Server數(shù)據(jù)庫(kù),存儲(chǔ)空間在操作系統(tǒng)層面劃分
    的頭像 發(fā)表于 05-08 11:43 ?512次閱讀
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>—raid5陣列上層Sql Server<b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>案例

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—ndf文件大小變?yōu)?KB的數(shù)據(jù)恢復(fù)案例

    存儲(chǔ)設(shè)備損壞導(dǎo)致存儲(chǔ)中SQL Server數(shù)據(jù)庫(kù)崩潰。對(duì)數(shù)據(jù)庫(kù)文件進(jìn)行恢復(fù)后,用戶發(fā)現(xiàn)有4個(gè)ndf文件的大小變?yōu)?KB。該SQL Server數(shù)據(jù)庫(kù)每10天生成一個(gè)大小相同的NDF文件
    的頭像 發(fā)表于 05-07 11:19 ?421次閱讀

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—Sql Server數(shù)據(jù)庫(kù)文件丟失的數(shù)據(jù)恢復(fù)案例

    服務(wù)器數(shù)據(jù)恢復(fù)環(huán)境: 一臺(tái)安裝windows server操作系統(tǒng)的服務(wù)器。一組由8塊硬盤組建的RAID5,劃分LUN供這臺(tái)服務(wù)器使用。 在windows服務(wù)器內(nèi)裝有SqlServer數(shù)據(jù)
    的頭像 發(fā)表于 04-11 15:38 ?893次閱讀
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>—Sql Server<b class='flag-5'>數(shù)據(jù)庫(kù)</b>文件丟失的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>案例

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

    oracle數(shù)據(jù)庫(kù)ASM磁盤組掉線,ASM實(shí)例不能掛載。數(shù)據(jù)庫(kù)管理員嘗試修復(fù)數(shù)據(jù)庫(kù),但是沒(méi)有成功。
    的頭像 發(fā)表于 02-01 17:39 ?524次閱讀
    【<b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>】Oracle<b class='flag-5'>數(shù)據(jù)庫(kù)</b>ASM實(shí)例無(wú)法掛載的<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>恢復(fù)</b>案例