ALERT日誌中常見監聽相關報錯之三:ORA-609 TNS-12537 and TNS-12547 or TNS-12170 TNS-12535錯誤的排查

還不算暈發表於2015-07-17
1.11G中ALERT日誌中有報錯ORA-609 TNS-12537 and TNS-12547 or TNS-12170  12170, 'TNS-12535等問題的解決方法:
Troubleshooting Guide for TNS-12535 or ORA-12535 or ORA-12170 Errors (文件 ID 119706.1)
TNS-12535 / ORA-12535 on Connection to Database (文件 ID 214122.1)
11g: ORA-609 TNS-12537 and TNS-12547 or TNS-12170 in 11g Alert.log (文件 ID 1116960.1)
Fatal NI Connect Error 12170, 'TNS-12535: TNS:operation timed out' Reported in 11g Alert Log (文件 ID 1286376.1)

TNS-12535 or ORA-12535從本質上來說是客戶端與伺服器之間計時的問題。a timing issue between the client and server.
這個錯誤通常是由於防火牆或網路不穩定、慢引起的超時。也可能是主機的TCP QUEUESIZE setting設定問題。
通常也需要排查監聽配置檔案:
listener.ora -->
CONNECT_TIMEOUT_<listener_name> (8.1.x and lower only)
   or
INBOUND_CONNECT_TIMEOUT_<listener_name> (9.2 and above)
sqlnet.ora -->
SQLNET.INBOUND_CONNECT_TIMEOUT (9.2 and up).


listener.ora: INBOUND_CONNECT_TIMEOUT_listenername
set to a value in seconds and determines how long a client has to provide the necessary authentication information to a database.
單位為秒,客戶端需要在指定的時間內提交需要的認證資訊。
sqlnet.ora: SQLNET.INBOUND_CONNECT_TIMEOUT
 INBOUND_CONNECT_TIMEOUT_listenername is set to a value in seconds and determines how long a client has to complete its connect request to the listener after the network connection has been established.
單位為秒,客戶端與監聽建立連線後多久需要完成連線請求
例如:
Sqlnet.ora: SQLNET.INBOUND_CONNECT_TIMEOUT=180
Listener.ora: INBOUND_CONNECT_TIMEOUT_listener_name=120
參考:11g: ORA-609 TNS-12537 and TNS-12547 or TNS-12170 in 11g Alert.log (文件 ID 1116960.1)



排查方法:
1.可以PING通連線串中的主機HOST--如RAC的VIP/SCAN,檢查防火牆、路由、網路慢等
2.客戶端和伺服器的OS平臺、版本是ORACLE支援的
3.如果使用9I或之前的Oracle Names Server,配置臨時tnsnames.ora 並在sqlnet.ora file 寫入 NAMES.DIRECTORY_PATH = (TNSNAMES)
4.如果正在使用Shared Server,嘗試使用SERVER=DEDICATED
5.資料庫伺服器負載高,CPU/記憶體等檢查
6.10.1、10.2版本 客戶端可能在網路慢時收到ORA-12535 or ORA-12170,修改如下:
These parameters are set on the SERVER side:
listener.ora: INBOUND_CONNECT_TIMEOUT_listenername   --為0(無限期)
sqlnet.ora: SQLNET.INBOUND_CONNECT_TIMEOUT   --120防DOS
7.11g版資料庫警報日誌還可能包含12535和/或12170錯誤的組合。
排查客戶端是否異常發出過多連線、連線風暴等問題。
8.監聽器負載大,大量客戶端連線積壓,監聽器不能及時處理。--或者連線風暴
9.伺服器正在啟動過程中。。
10.TRACE跟蹤一下 DOC:文件 ID 1116960.1



解決方法:
1.8I及之前版本,在 listener.ora中配置CONNECT_TIMEOUT_<listener_name> and make it a higher value.
2.9I及之後版本,CONNECT_TIMEOUT_<listener_name> parameter is obsoleted.
需要根據不同版本來設定。

3.11G中此錯誤 會出現在ALERT日誌中。這個錯誤對應用基本沒有影響,通常可以忽略。
ORACLE就給了一個損招,不讓監聽超時錯誤出現在告警日誌裡,回到10G的形式儲存在監聽的LOG中。。
Fatal NI Connect Error 12170, 'TNS-12535: TNS:operation timed out' Reported in 11g Alert Log (文件 ID 1286376.1)
方法1: server's sqlnet.ora :
DIAG_ADR_ENABLED = OFF
方法2:
Also, to back out the ADR diag for the Listener component,  server's listener.ora:
DIAG_ADR_ENABLED_LISTENER = OFF
此時出現監聽超時錯誤只出現在監聽日誌,注意ADR_BASE_LISTENER = /orabase   --刪除此條目。
對sqlnet檔案的修改是要重新註冊監聽才能生效的。


4.11G中還可以設定sqlnet.ora--文件 ID 1628949.1
SQLNET.EXPIRE_TIME=n  Where <n> is a non-zero value set in minutes.

相關文章