【ASK_ORACLE】Oracle RAC報錯“ipc send timeout”的原因以及解決辦法

Attack_on_Jager發表於2021-09-01

實驗環境

搭建平臺:VMware Workstation

OS:RHEL 6.10

Grid&DB:Oracle 11.2.0.4


問題描述

例項被踢出時,檢視alert日誌發現了許多的“IPC send timeout” (IPC 傳送超時)錯誤。原因如下:

在RAC環境中,資料庫的程式(比如 lmon、lmd 和 lms )會不斷地和其他例項的程式通訊。lmd0 程式負責管理 enqueue,而 lms 程式負責管理資料塊資源並傳輸資料塊以支援 Cache Fusion。如果這些程式中的一個或多個受阻、死迴圈或異常繁忙,都可能導致“IPC send timeout”錯誤。

lmon、lms 和 lmd 程式報告“IPC send timeout”錯誤的另一個原因是網路問題或伺服器資源(CPU 和記憶體)問題。這些程式可能無法獲得 CPU 執行排程或這些程式傳送的網路資料包丟失。涉及 lmon、lmd 和 lms 程式的通訊問題導致例項被踢出。

因此此報錯通常伴隨資料庫效能問題!

alert日誌的報錯資訊如下:

......

IPC Send timeout detected.Sender: ospid 1587
Receiver: inst 6 binc 738274875 ospid 29098
......


如果某例項被踢出,除了alert日誌中的“IPC Send timeout detected”的報錯還可能涉及到如 ora-29740 和腦裂“Waiting for clusterware split-brain resolution”。


解決辦法

這裡提供幾種方案來排查(解決方法和ora-29740的解決方案一致,詳見 http://blog.itpub.net/69992972/viewspace-2789808/):

1) 檢查網路,比如 UDP 錯誤或 IP 資料包丟失或故障錯誤
2) 檢查網路配置,確保所有節點上的所有網路配置均設定正確。例如,所有節點上 MTU 的大小必須相同,並且如果使用巨幀,交換機也能夠支援大小為 9000 的 MTU
3) 檢查伺服器是否存在 CPU 負載問題或可用記憶體不足
4) 檢查資料庫在例項被踢出之前是否正處於掛起狀態或存在嚴重的效能問題
5) 檢查 CHM (Cluster Health Monitor) 輸出,檢視伺服器是否存在 CPU 或記憶體負載問題、網路問題或者 lmd 或 lms 程式出現死迴圈
6) 使用 OSWatcher 來進行監控


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

相關文章