操作系統: windows2008
數據庫:oracle11g
問題發生:一套正常跑了一年的應用系統,忽然無法連接上數據庫,但是另外一個應用可以正常鏈接,數據入庫正常。
數據庫服務器端查看:
使用 lsnrctl status 查看監聽狀態卡住,10分鐘左右結果才會反饋。
plsql無法連接。
重啟監聽問題依舊。
alter日志文件中報錯:
Fatal NI connect error 12537, connecting to:
(LOCAL=NO)
VERSION INFORMATION:
TNS for 64-bit Windows: Version 11.2.0.1.0 - Production
Oracle Bequeath NT Protocol Adapter for 64-bit Windows: Version 11.2.0.1.0 - Production
Windows NT TCP/IP NT Protocol Adapter for 64-bit Windows: Version 11.2.0.1.0 - Production
Time: 17-6月 -2015 09:17:49
Tracing not turned on.
Tns error struct:
ns main err code: 12537
TNS-12537: TNS: 連接關閉
ns secondary err code: 12560
nt main err code: 0
nt secondary err code: 0
nt OS err code: 0
opiodr aborting process unknown ospid (6052) as a result of ORA-609
使用dos端sqlplus登錄正常,查有最新數據入庫。懷疑是監聽問題!
查看監聽log文件 $ORACLE_HOME/network/log 報錯如下
<msg time='2015-06-16T02:14:18.877+08:00' org_id='oracle' comp_id='tnslsnr'
type='UNKNOWN' level='16' host_id='WINDOWS-35NMUNE'
host_addr='fe80::7840:6685:828f:4f5a%17'>
<txt>TNS-12560: TNS: 協議適配器錯誤
TNS-00530: 協議適配器錯誤
64-bit Windows Error: 53: Unknown error
TNS-12518: TNS: 監聽程序無法分發客戶機連接
TNS-12571: TNS: 包寫入程序失敗
TNS-12560: TNS: 協議適配器錯誤
TNS-00530: 協議適配器錯誤
64-bit Windows Error: 54: Unknown error
</txt>
</msg>
報錯 ora-12518 監聽無法分發客戶端連接。 但在oracle中使用 show parameter session 與select count(×) from v$session; 對比發現不是連接數限制問題。
使用tnsping IP 沒有反應。
後繼續查看listener的log文件 $ORACLE_HOME/network/trace 發現listener.log 文件已經達到4G 無法再繼續寫入,最後寫入日期也在前兩天,於是刪除該log文件,啟動監聽,正常~!!
最終原因發現是log文件寫滿,看來以後要定期清理這個文件了。這麼小一個問題都使應用系統無法連接上,細節決定成敗。 此類文件要見一個記錄一個 同時在同類系統中排查。