AIX系統儲存故障後的Oracle 10g RAC恢復過程

panpong發表於2016-12-17

       客戶資料庫儲存故障多日後終於修復了!一個月前客戶的資料庫突然當機,經檢測為儲存問題,這期間CRS和資料庫一直未啟動;直到今天,儲存才修復,racdb1與racdb2伺服器重啟後,通知我說儲存已經恢復正常,讓我啟動資料庫,恢復載入,以下則是恢復經過;

      環境:AIX 6.1小機,IBM儲存,Oracle 10.2.0.4+asm資料庫;

階段一:

由於racdb1伺服器重啟時出了點故障,所以我準備從先啟動的racdb2上啟動資料庫;

1)       /etc/init.crs start啟動crs,結果無任何反應;

2)       ocrcheck檢查ocr盤,報錯;估計是硬碟識別有問題;

3)       lsdev -Cc disk,檢查硬碟狀態,都正常;

4)       lsvg,檢視卷組情況,顯示有rootvg,sysvg,datavg,indvg,經確認,除rootvg外其他vg都是資料庫使用;

5)       lsvg sysvg,報錯,提示需要啟用卷組;

6)       varyonvg sysvg,成功;其他vg也同樣操作;

7)       然後,再次lsvg sysvg,lsvg -p sysvg都正常;/etc/init.crs start啟動crs和資料庫都正常;至此,以為一切順利,等racdb1起來後,再操作一遍即可;

階段二:

登入racdb1,準備啟動crs和資料庫,步驟如下:

1)       由於有racdb2的經驗,我首先檢查磁碟和vg狀態,發現磁碟狀態正常,vg需要啟用,意料之中;於是varyonvg sysvg,報錯:0516-013 varyonvg: The volume group cannot be varied on because…,並且與racdb2上不一樣;

2)       為了能啟用racdb1上的vg,嘗試varyonvg -f ,exportvg/importvg,結果都失敗;在這些嘗試中卻埋下了一個隱患;無賴之下,請教曾經配置過該伺服器的工程師,經指點,是由於在啟用vg時沒有采用concurrent模式啟用,所以單獨啟用racdb2上的vg沒有問題,但是要啟用共享的racdb1上vg則會有問題;

 

階段三:

要想將racdb2上的已經啟用的vg轉成concurrent模式,只能(可能有直接轉換的命令但不知道)是先將racdb2上vg先varyoffvg,再啟用;登陸racdb2,進行如下操作:

1)       在racdb2上,shutdown immediate 資料庫,shutdown ASM例項,再crsctl stop resources(還必須執行這步,不然varyoffvg報錯),然後varyoffvg sysvg;

2)       racdb2上,關閉所有vg後,以concurrent模式啟用vg;varyonvg -c sysvg,-c選項為設定concurrent模式;結果報錯:0516-1751 varyonvg;透過查詢原因為需要啟動AIX的高可用服務hacmp;

3)       smit clstop字元介面,先停止aix cluster;然後smit clstart啟動cluster,在字元介面中選擇racdb1與racdb2一起啟動,結果在啟動失敗;根據同事對hacmp的瞭解,也可單獨啟動,於是決定在racdb2上單獨啟動,結果成功;

4)       現在馬上以concurrent模式啟用racdb2上vg;varyonvg -c sysvg,啟用成功;lsvg sysvg檢查vg狀態,也已經正常;

 

階段四:

在racdb2上成功啟用所有vg後,現在要做的就是在racdb1上也以concurrent模式啟用vg;登陸racdb1,操作如下:

1)       首先啟動hacmp cluster服務;按照在racdb1上的啟動方法,smit clstart,結果失敗;仔細觀察smit的輸出日誌,發現error描述indvg不存在;

2)       立刻檢查racdb1上vg;lsvg,發現indvg確實不在列表中;經查發現是在先前嘗試啟用vg的過程中,執行了exportvg命令,該命令的含義為刪除本節點上的vg資訊;要想找回indvg,則需要知道indvg上至少一塊pv的名稱;在racdb2上執行lsvg -p indvg顯示indvg上的pv;

3)       importvg -y indvg vpath42,在racdb1上import找回indvg;(報錯資訊,由於indvg是concurrent模式,所以需要手動啟用);

4)       smit clstart,啟動hacmp;啟動成功後,以concurrent模式啟用racdb1上的所有vg;

 

階段五:

racdb1和racdb2上的vg都以concurrent模式啟用後,則可以啟動資料庫了;決定這次從racdb1上開始啟動;

1)       /etc/init.crs start,crs無反應;ocrcheck檢查ocr盤正常;crsctl query css votingdisk檢查表決盤也正常;crs無反應也未產生啟動日誌,也之前的vg未啟用情況相似,根據經驗有可能是ocr或votingdisk盤的許可權或屬組問題;

2)       ls /dev/r*後發現,所有盤的屬組都是root:system;根據oracle安裝文件要求,

#OCR盤

           root:oinstall:0640

#voting disk盤

           oracle:oinstall:0640

#ASM盤

           oracle:dba:0660

按要求修改後,重新啟動crs,全部正常;

3)       racdb2上也有同樣問題,依照racdb1上修改後也全部恢復正常;

至此,客戶資料全部恢復正常!

最後:

以root使用者身份,執行smitty chvg命令,設定每個節點所擁有的卷組在系統啟動時自動被啟用。

# smitty chvg

Change a Volume Group

Type or select values in entry fields.

Press Enter AFTER making all desired changes.

[Entry Fields]

* VOLUME GROUP name datavg

* Activate volume group AUTOMATICALLY yes +

at system restart?

* A QUORUM of disks required to keep the volume no +

group on-line ?

Convert this VG to Concurrent Capable?YES+

Change to big VG format? no +

LTG Size in kbytes 128 +

Set hotspare characteristics n +

Set synchronization characteristics of stale n +

partitions

 

總結:

      1.vg為RAC ASM使用時,需要以concurrent模式啟用所有節點的共享vg;

      2.AIX下,要以concurrent模式啟用vg時,必須先啟動HACMP;

      3.RAC環境下,啟用所有vg後,最好檢查一下將要載入到ASM中的LV的許可權;

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16976507/viewspace-2130856/,如需轉載,請註明出處,否則將追究法律責任。

相關文章