ORACLE RAC環境下節點自動重啟問題總結

dayong2015發表於2014-09-04
文章參考:主要來源於網路資源分享,並結合自己的ORACLE RAC環境近段時間OS節點自動重啟問題進行分析總結
首先我們對能夠導致節點重啟的CRS程式進行介紹。

1.ocssd : 它的主要功能是節點監控(Node Monitoring)和組管理(Group Management),它是CRS的核心程式之一。節點監控是指監控叢集中節點的健康狀況,監控的方法是透過網路心跳(network heartbeat)和磁碟心跳(disk heartbeat)實現的,如果叢集中的節點連續丟失磁碟心跳或網路心跳,該節點就會被從叢集中驅逐,也就是節點重啟。組管理導致的節點重啟,我們稱之為node kill escalation(只有在11gR1以及以上版本適用)。重啟需要在指定的時間(reboot time,一般為3秒)內完成。
網路心跳:ocssd.bin程式每秒鐘向叢集中的各個節點透過私網傳送網路心跳資訊,以確認各個節點是否正常。如果某個節點連續丟失網路心跳達到閥值,misscount(預設為30秒,如果存在其他叢集管理軟體則為600秒),叢集會透過表決盤進行投票,使丟失網路心跳的節點被主節點驅逐出叢集,即節點重啟。如果叢集只包含2個節點,則會出現腦裂,結果是節點號小的節點存活下來,即使是節點號小的節點存在網路問題。
磁碟心跳:ocssd.bin程式每秒鐘都會向所有表決盤(Voting File)註冊本節點的狀態資訊,這個過程叫做磁碟心跳。如果某個節點連續丟失磁碟心跳達到閥值disk timeou(一般為200秒),則該節點會自動重啟以保證叢集的一致性。另外,CRS只要求[N/2]+1個表決盤可用即可,其中N為表決盤數量,一般為奇數。
2.oclsomon:這個程式負責監控ocssd是否掛起,如果發現ocssd.bin存在效能問題,則重啟該節點。
3.oprocd:這個程式只在Linux和Unix系統,並且第三方叢集管理軟體未安裝的情況下才會出現。如果它發現節點掛起,則重啟該節點。
批註:以上所有程式都是由指令碼init.cssd產生。
一般診斷節點重啟問題是經常蒐集的資訊。
1).作業系統日誌
2)./log//cssd/ocssd.log
3).oprocd.log(/etc/oracle/oprocd/*.log.* 或 /var/opt/oracle/oprocd/*.log.*)
4)./log//cssd/oclsomon/oclsomon.log
5). Oracle OSWatcher 報告
下面結合自己的RAC環境出現節點重啟問題進行分析:
查詢節點1的oprocd.log,如下:

檢視其它的日誌資訊,沒有發現明顯的錯誤資訊,因此懷疑是ORACLE oprocd的時間引數設定不當;
下面對oprocd引數進行設定:
當我們設定diagwait引數時,需要停止所有rac節點的叢集活動,停止順序如下(如果叢集式活動的,修改diagwait有可能會損害ocr);
1.root使用者執行,停止所有節點的CRS

2.停止10.2.0.3到11.1.0.6版本的RAC中才引入的OPROCD程式(OS系統安裝的DB版本是10.2.0.4)

3.檢查是否還有CRS相關的資源在執行

4.在任意一個節點使用ROOT使用者來設定DIAGWAIT的值(按照ORACLE的推薦,一般設定為13)

檢視設定結果,如下:

5.啟動所有節點的CRS資源

6.驗證CRS是否正常執行

7.檢視oprocd程式的狀態

批註:11gR2之前版本的叢集,ORACLE建議將Diagwait設定為13。從本質上講,diagwait值在RAC環境中控制著兩件關鍵的事情:
預設情況下,叢集守護程式OPROCD的超時值為1秒和0.5秒的時間差,這意味著,如果OPROCD不能在 1.5秒內返回,系統會被重啟。設定diagwait為推薦值13會將OPROCD的預設超時時差增加到10秒(diagwait - CSS重啟時間[預設為3秒]),從而防止大量由於OPROCD沒有在定義的時間內返回而導致的'假'的節點重啟。對於繁忙的系統,1.5秒的預設值太小了。長期推薦的辦法是將OPROCD超時提高到一個更為合理的值11秒(1秒休眠時間+10秒時間差)。
當節點驅逐/重啟事件發生時,增加diagwait,我們更可能在重新啟動之前將日誌資訊重新整理到磁碟,因此,縮短尋找問題根本原因時間。
從11g第2版(11.2.0.1和更高版本)開始,這一變化不再是必要的。然而,對於之前的版本,這個改變必須在一個完整的停機時間進行,而且這個值不能透過補丁修正。因此,必須安排停機時間手動修改。鑑於已知透過設定diagwait解決的問題的數量,申請停機時間來修改它是值得的投入。請注意,因為這個值儲存在Oracle叢集登錄檔(OCR),如果您的確需要重建OCR或從一個之前的備份恢復,您可能需要重新設定diagwai。

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

相關文章