WARNING: inbound connection timed out (ORA-3136)

WARNING: inbound connection timed out (ORA-3136)

1 错误信息

有时候我们在alter 日志中发现如下错误:

WARNING: inbound connection timed out (ORA-3136)

官方提供的说明如下:

  03136, 00000, "inbound connection timed out"
// *Cause: Inbound connection was timed out by the server because
// user authentication was not completed within the given time
// specified by SQLNET.INBOUND_CONNECT_TIMEOUT or its default value
// *Action: 1) Check SQL*NET and RDBMS log for trace of suspicious connections.
// 2) Configure SQL*NET with a proper inbound connect timeout value
// if necessary.

2 伴生现象

 

2.1 SQLNET.LOG

sqlnet.log 中一般会有伴生日志同时记录:

Fatal NI connect error 12170.
.........略

2.2 客户端

客户端接收错误信息:

ORA-12547: TNS:lost contact 或者 ORA-12637: Packet receive failed error message.

3 分析

在官方提供的说明里比较清晰的说明。出现该错误,是由于在有限的时间内未完成登录授权。 而控制该验证时长的参数是sqlnet.inbound_connect_timeout 参数。该参数默认是60秒。

LSNRCTL> show inbound_connect_timeout
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
LISTENER parameter "inbound_connect_timeout" set to 60
The command completed successfully

其实一般情况下,60秒的时间,数据库足够处理成千上万次的登录了。所以,出现这种情况, 肯定是数据库存在某些其他方面的问题。这要具体问题具体分析了。

4 解决

  1. 在listener.ora 中添加配置: INBOUND_CONNECT_TIMEOUT_<listenername>=0
  2. 在sqlnet.ora 中添加配置: SQLNET.INBOUND_CONNECT_TIMEOUT = 0
  3. 重启或者reload 监听,一般建议重启,reload有时候不生效。
  4. INBOUND_CONNECT_TIMEOUT_<listenername> 应小于等于SQLNET.INBOUND_CONNECT_TIMEOUT

Author: halberd.lee

Created: 2019-06-13 Thu 14:43

Validate

05-22 04:27