查看: 13941|回复: 16
连接空闲5分钟后自动断开,困扰我好几天了
论坛徽章:1
单位有一台应用服务器,作为数据库的客户端,有一台数据库服务器,数据库服务器外有一台防火墙(防火墙上开了1521端口的映射),两台服务器操作系统都是windows2003,oracle版本10.2.0.1;结构大概就是这样:
客户端(应用服务器)----internet----防火墙--(局域网)--数据库服务器
故障现象:客户端能正常连接服务器,但是客户端空闲5分钟后连接会断开,此时在客户端上netstat查看数据库连接状态为“ESTABLISHED”,服务器上netstat查看连接已经没有了,防火墙上也没有连接了;如果操作数据会报“ORA-03113: 通信通道的文件结尾”错误。如是通过***连接,再连接数据库则不会出现这个问题。
刚开始我认为是防火墙的问题,因为以前遇到过类似的情况,连接空闲的时间超出了防火墙上设置的会话老化时间,防火墙会断开会话,经检查后发现不是防火墙的原因。然后又查看了profile的设置,profile使用的是default,idle_time和connect_time的值都是unlimited。v$session中status值是INACTIVE,state的值是WAITING。当等的时间到310秒左右时,会话就会断开,v$session中就查不到这个会话的记录了。
我只好在sqlnet.ora文件中设置sqlnet.expire_time为2分钟,暂时解决这个问题
但是我现在找不到这个问题的原因(难道是bug?),已经困扰我几天了,请各位帮忙分析一下,感激不尽!
以下是客户端的tnsnames.ora文件内容:
ORCL_CFT =
& &(DESCRIPTION =
& && &(ADDRESS_LIST =
& && && &(ADDRESS = (PROTOCOL = TCP)(HOST = 219.153.39.220)(PORT = 1521))
& && &)
& && &(CONNECT_DATA =
& && && &(SERVER = DEDICATED)
& && && &(SERVICE_NAME = orclrun)
& && &)
& &)复制代码
论坛徽章:59
alert log或者listener,sqlnet log有什么东西吗
论坛徽章:1
alter log 没有异常
listener 也就一条连接的记录,什么都没有了
论坛徽章:2
看防火墙上是否有TCP空闲连接的时间限制。
可以在局域网内找台机器,绕过防火墙直接连接数据库,对比看看
论坛徽章:1
mike79 发表于
看防火墙上是否有TCP空闲连接的时间限制。
可以在局域网内找台机器,绕过防火墙直接连接数据库,对比看看
防火墙上设置的会话空闲时间是半小时。
局域网连接不会出现这个问题。
认证徽章论坛徽章:64
客户端(应用服务器)----internet----防火墙--(局域网)--数据库服务器
会不会是客户端的Application自己断开的呢?
有的程序写法会断开连接池...呵呵
求职 : 论坛徽章:3
局域网没问题,外网有问题,看是不是在外网ip上面做了限制。
论坛徽章:51
应用服务器的client是oracle的client还是?
看看客户端的设置有什么特别的吗~这个不是防火墙就是客户端的问题~oracle本身肯定没问题看你的描述
论坛徽章:2
cn_sniper1982 发表于
防火墙上设置的会话空闲时间是半小时。
局域网连接不会出现这个问题。
局域网连接没这个问题,通过防火墙就有问题,那么问题肯定在网络设备上。
往这个方向去查,不要太相信那些认为没问题的设置,问题往往就出在那。
论坛徽章:10
这玩意和硬墙有关系吧 跟oracle关系不大
itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有
北京市公安局海淀分局网监中心备案编号:10 广播电视节目制作经营许可证:编号(京)字第1149号