ALERT日志中常见监听相关报错之二:ORA-3136错误的排查

近期在多个大型系统中遇到此问题,一般来说如果客户端未反映异常的话可以忽略的。
如果是客户端登陆时遇到ORA-12170: TNS:Connect timeout occurred,可以参考 http://blog.csdn.net/haibusuanyun/article/details/14517211#t12
###############
参考MOS文档有:
Troubleshooting Guide for TNS-12535 or ORA-12535 or ORA-12170 Errors (文档 ID 119706.1)
Troubleshooting Guide ORA-609 : Opiodr aborting process unknown ospid (文档 ID 1121357.1)
Troubleshooting Guide ORA-3136: WARNING Inbound Connection Timed Out (文档 ID 465043.1)

Alert.log shows ORA-609 with TNS-12537: TNS:connection closed (文档 ID 1538717.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)
Alert Log Errors: 12170 TNS-12535/TNS-00505: Operation Timed Out (文档 ID 1628949.1)
---------
对这些问题进行分类,大致如下:

------
ORA-3136: WARNING Inbound Connection Timed Out错误的排查步骤:


此错误是因为客户端无法在SQLNET.INBOUND_CONNECT_TIMEOUT.指定时间内完成用户验证
此时也可能有ORA-12170 or TNS-12535 in the sqlnet.log,同时包含客户端相关信息。
10.2.0.1开始SQLNET.INBOUND_CONNECT_TIMEOUT默认是 60 seconds,如果客户端不能在60秒内完成登陆认证,客户端连接被中止同时ALERT有此报错。
----这主要是为防止DoS攻击。


此错误可能原因为:
1.DoS攻击,大量恶意连接,此时报错并终止客户端连接是正确的。
2.正常连接,但是未在SQLNET.INBOUND_CONNECT_TIMEOUT值=60秒内完成登陆验证。
3.数据库服务器负载高,类似HANG住。


排查方法:
1.本地连接数据库,测试是否HANG住
2.DB是否有600/7445等内部错误导致此问题
3.网络问题

解决:
建议是sqlnet.ora--DATABASE值大于listener.ora--LISTENER.
例如:
sqlnet.ora
SQLNET.INBOUND_CONNECT_TIMEOUT = 120

listener.ora
INBOUND_CONNECT_TIMEOUT_LISTENER = 110  

验证:
LSNRCTL>show inbound_connect_timeout


你可能感兴趣的:(ORA-3136)