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


















