您好,登錄后才能下訂單哦!
本案例詳細介紹了服務器存儲數據庫恢復的過程,包括RAID重組和數據庫數據的修復與驗證。
背景介紹:
S5020 光纖存儲。存儲上一共16塊FC硬盤,單盤容量600G。存儲前面板10號和13號硬盤亮故障燈,存儲映射到redhat上的卷掛載不上,業務崩潰。
開始工作:
通過storage manager連接到存儲查看當前存儲狀態,存儲報告邏輯卷狀態失敗,再查看物理磁盤狀態,發現6號盤報告“警告”,10號和13號盤報告“失敗”,通過storage manager將當前存儲的完整日志狀態備份下來,解析備份出來的存儲日志獲得了關于邏輯卷結構的部分信息。
圖一:
將16塊FC盤粘貼標簽,按照原始槽位號登記后從存儲中移除,使用FC盤鏡像設備“R510+SUN3510”對16塊FC盤進行粗略測試,結果發現16塊盤均能正常識別,分別檢測16塊盤的SMART狀態,結果6號盤的SMART狀態為“警告”狀態和在IBM storage manager中報告一致。
在windows環境下首先將設備識別出來的FC盤在磁盤管理器中標記為脫機狀態,從而為原始磁盤提供了一個寫保護功能,然后使用軟件對原始磁盤進行扇區級別鏡像操作,將原始磁盤中的所有物理扇區鏡像到邏輯磁盤并以文件形式保存。在鏡像過程中發現6號磁盤的鏡像速度很慢,結合先前對硬盤SMART狀態檢測時發現的問題綜合判斷,6號盤應該存在大量損壞以及不穩定扇區,導致一般應用軟件無法對其進行操作。
使用壞道硬盤鏡像設備對6號硬盤進行壞道鏡像操作,在鏡像過程中同時觀察鏡像的速度和穩定性,發現6號盤的壞道并不多,但是存在大量的讀取響應時間長等不穩定扇區,于是調整6號盤的拷貝策略,將遇到壞道跳過扇區數和響應等待時間等參數均作一些修改。繼續對6號盤進行鏡像操作。同時觀察剩余盤鏡像的情況。
經過鏡像操作后,磁盤已經全部鏡像完成,查看日志,發現在storage manager和硬盤SMART狀態中均沒有報錯的1號盤也存在壞道,10號和13號盤均存在大量不規律的壞道分布,根據壞道列表使用軟件定位到目標鏡像文件分析發現,ext3文件系統的一些關鍵源數據信息有的已經被壞道所破壞,只能等待6號盤鏡像完畢后,通過同一條帶進行xor以及根據文件系統上下文關系的方式手動修復被損壞的文件系統。
壞道鏡像設備報告6號盤鏡像完成,但是先前為了最大限度做出有效扇區以及為了保護磁頭設置的拷貝策略會自動跳過一些不穩定扇區,所以現在的鏡像是不完整的,于是調整拷貝策略,繼續鏡像被跳過的扇區,6號盤所有扇區全部鏡像完畢。
得到了所有硬盤的物理扇區鏡像,在平臺下使用軟件將所有鏡像文件全部展開,根據我們對ext3文件系統的逆向以及日志文件的分析,得到了16塊FC盤在存儲中的盤序,RAID的塊大小,RAID的校驗走向和方式等信息,于是嘗試通過軟件的方式虛擬重組RAID,RAID搭建完成后進一步解析ext3文件系統,通過和用戶溝通提取出了一些oracle的dmp文件,用戶嘗試進行恢復。
在dmp恢復的過程中,數據庫報告為imp-0008錯誤,通過仔細分析導入dmp文件的日志文件,發現恢復的dmp文件存在問題而導致dmp導入數據失敗。立刻重新分析raid結構,以及進一步確定ext3文件系統被破壞的程度,又經過數小時的工作,重新恢復dmp文件和dbf原始庫文件,將恢復出來的dmp文件移交給用戶進行數據導入測試,結果測試順利沒有發現問題,說明這次的數據恢復是成功的,接著對恢復出來的dbf原始庫文件進行校驗檢測,所有文件均能通過測試。
數據庫恢復流程
1.拷貝數據庫文件到原數據庫服務器,路徑為/home/oracle/tmp/syntong.
作為備份。在根目錄下創建了一個oradata文件夾,并把備份的整個syntong文件夾拷貝到oradata目錄下。然后更改oradata文件夾及其所有文件的屬組和權限。
2.備份原數據庫環境,包括ORACLE_HOME下product文件夾下的相關文件。配置監聽,使用原機中的splplus連接到數據庫。嘗試啟動數據庫到nomount狀態。進行基本狀態查詢后,了解到環境和參數文件沒有問題。 嘗試啟動數據庫到mount狀態,進行狀態查詢沒有問題。啟動數據庫到open狀態。出現報錯:
圖二:
3.經過進一步的檢測和分析,判斷此故障為控制文件和數據文件信息不一致,這是一類因斷電或突然關機等引起的常見故障。
4.對數據庫文件進行逐個檢測,檢測到所有數據文件沒有物理損毀。
5.在mount狀態下,對控制文件進行備份,alter database backup controlfile to trace as ' /backup/controlfile';對備份的控制文件進行查看修改,取得其中的重建控制文件命令。把這些命令復制到一個新建腳本文件controlfile.sql中。
6.關閉數據庫,刪除/oradata/syntong/下的3個控制文件。 啟動數據庫到nomount狀態,執行controlfile.sql 腳本。
圖三:
7.重建控制文件完成后,直接啟動數據庫,報錯,需要進一步處理。
圖四:
然后執行恢復命令:
圖五:
做介質恢復,直到返回報告,恢復完成。
8.嘗試open數據庫。
SQL> alter database open resetlogs;
9.數據庫啟動成功。把原來temp表空間的數據文件加入到對應的temp表空間中。
10.對數據庫進行各種常規檢查,沒有任何錯誤。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。