今天在 ALERT 文件中发现下面的警告信息: WARNING: inbound connection timed out (ORA-3136) 。 在 metalink 上查询了一下,发现这个错误在10g当中是很常见的。 Metalink 上有专门的 bug 和 note 对这个问题进行了说明。不过 Oracle 虽然给出了解决方案,
今天在 ALERT 文件中发现下面的警告信息: WARNING: inbound connection timed out (ORA-3136) 。
在 metalink 上查询了一下,发现这个错误在10g当中是很常见的。 Metalink 上有专门的 bug 和 note 对这个问题进行了说明。不过 Oracle 虽然给出了解决方案,但是并没有详细说明问题产生的原因。只是说明这是一个内部错误。
Oracle 给出的解决方法就是通过修改 listener.ora 和 sqlnet.ora 中的这个参数值:
1. 在 listener.ora 中添加 INBOUND_CONNECT_TIMEOUT_listener_name=0
2. 在服务器上的 sqlnet.ora 文件中添加 SQLNET.INBOUND_CONNECT_TIMEOUT=0
3. 重启监听
INBOUND_CONNECT_TIMEOUT 参数是客户端向服务器建立连接并完成必要的证明。这个值默认是 60 秒的时间。
Oracle 虽然没有说明问题产生的原因,但是从解决方法上可以看到, Oracle 采用的方法是禁止 INBOUND_CONNECT_TIMEOUT 参数。根据 Oracle 的文档,不设置这个参数可能会引入安全隐患。
如果在 alert 日志中,偶然见到这个错误,可以不必理会,如果发生频繁的话,考虑使用上面描述的方法进行解决。