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

最近在多个大型系统中遇到此问题,一般来说假设client未反映异常的话能够忽略的。


假设是client登陆时遇到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错误的排查步骤:


此错误是由于client无法在SQLNET.INBOUND_CONNECT_TIMEOUT.指定时间内完毕用户验证
此时也可能有ORA-12170 or TNS-12535 in the sqlnet.log。同一时候包括client相关信息。
10.2.0.1開始SQLNET.INBOUND_CONNECT_TIMEOUT默认是 60 seconds。假设client不能在60秒内完毕登陆认证,client连接被中止同一时候ALERT有此报错。
----这主要是为防止DoS攻击。




此错误可能原由于:
1.DoS攻击。大量恶意连接,此时报错并终止client连接是正确的。
2.正常连接。可是未在SQLNET.INBOUND_CONNECT_TIMEOUT值=60秒内完毕登陆验证。
3.数据库server负载高,相似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


posted @ 2018-01-13 08:13  llguanli  阅读(179)  评论(0编辑  收藏  举报