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

2021-09-22 19:06:13 字數 2562 閱讀 8955

文章參考:主要**於網路資源分享,並結合自己的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).下面結合自己的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。

ORACLE rac環境配置

load balance yes 負載均衡 failover on 失敗自動切換 這個引數預設就是on,所以一般都不加的。設定本地服務命名相應的引數 load balance on 和failover on failover mode引數 來啟用客戶端負載均衡和taf功能。客戶端負載均衡並不衡量ra...

Oracle Rac集群環境下刪除歸檔日誌

歸檔日誌存放形式主要存放方式有以下方式 一 asm方式 oracle 10g oracle11g oracle 12c版本如果作業系統是aix hpux linux下,一般都會採取asm建庫方式,特別是oracle 11g和oracle12c,因為oracle已經不支援裸裝置建庫 手工建庫還是可以裸...

ORACLE RAC環境下讀取序列亂序問題

在資料庫部署了rac環境之後,偶爾會出現從oracle sequence所取出來的數是混亂的,比如第二次比第一次所取的數要小。這樣當程式的邏輯依賴於id的大小來排序時,就會產生系統混亂。其實問題是出在資料庫是個rac環境,序列是被共享的,序列預設是有快取的。假設rac上的兩個節點上序列快取設為20,...