故障排除指南 ORA-3136:WARNING Inbound Connection Timed Out (文档 ID 2331569.1)


故障排除指南 ORA-3136:WARNING Inbound Connection Timed Out (文档 ID 2331569.1)

文档内容

Oracle Net Services - 版本 10.2.0.5 到 12.2.0.1 [发行版 10.2 到 12.2]


 

适用于:

Oracle Database - Enterprise Edition - 版本 10.2.0.5 到 12.2.0.1 [发行版 10.2 到 12.2]
本文档所含信息适用于所有平台

用途

在警报日志中看到的“ORA-3136 WARNING inbound connection timed out”的故障排除指南。

 

在版本 10gR2 RDBMS 中引入的在database和listener上 INBOUND CONNECT TIMEOUT 的默认超时。

Oracle Net 的参数 SQLNET.INBOUND_CONNECT_TIMEOUT 和 INBOUND_CONNECT_TIMEOUT_listener_name 的当前默认值为60秒。

如果任何客户端无法提供凭证,或者由于任何原因无法在60秒内完成认证过程,则会引发该错误

在 alert.log 中:

WARNING: inbound connection timed out (ORA-3136)

排错步骤

在警告日志中报的“WARNING: inbound connection timed out (ORA-3136)”标识了客户端无法在参数 SQLNET.INBOUND_CONNECT_TIMEOUT 指定的时间内完成身份验证过程。

该参数在10gR1被引入,默认值是60秒或1分钟。

在11gR1及更高版本中,ORA-3136 错误通常伴随有timeout的错误,而且可能还包含建立连接使用的客户端的IP以及客户端端口号。

例如:

Fatal NI connect error 12170.

VERSION INFORMATION:
TNS for IBM/AIX RISC System/6000: Version 11.2.0.1.0 - Production
TCP/IP NT Protocol Adapter for IBM/AIX RISC System/6000: Version 11.2.0.1.0 - Production
Oracle Bequeath NT Protocol Adapter for IBM/AIX RISC System/6000: Version 11.2.0.1.0 - Production
Time: 24-AUG-2017 03:55:01
Tracing not turned on.
Tns error struct:
ns main err code: 12535

TNS-12535: TNS:operation timed out
ns secondary err code: 12606
nt main err code: 0
nt secondary err code: 0
nt OS err code: 0
Client address: (ADDRESS=(PROTOCOL=tcp)(HOST=10.x.y.z)(PORT=63510)) <--客户端IP和临时端口的记录
WARNING: inbound connection timed out (ORA-3136)

注意当alert日志中提供了客户端ip地址和临时端口时,通常可以使用该信息来确定该连接是什么时候被listener所“processed”的,可以在listener的日志中查找这样一段信息: (HOST=10.x.y.z)(PORT=63510))

下面是该连接在listener 日志中的相关记录:

24-AUG-2017 03:54:01 * (CONNECT_DATA=(SID=gisprod)(CID=(PROGRAM=E:\Program?Files??x86?\myapp.bin)(HOST=myclient)(USER=myuser))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.x.y.z)(PORT=63510)) * establish

注意listener日志中的timestamp:24-AUG-2017 03:54:01
注意alert日志中的timestamp: Time: 24-AUG-2017 03:55:01

可以清楚的看到该案例中inbound connect timeout 设置为1分钟,并且该客户端当时验证失败。
该连接正是在数据库上被终止的1分钟前在listener上被建立的。

注意:引入此超时限制是为了抵御恶意客户端尝试使用无效证书的连接请求来攻击数据库服务器的情形。


  以下是这个错误的最可能的原因 -

  1. 通常该错误抛出都是由于客户端或者应用尝试使用了错误的userid或者密码来连接。 
    参考下面的文档:  Note: 793259.1 ORA-1017 May Cause ORA-3136 WARNING : Inbound Connection Timed Out in Alert Log
  2. 服务器收到有效的客户端连接请求,但客户端需要很长时间才能进行超过默认60秒的身份验证。
  3. 数据库服务器负载很重,因此无法在指定的超时时间内完成客户端登录。

要了解是什么导致了这个问题,可以做下面的检查

在大多数情况下,数据库服务器可以在默认值60秒内完成客户端连接的认证。如果需要更长的时间,则在实施变通方法之前,请检查以下项目:

1. 检查数据库服务器上的本地连接是否可以很快完成。
2. 如果本地连接速度很快,请在网络管理员的帮助下检查底层网络延迟。
3. 检查你的数据库性能是否有问题。
4. 检查警报日志中是否有关于 ORA-600 或 ORA-7445 的严重错误,并首先解决它们。这些严重错误可能会引发数据库服务器的缓慢。

使用下面指导步骤来设置这些参数的值使其高于默认的60秒:

编辑服务器端的 sqlnet.ora文件并添加该参数。需要注意的是RAC环境中,数据库参考的sqlnet.ora文件是在它自己的home下,并不在listener运行的Grid下。

说白了,添加下面的这行命令到$RDBMS_HOME/network/admin目录下的sqlnet.ora文件:

SQLNET.INBOUND_CONNECT_TIMEOUT=<n> 其中<n>的单位是秒。

例如:

SQLNET.INBOUND_CONNECT_TIMEOUT = 120

改完之后,既不需要重启listener也不需要重启数据库,除非数据库是运行在shared server 模式下。

下一个dedicated server 进程spawn 的时候将获得新设置的值。


检查数据库服务器 SQLNET.INBOUND_CONNECT_TIMEOUT 是否处于生效状态:
例如:

SQLNET.INBOUND_CONNECT_TIMEOUT=120



a. 对于 Dedicated server,启用 support 级别 sqlnet trace 将显示超时值,如下所示:

niotns: Enabling CTO, value=120000 (milliseconds) <== 120 seconds
niotns: Not enabling dead connection detection.
niotns: listener bequeathed shadow coming to life...



b. 对于共享服务器设置,
$ telnet <数据库服务器 IP> <调度器端口>
示例:

$ telnet 123.23.23.23  51658


telnet 会话应在120秒后断开连接,这表明 sqlnet.inbound_connect_timeout 处于生效状态。


如果您对此问题还有其他问题,请在 My Oracle Support 中创建一个服务请求,并提供以下信息:

a. 在 support 级别生成客户端和匹配的服务器跟踪信息。

Note 395525.1 How to Enable Oracle Net Client,Server,Listener,Kerberos and External procedure Tracing from Net Manager (netmgr):
Note 374116.1 How to Match Oracle Net Client and Server Trace Files

b. 从数据库服务器上传 sqlnet.ora,listener.ora Sqlnet.log,&Alert_ <sid> .log

参考

NOTE:395525.1 - How to Enable Oracle SQL*Net Client , Server , Listener , Kerberos and External procedure Tracing from Net Manager
NOTE:730066.1 - Troubleshooting ORA-3136 Connection Timeouts Errors - Database Diagnostics
NOTE:345197.1 - Connections that Used to Work in Oracle 10gR1 Now Intermittently Fail with ORA-3113,ORA-3106 or ORA-3136 from 10.2 Onwards
NOTE:374116.1 - How to Match Oracle Net Client and Server Trace Files


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM