系統突然斷電重啓導致rac節點無法啓動,crs-4000錯誤

  公司rac集羣爲雙節點oracle11g的rac,操作系統爲AIX6.1,突然斷電重啓了,再次查看集羣狀態,發現其中一個節點起不來。

  經過系統工程師檢查,發現重啓後存儲的光纖網絡有十幾秒左右的延時,於是手動啓動crs,結果保crs-4000問題。以root用戶執行./crsctl start crs仍然不行。

  懷疑是asm有問題,在grid用戶下asmcmd,結果發現連接到空實例,真是

  ASM沒有啓動,於是直接在asmcmd裏startup沒有啓動。但是半天也沒有反應,於是進入asm實例:

 sqlplus / as sysdba,直接報沒有權限連接。難道是因爲環境變量,使用export手動指定環境變量,結果和剛纔一樣,而且sqlplus / as sysasm也是同樣的錯誤。

  經過詢問,有人建議應該輸入用戶名密碼,應爲在監聽服務沒有啓動的情況下,不能直接用空用戶名密碼登陸。但是用戶名密碼有點忘了,把密碼文件備份刪除後,使用orapwd命令重建密碼文件。重建後使用sqlplus username/password as sysdba的方式登陸成功,但不能啓動。使用sqlplus username/password as sysasm的方式登陸,仍然報權限的錯誤。

    懷疑是不是共享存儲權限的問題,但經過查看,發現各共享存儲的連接情況和權限與第二個節點的情況一樣。又懷疑是不是停電導致存儲出現故障,但第二個節點一切運行正常。難道是ocr盤的問題,查找到該節點最近的OCR備份,想要restore一下,發現restore不能執行。

    又想到一個辦法,在另一個節點通過srvctl命令啓動asm,srvctl start asm -n 節點名,但仍然不能啓動,報節點1上ora.asm服務沒有啓動。通過crsctl stat res -t -init 發現,ora.crsd,ora.asm,ora.diskmon,都沒有啓動。ora.evmd狀態爲intermediate。

   經過查詢研究,認爲應該是crs沒有啓動的問題。暈了,crs沒有啓動是因爲asm沒有啓動,asm啓動不起來是因爲crs沒啓動起來!這不是造成死循環了嗎?再次用root 用戶重啓crs,這回是先關閉再重啓,結果都報錯。想要看一下crs的啓動關閉日誌,結果發現crsd.log裏只有斷電之前的日誌,根本沒有之後的任何記錄。

   最後通過查找ohasd裏的日誌(非常大量),終於在其中發現了問題。應該是網絡sqlnet.ora文件出來問題,經過排查,發現節點1的sqlnet.ora文件中有一行auth認證,好像多了一個空格,去掉空格,重啓crs,crs成功啓動。接着啓動asm,監聽,數據庫實例等等也都一切正常。

   總結,忙活了很長時間才搞定,更本原因還是對oracle rac的體系架構和啓動流程不熟悉。crs啓動的時候會通過監聽去讀取asm中的信息,而監聽sqlnet裏有一行auth的意思爲操作系統認證,讓crs通過操作系統認證方式讀取asm中信息,如果這個沒有,那當然讀取不到asm中信息也就無法啓動,同時crsd.log裏也不會有任何記錄,因爲oracle應該是通過ipc去讀寫log文件,但是sqlnet都沒有通過也就不能對日誌有任何操作。其實也可以把這一行去掉,以免下次造成同樣的問題。

   以上總結是個人愚見,不代表真實情況,可能是錯誤的,完全是根據這次事故進行的猜測!哈哈!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章