Fatal NI connect error 12170. TNS-00505: Operation timed out TNS-12535: TNS:operation timed out

原因分析:Client在default 60秒内没有完成认证所导致。一般情况下60s是够用的,如果60秒还报ORA-3136的错误。 Oracle 的解决方法是增加这个时间,用更多的时间来连接。 这个也是Oracle 建议的修改方法。

解决方法:

检查“inbound_connect_timeout”的默认值是否为60;设置“inbound_connect_timeout”的值,修改方法有以下3种:

   ①设置sqlnet.ora文件:SQLNET.INBOUND_CONNECT_TIMEOUT=0;

     设置listener.ora文件:INBOUND_CONNECT_TIMEOUT_listenername=0;

注: inbound_connect_timeout_listener_name 参数的值要小于sqlnet.inbound_connect_timeout 的值。

     然后reload或者重启监听;

 

   ②在线临时重新设置值

     LSNRCTL> show inbound_connect_timeout; 

     LSNRCTL> set inbound_connect_timeout 0;

扫描二维码关注公众号,回复: 2945536 查看本文章

 

   ③永久性在listener.ora设置
编辑listener.ora文件:vim listener.ora

在文件中添加以下信息:INBOUND_CONNECT_TIMEOUT_listener=0;(LISTENER是监听名称 )

Lsnrctl stop

Lsnrctl start

 

注意:

这里使用lsnrctl stop|start会断掉当前oracle里的所有客户端连接,也可以使用lsnrctl reload来加载;

设置inbound_connect_timeout为0,是有隐患的。因为这个参数从9i开始引入,指定了客户端连接服务器并且提供认证信息的超时时间,如果超过这个时间客户端没有提供正确的认证信息,服务器会自动中止连接请求,同时会记录试图连接的IP地址和ORA-12170:TNS:Connect timeout occurred错误。

    这个参数的引入,主要是防止DoS攻击,恶意攻击者可以通过不停的开启大量连接请求,占用服务器的连接资源,使得服务器无法提供有效服务。在10.2.0.1起,该参数默认设置为60秒。但是,这个参数的引入也导致了一些相关的Bug。

猜你喜欢

转载自blog.csdn.net/haojiubujian920416/article/details/81902041