ALERT日志中常见监听相关报错之三:ORA-609 TNS-12537 and TNS-12547 or TNS-12170 TNS-12535错误的排查

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.
单位为秒,client须要在指定的时间内提交须要的认证信息。
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.
单位为秒,client与监听建立连接后多久须要完毕连接请求
比如:
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.client和server的OS平台、版本号是ORACLE支持的
3.假设使用9I或之前的Oracle Names Server,配置暂时tnsnames.ora 并在sqlnet.ora file 写入 NAMES.DIRECTORY_PATH = (TNSNAMES)
4.假设正在使用Shared Server。尝试使用SERVER=DEDICATED
5.数据库server负载高,CPU/内存等检查
6.10.1、10.2版本号 client可能在网络慢时收到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错误的组合。
排查client是否异常发出过多连接、连接风暴等问题。
8.监听器负载大,大量client连接积压。监听器不能及时处理。--或者连接风暴
9.server正在启动过程中。。
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.

原文地址:https://www.cnblogs.com/yxysuanfa/p/7201610.html