1. 程式人生 > >硬盤數據恢復+數據庫數據修復過程

硬盤數據恢復+數據庫數據修復過程

校驗 pan 嘗試 虛擬 手動 raid 遇到 需要 關閉

客戶的一臺DS5020 光纖存儲出現故障導致數據丟失,該存儲使用了16塊硬盤組成raid磁盤陣列。10號盤和13號盤掉線,6號盤警告,需要進行數據恢復。

Raid磁盤陣列故障情況:
通過IBM storage manager將當前存儲的完整日誌狀態備份下來,解析備份出來的存儲日誌獲得了關於邏輯卷結構的部分信息。將客戶服務器中所有磁盤按照固定順序排序移出槽位進行測試發現該磁盤陣列中除6號盤smart狀態為“警告”外其他硬盤均正常。

磁盤陣列數據恢復過程:
工程師首先在windows環境下把raid陣列中狀態正常的硬盤標記為脫機,然後對所有磁盤記性全盤操作,在備份過程中發現6號硬盤速度異常緩慢,初步推測原因可能是因為該盤中不穩定扇區和壞道較多導致,於是更換專業針對壞道硬盤進行鏡像的設備單獨對6號硬盤進行鏡像操作,同時將設備中遇到壞道響應、等待時間和跳過壞扇區數據進行調整。

經過鏡像操作後,在windows平臺下使用winhex鏡像的磁盤已經全部鏡像完成,查看winhex生成的日誌,發現在IBM storage manager/frombyte.com和硬盤SMART狀態中均沒有報錯的1號盤也存在壞道,10號和13號盤均存在大量不規律的壞道分布,根據壞道列表定位到目標鏡像文件分析發現該磁盤陣列中文件系統部分關鍵數據處於壞道區,於是轉為通過6號硬盤的同條帶xor手動修復。我們借助數據恢復軟件將備份出來的raid中的所有數據展開,對ext3文件系統的逆向以及日誌文件進行整理分析從而分析出raid磁盤陣列的盤序、raid塊大小,raid的校驗走向和校驗方式等必要信息。

通過分析出來的raid信息虛擬重組raid磁盤陣列並接卸ext3文件系統提取數據庫文件。在對數據庫文件的提取過程中出現報錯,數據庫報告imp-0008錯誤,數據恢復工程師重新對raid結構進行分析,再一次進行dmp文件和dbf原始庫文件進行提取,所有文件正常無報錯。

數據庫數據恢復流程
1.拷貝數據庫文件到原數據庫服務器,路徑為/home/oracle/tmp/syntong.作為備份。在根目錄下創建了一個oradata文件夾,並把備份的整個syntong文件夾拷貝到oradata目錄下。然後更改oradata文件夾及其所有文件的屬組和權限。
2.備份原數據庫環境,包括ORACLE_HOME下product文件夾下的相關文件。配置監聽,使用原機中的splplus連接到數據庫。嘗試啟動數據庫到nomount狀態。進行基本狀態查詢後,了解到環境和參數文件沒有問題。 嘗試啟動數據庫到mount狀態,進行狀態查詢沒有問題。啟動數據庫到open狀態。出現報錯:

ORA-01122: database file 1 failed verification check/frombyte.com
ORA-01110: data file 1: /oradata/syntong/system01.dbf
ORA-01207: file is more recent than control file - old control file

3.經過進一步的檢測和分析,判斷此故障為控制文件和數據文件信息不一致,這是一類因斷電或突然關機等引起的常見故障。
4.對數據庫文件進行逐個檢測,檢測到所有數據文件沒有物理損毀。
5.在mount狀態下,對控制文件進行備份,alter database backup controlfile to trace as ‘ /backup/controlfile‘;對備份的控制文件進行查看修改,取得其中的重建控制文件命令。把這些命令復制到一個新建腳本文件controlfile.sql中。
6.關閉數據庫,刪除/oradata/syntong/下的3個控制文件。 啟動數據庫到nomount狀態,執行controlfile.sql 腳本。

SQL>startup nomount/frombyte.com
SQL>@controlfile.sql

7.重建控制文件完成後,直接啟動數據庫,報錯,需要進一步處理。

SQL> alter database open;
alter database open/frombyte.com
*
ERROR at line 1:
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1: /free/oracle/oradata/orcl/system01.dbf

然後執行恢復命令:

recover database using backup controlfile until cancel;
Recovery of Online Redo Log: Thread 1 Group 1 Seq 22 Reading mem 0
Mem# 0 errs 0: /free/oracle/oradata/orcl/redo01.log
…

做介質恢復,直到返回報告,恢復完成。
8.嘗試open數據庫。

SQL> alter database open resetlogs;

9.數據庫啟動成功。把原來temp表空間的數據文件加入到對應的temp表空間中。
10.對數據庫進行各種常規檢查,沒有任何錯誤。
11.進行emp備份。全庫備份完成,沒有報錯。將應用程序連接到數據庫,進行應用層面的數據驗證。


硬盤數據恢復+數據庫數據修復過程