ITPub博客

首页 > 数据库 > Oracle > [20141219]关于sqlnet.expire_time.txt

[20141219]关于sqlnet.expire_time.txt

原创 Oracle 作者:lfree 时间:2014-12-19 11:31:55 0 删除 编辑

[20141219]关于sqlnet.expire_time.txt

***********************************************************************

Fatal NI connect error 12537, connecting to:
(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.xxx.xxx)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=xxxx.com)(CID=(PROGRAM=oracle)(HOST=xxx)(USER=oracle11g))))

  VERSION INFORMATION:
    TNS for Linux: Version 11.2.0.4.0 - Production
    TCP/IP NT Protocol Adapter for Linux: Version 11.2.0.4.0 - Production
  Time: 18-APR-2014 11:05:46
  Tracing not turned on.
  Tns error struct:
    ns main err code: 12537

TNS-12537: TNS:connection closed
    ns secondary err code: 12560
    nt main err code: 507

TNS-00507: Connection closed
    nt secondary err code: 0
    nt OS err code: 0

--如果应该经常出现这样的错误,主要问题可能出现在内网的防火墙设置,如果应用保持连接而长时间没有操作,一些网络设备就会断开连接,
--解决方法就是通过设置服务端的sqlnet.ora文件的sqlnet.expire_time参数,来主动向客户端发送检测请求,如果客户端还活着,则不做操
--作,如果检测发现客户端的连接已经不存在或没有反映,则回收这个session的资源。这样,如果DCD的检测时间小于防火墙设置的空闲连接
--最大存活时间,那么由于DCD检测客户端存活性需要从服务端发送一个空包到客户端,防火墙就会重新计算这个连接的空闲时间,就不
--会中断这个会话了。设置DCD需要在服务端的sqlnet.ora文件中添加以下信息:

sqlnet.expire_time = 5

这个值的单位是分钟,这里设置的是每五分钟服务端会向已连接数据库的session所在的客户端发送一个空包,来检测客户端的存活性,
如果防火墙限制的空闲连接时间大于5分钟,那么连接到数据库的会话就不会因为大于5分钟的空闲时间而被中断。这种方案完全可以解决
这个问题,但这种方法需要重新注册监听。

--简单做一个测试:

1.修改 sqlnet.ora文件,加入:
SQLNET.EXPIRE_TIME=1

重启监听。

2.远端打开连接数据库,不做任何操作。

3.在服务端执行如下命令:
# tcpdump -i eth0 -nnn host 192.168.xxx.xxx and port 1521
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
11:13:11.436128 IP 192.168.yyy.yyy.1521 > 192.168.xxx.xxx.64247: P 2119621137:2119621147(10) ack 2682317414 win 16060
11:13:11.636552 IP 192.168.xxx.xxx.64247 > 192.168.yyy.yyy.1521: . ack 10 win 63492
11:14:11.437488 IP 192.168.yyy.yyy.1521 > 192.168.xxx.xxx.64247: P 10:20(10) ack 1 win 16060
11:14:11.637790 IP 192.168.xxx.xxx.64247 > 192.168.yyy.yyy.1521: . ack 20 win 63482
11:15:11.437914 IP 192.168.yyy.yyy.1521 > 192.168.xxx.xxx.64247: P 20:30(10) ack 1 win 16060
11:15:11.637900 IP 192.168.xxx.xxx.64247 > 192.168.yyy.yyy.1521: . ack 30 win 63472
11:16:11.438691 IP 192.168.yyy.yyy.1521 > 192.168.xxx.xxx.64247: P 30:40(10) ack 1 win 16060
11:16:11.637143 IP 192.168.xxx.xxx.64247 > 192.168.yyy.yyy.1521: . ack 40 win 63462
11:17:11.439824 IP 192.168.yyy.yyy.1521 > 192.168.xxx.xxx.64247: P 40:50(10) ack 1 win 16060
11:17:11.639376 IP 192.168.xxx.xxx.64247 > 192.168.yyy.yyy.1521: . ack 50 win 63452
11:18:11.441028 IP 192.168.yyy.yyy.1521 > 192.168.xxx.xxx.64247: P 50:60(10) ack 1 win 16060
11:18:11.640484 IP 192.168.xxx.xxx.64247 > 192.168.yyy.yyy.1521: . ack 60 win 63442
11:19:11.441949 IP 192.168.yyy.yyy.1521 > 192.168.xxx.xxx.64247: P 60:70(10) ack 1 win 16060
11:19:11.641719 IP 192.168.xxx.xxx.64247 > 192.168.yyy.yyy.1521: . ack 70 win 63432

--可以看到每隔1分钟,服务端向客户端发起连接,检测客户端是否存在。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/267265/viewspace-1373080/,如需转载,请注明出处,否则将追究法律责任。

全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    2696
  • 访问量
    6467230