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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

數據庫數據恢復—SqlServer數據庫底層File Record被截斷為0的數據恢復案例

Frombyte ? 來源:Frombyte ? 作者:Frombyte ? 2024-07-26 11:27 ? 次閱讀

SQL Server數據庫故障&分析&恢復方案:
SQL Server數據庫的數據無法被讀取。
經過數據庫數據恢復工程師的初步檢測,發(fā)現SQL Server數據庫文件無法被讀取的原因是底層File Record被截斷為0,無法找到文件開頭,而且數據表結構也已經損壞。鏡像文件的前幾十M和中間一部分空間被覆蓋,系統(tǒng)表損壞,所以無法讀取。
日志中的操作記錄:

pYYBAGSRTBOAJcT3AATg2PM85Ok126.png

北亞企安數據恢復—SqlServer數據恢復



由于系統(tǒng)表損壞,大量數據表的結構無法確定,只能靠僅有線索和數據恢復工程師的技術&經驗來恢復數據庫數據。
經過北亞企安數據恢復工程師團隊的會診,最終敲定針對該數據庫的數據恢復方案:
1、備份數據。對丟失數據的硬盤做全盤鏡像備份,以確保數據的安全性。
2、分析備份文件中原數據庫,從原數據庫中尋找數據表的結構。
3、從日志中提取一部分數據表的結構。
4、從日志中和殘留數據中提取完好的數據。
5、根據日志恢復對應的數據,并檢查數據的正確性。
6、核對數據沒問題后恢復所有數據。

SQL Server數據庫數據恢復過程:
1、將故障數據庫所涉及到的硬盤標記后從服務器上取下,移交給硬件工程師檢測是否存在物理故障。經過檢測沒有發(fā)現有磁盤存在物理故障。將每塊硬盤以只讀方式做扇區(qū)級全盤鏡像。鏡像完成后將所有硬盤按照原樣還原到原服務器中。
備份硬盤數據:

poYBAGSRTCSAE2z7AAMTkHxOwKw503.png

北亞企安數據恢復—SqlServer數據恢復



2、打開鏡像文件,分析硬盤底層數據,發(fā)現硬盤底層殘留著許多SQL Server數據庫的日志和備份文件。經過查看和分析,發(fā)現日志中有很多包括插入語句的數據庫操作記錄;備份文件中有建表語句和一部分舊數據。
北亞企安數據恢復工程師編寫了一個提取數據庫相關數據的小程序,掃描所有存在的數據庫殘留并提取所有數據。
3、分析掃描到的所有日志文件,發(fā)現日志文件中的數據記錄有著固定的開頭和結尾,其中每條數據都在固定的位置上有自己的OBJECT_ID號,在接下來的掃描文件中,繼續(xù)搜尋有同樣OBJECT_ID的數據記錄,發(fā)現結構相同,就可以確定這是完好的數據,并進行提取。
分析掃描到的備份文件,發(fā)現很多建表語句,根據這些語句可以獲取到一部分表結構。針對剩余的表結構,由于截斷為0的部分剛好在系統(tǒng)表,沒有辦法提取表結構,只能通過從日志中提取的數據來推理表結構和數據類型。
4、根據前面的分析,北亞企安數據恢復工程師編寫程序從備份文件中提取建表語句,根據建表語句分析出表結構與各種數據類型。
5、在殘留的系統(tǒng)表中尋找22H、07H、05H表,根據這些建立表與OBJECT_ID的對應關系。北亞企安數據恢復工程師編寫程序提取日志中的記錄,根據OBJECT_ID將數據和表進行對應,并插入到新表中。
6、經過驗證,用戶方確認恢復出來的數據完整有效,認可數據恢復結果。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 數據恢復
    +關注

    關注

    10

    文章

    538

    瀏覽量

    17341
  • 數據庫
    +關注

    關注

    7

    文章

    3752

    瀏覽量

    64229
  • SQLserver
    +關注

    關注

    0

    文章

    17

    瀏覽量

    6990
收藏 人收藏

    評論

    相關推薦

    數據庫數據恢復—通過拼接數據庫碎片恢復SQLserver數據庫

    試圖恢復數據庫,發(fā)現有數個ndf文件大小變?yōu)?b class='flag-5'>0KB。 雖然NDF文件大小變?yōu)?b class='flag-5'>0KB,但是NDF文件在磁盤上還可能存在??梢試L試通過掃描&拼接數據庫碎片來
    的頭像 發(fā)表于 10-31 13:21 ?93次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b><b class='flag-5'>恢復</b>—通過拼接<b class='flag-5'>數據庫</b>碎片<b class='flag-5'>恢復</b><b class='flag-5'>SQLserver</b><b class='flag-5'>數據庫</b>

    數據庫數據恢復—Oracle ASM實例無法掛載的數據恢復案例

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

    Oracle數據恢復—異常斷電后Oracle數據庫報錯的數據恢復案例

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

    數據庫數據恢復—Oracle數據庫文件system01.dbf損壞的數據恢復案例

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

    數據庫數據恢復—SQL Server數據庫出現823錯誤的數據恢復案例

    SQL Server數據庫故障: SQL Server附加數據庫出現錯誤823,附加數據庫失敗。數據庫沒有備份,無法通過備份恢復數據庫。
    的頭像 發(fā)表于 09-20 11:46 ?262次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b><b class='flag-5'>恢復</b>—SQL Server<b class='flag-5'>數據庫</b>出現823錯誤的<b class='flag-5'>數據</b><b class='flag-5'>恢復</b>案例

    數據庫數據恢復—SQL Server數據庫所在分區(qū)空間不足報錯的數據恢復案例

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

    數據庫數據恢復數據庫所在分區(qū)空間不足導致sqlserver故障的數據恢復案例

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

    數據庫數據恢復—raid5陣列上層Sql Server數據庫數據恢復案例

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

    數據庫數據恢復—ndf文件大小變?yōu)?b class='flag-5'>0KB的數據恢復案例

    存儲設備損壞導致存儲中SQL Server數據庫崩潰。對數據庫文件進行恢復后,用戶發(fā)現有4個ndf文件的大小變?yōu)?b class='flag-5'>0KB。該SQL Server數據庫
    的頭像 發(fā)表于 05-07 11:19 ?388次閱讀

    數據庫數據恢復—Sql Server數據庫文件丟失的數據恢復案例

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

    數據庫數據恢復】Oracle數據庫ASM實例無法掛載的數據恢復案例

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

    數據庫數據恢復—未開啟binlog的Mysql數據庫數據恢復案例

    mysql數據庫數據恢復環(huán)境: 本地服務器,windows server操作系統(tǒng) ,部署有mysql單實例,數據庫引擎類型innodb,
    的頭像 發(fā)表于 12-08 14:18 ?1054次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b><b class='flag-5'>恢復</b>—未開啟binlog的Mysql<b class='flag-5'>數據庫</b><b class='flag-5'>數據</b><b class='flag-5'>恢復</b>案例

    MySQL數據庫是如何應對故障恢復數據恢復回滾的問題呢?

    今天這篇文章,我想聊一聊MySQL數據庫是如何應對故障恢復,與數據恢復回滾的問題。一個最基本的數據庫,應當可以做到以下幾點
    的頭像 發(fā)表于 11-27 10:04 ?1065次閱讀
    MySQL<b class='flag-5'>數據庫</b>是如何應對故障<b class='flag-5'>恢復</b>與<b class='flag-5'>數據</b><b class='flag-5'>恢復</b>回滾的問題呢?

    數據庫數據恢復SQLserver數據庫加密如何恢復數據?

    一臺服務器上的SQLserver數據庫勒索病毒加密,無法正常使用。該服務器上部署有多個SQLserver數據庫,其中有2個
    的頭像 發(fā)表于 11-23 14:42 ?866次閱讀
    <b class='flag-5'>數據庫</b><b class='flag-5'>數據</b><b class='flag-5'>恢復</b>—<b class='flag-5'>SQLserver</b><b class='flag-5'>數據庫</b><b class='flag-5'>被</b>加密如何<b class='flag-5'>恢復數據</b>?