首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 10g 雙監聽進程衝突故障分析與解決

     編輯:Oracle 資料庫相關知識

故障現象

資料庫無法通過監聽建立連線,檢查作業系統進程發現存在兩個 tnslsnr 進程,其中一個是另一個的子進程。典型輸出如下:

oracle 925826 1 0 Apr 06 - 234:50 /u01/app/oracle/product/102/bin/tnslsnr listener1 -inherit
oracle 1081540 925826 0 21:39:39 - 0:00 /u01/app/oracle/product/102/bin/tnslsnr listener1 -inherit

根本原因

此問題被確認為 Oracle Bug 4518443。在高負載下,監聽進程可能間歇性停止服務,Oracle 會嘗試重新生成一個監聽進程,導致父子兩個監聽進程同時存在並相互干擾,最終造成連線失敗。RAC 環境下也常見此問題。

解決方案

臨時規避(非 RAC 環境)

在 listener.ora 中添加參數:

SUBSCRIBE_FOR_NODE_DOWN_EVENT_=OFF

可暫時抑制監聽器自動重生機制,避免雙進程衝突。

永久修復

應用 Oracle 針對 Bug 4518443 發布的修補程式(Patch),徹底解決監聽器在壓力下異常重生的缺陷。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved