導致實例逐出的五大問題

MOS 文檔 ID 1526186.1  轉載下來

問題 1:警報日誌顯示 ora-29740 是實例崩潰/驅逐的原因

症狀:


實例崩潰,警報日誌顯示“ORA-29740:evicted by member ...(被成員...驅逐)”錯誤。


可能的原因:
一個實例將另一個實例從 RAC 數據庫驅逐時,出現了 ORA-29740 錯誤。被驅逐的實例會在警報日誌中報告 ora-29740 錯誤。
此問題的部分原因是集羣中的通信錯誤、向控制文件發送“心跳”失敗以及其它原因。


檢查所有實例的 lmon 跟蹤文件,這對確定實例驅逐的原因代碼而言非常重要。查找包含“kjxgrrcfgchk:Initiating reconfig”的行。
這將提供一個原因代碼,如“kjxgrrcfgchk:Initiating reconfig, reason 3”。實例驅逐時發生的大多數 ora-29740 錯誤是由於原因 3(“通信故障”) 造成的。

Document 219361.1 (Troubleshooting ORA-29740 in a RAC Environment) 介紹了以下幾種可能造成原因 3的 ora-29740 錯誤原因:

a) 網絡問題。
b) 資源耗盡(CPU、I/O 等)
c) 嚴重的數據庫爭用。
d) Oracle bug。
解決方案:

1) 檢查網絡,確保無網絡錯誤,如 UDP 錯誤或 IP 數據包丟失或故障錯誤。
2) 檢查網絡配置,確保所有節點上的所有網絡配置均設置正確。
   例如,所有節點上 MTU 的大小必須相同,並且如果使用巨幀,交換機也能夠支持大小爲 9000 的 MTU。
3) 檢查服務器是否存在 CPU 負載問題或可用內存不足。
4) 檢查數據庫在實例驅逐之前是否正處於掛起狀態或存在嚴重的性能問題。
5) 檢查 CHM (Cluster Health Monitor) 輸出,以查看服務器是否存在 CPU 或內存負載問題、網絡問題或者 lmd 或 lms 進程出現死循環。CHM 輸出只能在特定平臺和版本中使用,因此請參閱 CHM 常見問題 Document 1328466.1
6) 如果 OSWatcher 尚未設置,請按照 Document 301137.1 中的說明進行設置以運行 OSWatcher。
   CHM 輸出不可用時,使用 OSWatcher 輸出將有所幫助。
 
問題 2:警報日誌在實例崩潰或驅逐前顯示“ipc send timeout”錯誤

症狀:

實例驅逐時,警報日誌顯示許多“IPC send timeout”錯誤。此消息通常伴隨數據庫性能問題。


可能的原因:


在 RAC 中,數據庫進程,例如 lmon、lmd 和 lms 會不斷地和其他實例的進程通信。lmd0 進程負責管理 enqueue,而 lms 進程負責管理數據塊資源並傳輸數據塊以支持 Cache Fusion。如果這些進程中的一個或多個受阻、死循環或異常繁忙,則可能導致“IPC send timeout(IPC 發送超時)”錯誤。


lmon、lms 和 lmd 進程報告“IPC send timeout”錯誤的另一個原因是網絡問題或服務器資源(CPU 和內存)問題。這些進程可能無法獲得 CPU 運行調度或這些進程發送的網絡數據包丟失。


涉及 lmon、lmd 和 lms 進程的通信問題導致實例驅逐。被驅逐實例的警報日誌顯示的信息類似於如下示例 


IPC Send timeout detected.Sender: ospid 1519
Receiver: inst 8 binc 997466802 ospid 23309


如果某實例被驅逐,警報日誌中的“IPC Send timeout detected(檢測到 IPC 發送超時)”通常伴隨着其它問題,如 ora-29740 和“Waiting for clusterware split-brain resolution(等待集羣件“腦裂”解決方案)”
解決方案:


此處的解決方案與問題 1 相似。


1) 檢查網絡,確保無網絡錯誤,如 UDP 錯誤或 IP 數據包丟失或故障錯誤。
2) 檢查網絡配置,確保所有節點上的所有網絡配置均設置正確。
   例如,所有節點上 MTU 的大小必須相同,並且如果使用巨幀,交換機也能夠支持大小爲 9000 的 MTU。
3) 檢查服務器是否存在 CPU 負載問題或可用內存不足。
4) 檢查數據庫在實例驅逐之前是否正處於掛起狀態或存在嚴重的性能問題。
5) 檢查 CHM (Cluster Health Monitor) 輸出,以查看服務器是否存在 CPU 或內存負載問題、網絡問題或者 lmd 或 lms 進程出現死循環。CHM 輸出只能在特定平臺和版本中使用,因此請參閱 CHM 常見問題 Document 1328466.1
6) 如果 OSWatcher 尚未設置,請按照 Document 301137.1 中的說明進行設置以運行 OSWatcher。
   CHM 輸出不可用時,使用 OSWatcher 輸出將有所幫助。
 

問題 3:在實例崩潰或驅逐前,問題實例處於掛起狀態


症狀:

在實例崩潰/驅逐前,該實例或數據庫正處於掛起狀態。當然,也可能是節點掛起。

可能的原因:

由於 lmon、lmd 和 lms 等不同進程與其它實例上對應的進程通信,因此當實例和數據庫掛起時,這些進程可能正在等待某個資源,如 latch、enqueue 或數據塊。這些等待中的進程得不到網絡響應,或無法通過網絡向遠程實例發送任何通信。因此,其它實例將驅逐問題實例。

在執行驅逐其他實例動作的實例警報日誌中,您可能會看到與以下消息類似的消息:
Remote instance kill is issued [112:1]:8
或者
Evicting instance 2 from cluster
解決方案:

1) 查找數據庫或實例掛起的原因。對數據庫或實例掛起問題進行故障排除時,獲取全局 systemstate 轉儲和全局hang analyze 轉儲是關鍵。如果無法獲取全局 systemstate 轉儲,則應獲取在大致相同時間所有實例的本地 systemstate 轉儲。
2) 檢查 CHM (Cluster Health Monitor) 輸出,以查看服務器是否存在 CPU 或內存負載問題、網絡問題或者 lmd 或 lms 進程出現死循環。CHM 輸出只能在某些平臺和版本中使用,因此請參閱 CHM 常見問題 Document 1328466.1
3) 如果 OSWatcher 尚未設置,請按照 Document 301137.1 中的說明進行設置以運行 OSWatcher。
CHM 輸出不可用時,使用 OSWatcher 輸出將有所幫助。
 

問題 4:在一個或多個實例崩潰或驅逐前,警報日誌顯示“Waiting for clusterware split-brain resolution(等待集羣“腦裂”解決方案)”

症狀:

在一個或多個實例崩潰之前,警報日誌顯示“Waiting for clusterware split-brain resolution(等待集羣件“腦裂”解決方案)”。這通常伴隨着“Evicting instance n from cluster(從集羣驅逐實例 n)”,其中 n 是指被驅逐的實例編號。

可能的原因:

lmon 進程向遠程實例發送一個網絡 ping,如果遠程實例上的 lmon 進程不響應,則出現實例級別的“腦裂”。因此,查找 lmon 不能相互通信的原因對解決此問題而言非常重要。

常見原因有:
1) 實例級別的“腦裂”通常由網絡問題導致,因此檢查網絡設置和連接非常重要。但是,因爲如果網絡已關閉,集羣件 (CRS) 就會出現故障,所以只要 CRS 和數據庫使用同一網絡,則網絡不太可能會關閉。   
2) 服務器非常繁忙和/或可用內存量低(頻繁的交換和內存掃描),將阻止 lmon 進程被調度。
3) 數據庫或實例正處於掛起狀態,並且 lmon 進程受阻。
4) Oracle bug

以上原因與問題 1的原因相似(警報日誌顯示 ora-29740 是實例崩潰/驅逐的原因)。
解決方案:

此處的解決方案與問題 1 相似。

1) 檢查網絡,確保無網絡錯誤,如 UDP 錯誤或 IP 數據包丟失或故障錯誤。
2) 檢查網絡配置,確保所有節點上的所有網絡配置均設置正確。
   例如,所有節點上 MTU 的大小必須相同,並且如果使用巨幀,交換機也能夠支持大小爲 9000 的 MTU。
3) 檢查服務器是否存在 CPU 負載問題或可用內存不足。
4) 檢查數據庫在實例驅逐之前是否正處於掛起狀態或存在嚴重的性能問題。
5) 檢查 CHM (Cluster Health Monitor) 輸出,以查看服務器是否存在 CPU 或內存負載問題、網絡問題或者 lmd 或 lms 進程出現死循環。CHM 輸出只能在特定平臺和版本中使用,因此請參閱 CHM 常見問題 Document 1328466.1
6) 如果 OSWatcher 尚未設置,請按照 Document 301137.1 中的說明進行設置以運行 OSWatcher。
   CHM 輸出不可用時,使用 OSWatcher 輸出將有所幫助。

問題 5:另一個實例嘗試驅逐問題實例,但由於一些原因未能成功驅逐,最終CRS會終止該問題實例。

症狀:

一個實例驅逐其他實例時,在問題實例自己關閉之前,所有實例都處於等待狀態,但是如果問題實例因爲某些原因不能終止自己,發起驅逐的實例將發出 Member Kill 請求。Member Kill 請求會要求 CRS 終止問題實例。此功能適用於 11.1 及更高版本。

可能的原因:

要求 CRS 終止問題實例的實例警報日誌顯示
Remote instance kill is issued [112:1]:8

例如,以上消息表示終止實例 8 的 Member Kill 請求已發送至 CRS。


問題實例由於某種原因正處於掛起狀態且無響應。這可能是由於節點存在 CPU 和內存問題,並且問題實例的進程無法獲得 CPU 運行調度。


第二個常見原因是數據庫資源爭用嚴重,導致問題實例無法完成遠程實例驅逐該實例的請求。 


另一個原因可能是由於實例嘗試中止自己時,一個或多個進程“倖存”了下來。除非實例的所有進程全部終止,否則 CRS 不認爲該實例已終止,而且不會通知其它實例該問題實例已經被終止。這種情況下的一個常見問題是一個或多個進程變成殭屍進程且未終止。
並導致CRS通過節點重啓或 rebootless restart( CRS 重新啓動但節點不重啓)進行重新啓動。這種情況下,問題實例的警報日誌顯示
Instance termination failed to kill one or more processes
Instance terminated by LMON, pid = 23305
(實例終止未能終止一個或多個進程
實例被 LMON, pid = 23305 終止)
解決方案:


此問題的解決方案與問題 3 相似


1) 查找數據庫或實例掛起的原因。對數據庫或實例掛起問題進行故障排除時,獲取全局 systemstate 轉儲和全局hang analyze 轉儲是關鍵。如果無法獲取全局 systemstate 轉儲,則應獲取在大致相同時間所有實例的本地 systemstate 轉儲。
2) 檢查 CHM (Cluster Health Monitor) 輸出,以查看服務器是否存在 CPU 或內存負載問題、網絡問題或者 lmd 或 lms 進程出現死循環。CHM 輸出只能在某些平臺和版本中使用,因此請參閱 CHM 常見問題 Document 1328466.1
3) 如果 OSWatcher 尚未設置,請按照 Document 301137.1 中的說明進行設置以運行 OSWatcher。
CHM 輸出不可用時,使用 OSWatcher 輸出將有所幫助.

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