java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection



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 异常的原因。