程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle listener 沒有反映

Oracle listener 沒有反映

編輯:Oracle數據庫基礎

不管是查看狀態還是啟停 listener都沒有反映

lsnrctl status

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=KJPTSERVER1)(PORT=1521)) )

執行 ps -ef|grep tnslsnr

Oracle  111111             1   0    Aug 25      -  9:44 /Oracle/database/product/10.2.0/bin/tnslsnr LISTENER -inherit
oracle  222222  3333333   0 04:50:31      -  0:00 /Oracle/database/product/10.2.0/bin/tnslsnr LISTENER -inherit

根據上次啟動的時間殺掉比較新的。

發現listener可以tnsping 通。

問題原因:來源於網上,

在Metalink上可以找到相關問題的很多解釋,這個問題被最終確認為Oracle10201一個BUG,BUG號為:4518443,其會自動創建一個子監聽器,當出現此情況時,監聽器將會掛起。
Oracle稱在較大壓力下,監聽進程可能出現間歇性停止服務,此時Oracle會spaw出另外一個監聽進程,進而導致兩個監聽進程互相影響的故障。
檢查監聽日志文件 $Oracle_HOME/network/log/listener.log 有如下語句:
WARNING: Subscription for node down event still pending

解決方法:

已經按照此方法處理,(10分鐘前處理的還不知道結果如何)

非RAC環境 下,可以通過在listener.ora中設置參數:
SUBSCRIBE_FOR_NODE_DOWN_EVENT_<listener_name>=OFF
來暫時回避這個BUG。

具體操作:在listener.ora 文件裡加入(我加在了最後):(NO-RAC)
SUBSCRIBE_FOR_NODE_DOWN_EVENT_<listener_name>=OFF
其中,<listener_name> 是數據庫的監聽器的名稱。如:默認情況下,監聽器名為:LISTENER 。則語句就是:
SUBSCRIBE_FOR_NODE_DOWN_EVENT_LISTENER =OFF
重啟監聽程序:
lsnrctl stop

lncrctl start

按照 metalink的說法,這個語句關閉了監聽自動向ONS(Oracle Notification Services)注冊,正是這個注冊可能導致監聽啟動子進程。ONS是RAC中的一個組件,禁用該特性將導致RAC的FAN(Fast Application Notification)特性不可用。

如果是RAC則必須打補丁。

我采用的是這個方式。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved