JDBC连接池偶尔"Io 异常: The Network Adapter could not establish the connection"
错误提示:Io 异常: The Network Adapter could not establish the connection
数据库服务器端环境:HPUX + Oracle9.2 (小机服务能力还是很强的,DB连接数约为300~400)
应用服务器端环境:Windows 2003 企业版 + Tomcat5.0.28
应用连接方式:Java JDBC + dbcp
现象描述:
程序偶尔出现上述异常提示,我的程序内建有连接池重置处理,当出现上述异常后,自动重置连接池,一般能够重新连接上数据库。
排除问题:
1、url连接串之类的问题
2、网络问题
3、其他简单配置问题(生产环境已经运行2年)
怀疑问题:
1、是否服务器连接数不够?(自己做过实验,当应用达到DB最大连接数时的提示为拒绝连接,与此不同)
2、是否其他应用消耗DB服务器资源?(有怀疑,但没有证据,如哪位仁兄遇到类似问题,望不吝赐教)
3、操作系统连接数?(也是怀疑,是否HPUX的连接数不够了,公司的服务保障上去看了,说没有用完,不知哪位仁兄有类似经历)
此问题已经困扰我很久,虽不致使系统瘫痪,但终究是块心病,望早日去之。
------解决方案-------------------- 我随便说上几句.不知道能否有帮助
在内蒙这边项目 也是遇到类似于你这种情况
有一点不同 这边是长时间不操作数据库会出现这个问题
当时结果是,数据库限制了连接时间,
也就是说 长时间不操作就会丢失连接
数据库服务器端环境:HPUX + Oracle10G
------解决方案-------------------- processes参数改大点,比如1000,默认的150是不够。
------解决方案-------------------- 因为当时我们这边生产库不在自己主机上
而是放在其他厂家那边
所以具体的情况也不是很清楚
一样是这个错误
Io 异常: The Network Adapter could not establish the connection
但是当时厂家给的回复就是这个..
当时这边也是不影响正常的程序 但就是后台总报这个错误
后来把数据库迁移到自己的服务器上 这个问题就解决了..
---他们的主机我们没有很大的权限 所以具体他们那边就不清楚了
------解决方案-------------------- 我们这边的数据库是放在两台机器上 做的双机~
例如
136.224.24.71,
136.224.24.78,
应用没有放在同一台机器上
而是在
136.224.24.70
136.224.24.79
做的集群~
应用连接直接访问的双机地址
类似于这样
nmdw =
(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 136.224.24.11)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = 136.224.24.16)(PORT = 1521))(LOAD_BALANCE = yes)(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = nmdw)))
还有一点
我记得 原来总报错的时候 数据库是在单机状态下运行的~
不知道您想知道是不是这些
------解决方案-------------------- nmdw =
(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 136.224.24.71)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = 136.224.24.78)(PORT = 1521))(LOAD_BALANCE = yes)(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = nmdw)))
刚才URL中那两个IP是映射地址
真实地址应该是这个
------解决方案-------------------- 引用楼主 wangqiyy 的帖子: 错误提示:Io 异常: The Network Adapter could not establish the connection
------解决方案--------------------
1.换个网卡试试(经常有这种情况,别说不信邪)
2.JDBC那边有没的例外处理有没有关闭连接?我遇到N次这种情况.
3.DB那边用的是共享模式?如果应用服务器那边用了连接池,DB最好用专用连接.
4.JDBC是不是每个页面,每个程序都会打开一个数据库连接?如果是换成静态的连接,一个应用用户只开一个连接就够了
5.IO,RAM看是否正常
6.看一下DB的警告日志看有没问题
7.查一下DB的等待事件
------解决方案-------------------- 哦,兄弟还没结贴啊,呵
那俺继续说点可能性吧
1.换个高版本的JDBC驱动试试
2.防火墙有没一些对包的控制,最好关了防火墙试试
3.LISTENER.TNS里用的是DNS名还是IP?最好换成IP试试
------解决方案-------------------- 今天遭遇
ORA-12560: TNS: 协议适配器错误 的问题,经过一番努力问题已经解决,与大家共享。
造成
ORA-12560 : TNS: 协议适配器错误的问题的原因有三个:
1.监听服务没有起起来。windows平台个一如下操作:开始---程序---管理工具---服务,打开服务面板,
启动oraclehome92TNSlistener服务。
2.database instance没有起起来。windows平台如下操作:开始---程序---管理工具---服务,打开服务
面板,启动oracleserviceXXXX,XXXX就是你的database SID.
3.注册表问题。regedit,然后进入HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0将该环境变量ORACLE_SI
D设置为XXXX,XXXX就是你的database SID.或者右几我的电脑,属性--高级--环境变量---系统变量--新建
,变量名=oracle_sid,变量值=XXXX,XXXX就是你的database SID.或者进入sqlplus前,在command line下