Raid信息丟失數據恢復及oracle數據庫恢復驗證方案
導讀:早些時候,有個客戶14塊盤的磁盤陣列出現故障,需要恢復的數據是oracle數據庫,客戶在尋求數據恢復技術支持,要求我提供詳細的數據恢復方案,以下是提供給客戶的詳細數據恢復解決方案,本方案包含Raid數據恢復和oracle數據庫的恢復驗證。希望能夠幫大家解決問題。
一、對磁盤陣列的恢復方案
磁盤陣列常見故障表現為:
A、陣列信息丟失,導致磁盤陣列在操作系統環境中查看不到;
B、陣列中多個硬盤掉線,導致陣列癱瘓;
C、人為的重新配置raid信息或Rebuild或者初始化等;
D、陣列中某塊盤掉線一段時間后,又重新上線參與盤陣工作,導致整個陣列數據部分數據正常,另一部分數據不正常。
Raid數據恢復步驟是:
1、第一步是做鏡像:對每個硬盤做個鏡像文件,存儲到另外的空間上,對原始數據盤只讀一次。如果盤陣的硬盤數量很多,單個硬盤容量很大的話,則需要很大的存儲空間來存放這些鏡像文件。這一步需要搭建的硬件環境是:準備一個空間足夠大的可用的磁盤陣列,用來存放故障陣列的所有硬盤的鏡像文件。硬盤鏡像文件就是把整個硬盤通過硬件或者軟件環境復制出跟硬盤完全一樣的文件,在以后的恢復過程中,只用這個鏡像文件去分析和重組數據,這樣就保證整個恢復過程安全性,原始硬盤數據不會有二次損壞。
2、第二步是分析底層數據:因為每個硬盤已經有了鏡像文件,對鏡像文件的分析等同于對原始數據的分析。在這一步分析中,我們可以確定出組成盤陣的硬盤數量,硬盤在磁盤陣列中的順序,RAID配置中的塊大小,數據走向等。如果有數據不新鮮的硬盤,我們也可以分析出來,在以后的重組中去掉這塊盤就可以了。底層數據分析在WINDOWS系列的文件系統相對容易,但是在UNIX系列的文件系統難度就加大,目前我們在LINUX、AIX、SOLARIS、HP-UX、SCO UNIX、FREEBSD等都有成功的案例。
3、第三步是重組數據:通過第二步地分析,得出一系列磁盤陣列參數—-硬盤數量、硬盤順序、塊大小、數據走向等,然后用D-Recovery For RAID軟件對所有硬盤進行數據重新組合,寫到另外的空間中。在這個過程中,我們需要準備的硬件環境是:準備一個空間足夠大的可用的磁盤陣列,用于把重新組合出來的數據存放在這個空間上。
4、第四步是恢復最終數據:數據重新組合出來以后,我們這一步要做的工作是把客戶最終想要的數據恢復出來。如果是WINDOWS文件系統,這一步很容易完成;如果是UNIX文件系統,我們就要把組合出來的數據盤陣掛接到相應的UNIX環境下,然后在這個環境中找出客戶想要的數據,把數據導到另外可用的空間上,以備客戶驗證數據。當然,也可以用D-Recovery For RAID軟件直接把數據導出,存放到新的存儲上。
5、第五步是驗證數據的正確性:客戶數據在第四步已經COPY出來了,有些數據是直接看不出是否正確的,就像ORACLE數據庫一樣,恢復出來的是好多個文件,單個文件是沒辦法驗證的。這就需要搭建一個ORACLE環境,把恢復出來的數據還原到ORACLE環境中,才能驗證其正確性。其它數據庫文件也是需要在相應的環境中驗證的。
磁盤陣列最典型的故障恢復:
陣列信息完好,磁盤分區也能訪問正常,但是數據就是打不開或者部分數據正常,部分數據不正常。特別是對oracle數據庫來說,必須全部的庫文件正常,數據庫才正常。
舉個案例說明:有個客戶給我們拿來3塊盤做數據恢復,客戶的對故障現象是這樣描述的:這3塊盤是配成raid5,服務器在一個月前1號盤亮黃燈,當時沒有在意,后來在前天機房停電,服務器也關閉了,當服務器再起來的時候,啟動一切正常,1號盤也正常,不亮黃燈。但是系統起來以后,發現oracle數據庫啟動不正常。別的文件在一個月前放到服務器上的大都正常,就是這個月的文件大都不正常。
經過我們的分析,發現1號盤原來亮黃燈以后就不參與到RAID5里頭工作了,2號盤和3號盤在缺1號盤的情況下繼續工作一個多月。從底層數據分析知道,1號盤數據不新鮮,當機器重啟以后,RAID卡沒有報錯,1號盤又參與RAID5數據組合,這樣不新鮮的數據盤參與數據組合,自然導致部分可用部分不可用。我們缺1號盤,用D-Recovery For RAID從2號盤和3號盤重組出客戶的數據,驗證ORACLE數據庫也全部通過。
如果是由于磁盤陣列故障導致的數據庫不正常,整個恢復過程所花費的時間根據磁盤陣列的硬盤數量和硬盤大小來決定,一般不會超過一個星期。
二、對ORACLE數據庫的恢復方案
ORALCE數據庫相關文件恢復完成以后,我們還沒辦法直接判斷恢復出來的數據庫內容是否正確,需要把ORACLE數據庫實例還原到ORACLE環境下才能驗證。這就需要搭建好ORACLE環境,然后把恢復出來的ORACLE數據庫實例在該環境下啟動數據庫,如果啟動正常,那么數據恢復就順利完成,如果數據庫啟動異常,則根據報錯信息進行下一步分析。
ORALCE出錯原因非常多,可以根據ORACLE錯誤代碼來進行分析和解決。
比如錯誤代碼為:ORA-01650:unable to extend rollback segment NAME by NUM intablespace NAME
產生原因:上述ORACLE錯誤為回滾段表空間不足引起的,這也是ORACLE數據管理員最常見的ORACLE錯誤信息。當用戶在做一個非常龐大的數據操作導致現有回滾段的不足,使可分配用的回滾段表空間已滿,無法再進行分配,就會出現上述的錯誤。
解決方式:使用“ALTER TABLESPACE tablespace_name ADD DATAFILE filename SIZE size_of_file”命令向指定的數據增加表空間,根據具體的情況可以增加一個或多個表空間。
學會上文介紹的這些解決方案,相信如果下次您遇到這些問題,就能自己輕松解決。
【編輯推薦】