通行证: 用户 密码 域名空间  下载中心 社区论坛 信息公告 MY小屋
联系我们
设为首页
加入收藏

 

QQ,ASP,PHP,JSP,XML,SQL,.Net,编程 程序 网页图象 建站经验 私服
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿
论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图
专题 | 应用软件 | 聊天通讯 | Q Q 专栏 | 建站经验 | 在线工具 | 站长Club | 注 册 表 | 旧版
社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务
当前位置:首页>>数 据 库>>Oracle>>正文 新版上线![旧版]
注:打开慢时请稍等

都是防火墙惹的祸--Oracle连接老断

http://www.iyit.net  日期:2006-5-30 11:34:24  来源:网络转载   点击:
参加讨论】都是防火墙惹的祸--Oracle连接老断:


 
忙乎了将近两周,终于搞定了。从一开始怀疑是网络的问题,后来觉得不是,可能是应用的问题,发现很可能是数据库的问题,最后真相大白又回到原点,原来是网络防火墙在捣鬼。行为非常诡异,怎么想也想不明白,我都没多少信心准备放弃了,没想到原因竟然如此简单。

事情是这样的,我们开发的系统需要保持和Oracle数据库的持续连接,如果因为网络或者其它原因非正常断开的话,必须重新启动应用程序,否则将会出错无法使用。在测试环境运行很稳定,一搬到机房机架上就出现奇怪的现象,第二天早上来看服务器,所有的数据库连接都断掉了,有时候白天也断,而且一个应用断的次数特别频繁,其它应用白天不怎么断。因为我们的应用服务器网段是192.168.x.x,而数据库服务器在10.x.x.x网段,刚开始我怀疑是中间的路由器有这种问题,如果网络持续一段时间没有流量自动把网络断开。并且和网管说了这事,他说不可能有这种问题。因为我们以前做过另外一个系统也存在这种问题,好像是这个原因,不过后来怎么解决的不是很清楚了。找知情人士了解后原来是数据库网卡的原因,从应用服务器ping数据库服务器一个晚上有几次丢包现象,换数据库服务器网卡就没事了。
于是我们用ping -t server-IP > ping.txt 来检查网络是否有丢包现象,持续几个晚上都没有一次丢包的,网络状况非常好。我检查网卡属性的电源属性卡上有一个复选框是否允许计算机闲置时关闭该设备,默认是选中的。于是我怀疑是网卡被计算机关掉了,于是所有连接均断开了,但是白天之断开一个解释不同啊。应用程序有问题?为什么测试环境中没发现问题?有可能是某一块数据有问题,他们测试时乱调图碰到雷区了,于是我检查所有的数据,没有那种问题。真是让人费解,而且我持续ping,网卡也不可能被关闭的啊。
有可能是某个端口关闭了,于是我们写了一个小程序,打开一个数据库连接,每隔一定时间查一下数据库,保持端口是打开的。问题依旧存在,这个小程序的连接没断,其它的全断了。

是什么原因呢?其实现在想起来问题已经很明朗了,但是当时就是不明白怎么回事。而且那天老是打电话过来,连接又断了,上午断两次,下午又断了两次。一整天我们都没想出什么好办法,怎么会这么变态,为什么会只断掉一个?我当时怀疑是我们应用程序有点问题,在绞尽脑汁想办法怎么检测应用程序的错误。
为了检测断开的规律,我写了两个触发器,用户登陆时网一个表中插入一条记录,注销是把注销时间填入表中。后来发现根本一点用也没有,非正常退出时根本不会触发LOGOFF事件,白忙乎了!

下班了,骑车回家,突然想到一个办法,定时激活连接,保持活动状态看它还断不断。很多好的想法都是在我离开办公室回家的路上想出来了,在办公室怎么想也想不出来,离开办公室就想出了。第二天马上行动,果真有效,连接没有再断过。但是这样不是个办法,为什么连接一段时间不活动就会被杀掉了呢?在我们的应用程序中看不到原因,只是说连接丢失,在sqlplus中提示说end-of-file communication channel。
今天一整天我都在网上狂找相关内容,oracle connection lost, oracle session lost,oracle session timeout等等,看到也有人碰到类似我这种情况的人,但是没有好的办法。我把Oracle net service得文档翻了一遍,看到sqlnet.ora有一个关于超时的参数SQLNET.EXPIRE_TIME简直如获至宝,后来发现原来没用。服务器端自动杀掉客户端进程的情况还可以通过Profile来实现,限制IDLE_TIME,但是我检查数据库根本没有相关的设置。

好不容易找到一溜很长的帖子,也是关于我这种问题的,最后他说解决了是防火墙的问题。但是以前我印象中防火墙只是针对端口的,怎么会保持某些活动连接,杀掉不活动的连接呢?后来我去网上查了查防火前的有关原理,好象它能处理到TCP/IP连接一级,也就是可以只断开某一个不活动的连接。但我还是不很确定,但是我知道在数据库服务器和应用服务器之间有防火墙,把机器搬过去的那天,能ping通数据库服务器,但是不能连数据库,后来网管把Oracle数据库的两个端口打开就可以了。
我们找到网管,他说是有这种问题,防火墙就是这样的,如果一个连接长时间不活动就会自动杀掉的。如果不这样的话,防火墙的内存很快会用完,还说我们违背了TCP/IP的设计原则。但是没办法,我们的应用程序需要持续而稳定数据库连接,只能把我们的应用服务器放到防火墙后面去。于是他把我们的服务器跳了线,变成一个网段的,从此不再有连接断开的问题了。终于彻底解决这个问题,长舒一口气!!!

其实主要原因还是网络规划有问题,怎么能把我们应用服务器和数据库服务器隔开呢?


编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部]
上一篇:Oracle培训教材
下一篇:SERVER数据转换ORACLE问题
转载请注明来源:www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

 相关文章
定位对手 巧用天网防火墙查对方IP地址 网络防火墙与防范溢出策略 Windows Server 2003 防火墙
利用IP地址欺骗突破防火墙(2) 利用IP地址欺骗突破防火墙(1) 防火墙封阻应用攻击的八项技术(2)
防火墙封阻应用攻击的八项技术(1) 网络安全讲座之三:防火墙技术(6) 网络安全讲座之三:防火墙技术(5)
网络安全讲座之三:防火墙技术(4) 网络安全讲座之三:防火墙技术(3) 网络安全讲座之三:防火墙技术(2)
网络安全讲座之三:防火墙技术(1) Linux防火墙配置基础篇 上网不用防火墙 一招克死所有的病毒
ID须小心! 巧用防火墙保护网游账号 FreeBSD连载(80):构建防火墙 FreeBSD连载(75):防火墙技术
构建Linux系统下U盘路由器 防火墙(图) 在Linux代理服务器上设置防火墙 Win 2003自带防火墙的设置
windows 2003自带防火墙的设置 巧用Windows 2003构筑校园网服务器防火 利用IP地址欺骗突破防火墙技术解析
最新更新 热点排行 推荐新闻
脱机备份与恢复实战
Oracle 9i的备份和恢复机制
存储管理——深入Oracle 9i核心
如何执行实例程序
研究生管理信息系统的开发流程
MYSQL列类型参考
获得和安装samp_db样例数据库分发包
在Windows上安装MySQL
获得和安装MYSQL软件
安全网络访问mysql数据库服务器
更新MySQL数据库服务
运行多个MYSQL服务器
优化MYSQL服务器
使用MYSQL备份数据恢复
备份和拷贝MYSQL数据库
Oracle 9i锁
为数据库的表自动生成行号--为分页打好
Oracle中关于逻辑备份与恢复
脱机备份与恢复实战
Oracle 9i的备份和恢复机制
优秀公益广告作品欣赏(8)
java数据类型转换
Windows XP专业版IIS连接数的更改
优秀公益广告作品欣赏(7)
QQ最新版下载 2006 beta2 体验新感受 
Office2007简体中文版浮出水面 美图抢
WEB服务器配置全攻略(三)
优秀公益广告作品欣赏(6)
优秀公益广告作品欣赏(4)
优秀公益广告作品欣赏(1)
传统计算机病毒传播能力破坏性在提高
内存为何有“两面性”
AMD水货盒装CPU识别方法
IP地址资源2012年枯竭 部署IPv6很紧迫
古老问题有新解:世上先有鸡蛋后有鸡
Dreamweaver MX 2004从零开始(1)
利用CSS改善网站可访问性
如何让MM的脸通透可人
msn8.0下载
ASP 五大高效提速技巧
 友情链接
设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyrights © 2004-2006 iYiT.Net All Rights Reserved.
网站合作、广告联系QQ:147007642、466949678
易特网络技术 点击这里给我发消息