java.sql.SQLException: Io 异常: The Network Adapter could not
establish the connection 。
异常如下:
org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Io 异常: The Network Adapter could not establish the connection)
at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1225)
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
Caused by: java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:180)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:222)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:335)
主要原因:
1.可能是server.xml文件的DataSource配置出错。
(1).如果用到的是本机上的数据,本地数据源里的部分配置为: username=”pcisv62″ password=”11″ url=”jdbc:oracle:thin:@localhost:1521:orcl”
(2).如果用到的是服务器上的数据,则数据源里的部分配置为: username=”pcisv62″ password=”11″ url=”jdbc:oracle:thin:@dbserver:1521:corev6″
(dbserver为服务器的名字,corev6为服务器上Oracle的SID)
2.可能是oracle的tnsnames.ora文件配置出错。
oracle的安装目录E:\oracle\ora92\network\admin下的tnsnames.ora:
本地配置:
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 主机名)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)
或服务器配置:
COREV6_DBSERVER =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = dbserver)(PORT = 1521))
)
(CONNECT_DATA =
(SID = COREV6)
(SERVER = DEDICATED)
)
)
或许:
1、IP错误:
在设置URL时错误,例如:jdbc:oracle:thin:@192.168.1.80:1521:orcl
数据库服务器是否正确:ping 服务器IP是否通畅。ping不通则将URL更改正确。
端口号是否正确。
进行一下操作:在DOS上键入sqlplus,检查oracle是否开启
一切正常则执行下面第2步。
2、防火墙
如果机器上安装有放火墙,可能是服务器端口号屏蔽而造成的。后来在防火墙开了3个端口,
8080, 8009, 8005, 问题搞定。如果不行关闭防火墙后,尝试重新连接。
仍然不行则执行第3步。
3、数据库监听器未启动 修改PC上注册表中的ImagePath值。
下面以ORACLE数据库为例
重新手动启动数据库监听:
1:开始 → 运行→ 输入CMD→ 进入DOS命令提示界面
d:>lsnrctl
LSNRCTL> status
或者
LSNRCTL> start
如果是类似图片中的信息
恭喜,你的问题已经查找出来,是数据库监听器未启动而造成的。
以下是手动启动数据库的方法:
在运行处执行regedit进入注册表到
开始 →运行→ regedit
按下面路径
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OracleOraHome90TNSListener
找到OracleOraHome90TNSListener(我用的是Oracle9i 其他的版本的应该是OracleOraHomexxxTNSListener)
找到之后你会发现ImagePath关键值不存在了,创建它:(存在的话,点击修改,修改方法在下文有介绍)
右键单击,弹出菜单选择新键(N)→字符串值(S)
将其命名为ImagePath
选中ImagePath点右键,选中修改:
在值中输入你的Oracle安装目录\ora90(其他版本对应的是oraxxx目录)\bin\tnslsnr
确定后退出注册表:
再在DOS命令下键入start
如果出现下面画面,恭喜你,监听器启动成功:
关闭DOS,启动你的程序进行测试,应该恢复正常了。
以上就是3中常见的引发The Network Adapter could not establish the connection 异常的原因。