今天碰到,tomcat 连 oracle 数据库时出现如下异常信息,org.apache.commons.dbcp.sqlnestedexception:cannot create poolableconnectionfactory(io exception : the network adapter could not establish the connection)
今天碰到,tomcat 连 oracle 数据库时出现如下异常信息,org.apache.commons.dbcp.sqlnestedexception:cannot create poolableconnectionfactory(io exception : the network adapter could not establish the connection)
具体错误
java.sql.sqlrecoverableexception: io 异常: the network adapter could not establish the connection
at oracle.jdbc.driver.sqlstatemapping.newsqlexception(sqlstatemapping.java:101)
at oracle.jdbc.driver.databaseerror.newsqlexception(databaseerror.java:112)
at oracle.jdbc.driver.databaseerror.throwsqlexception(databaseerror.java:173)
at oracle.jdbc.driver.databaseerror.throwsqlexception(databaseerror.java:229)
at oracle.jdbc.driver.databaseerror.throwsqlexception(databaseerror.java:458)
at oracle.jdbc.driver.t4cconnection.logon(t4cconnection.java:411)
at oracle.jdbc.driver.physicalconnection.(physicalconnection.java:490)
at oracle.jdbc.driver.t4cconnection.(t4cconnection.java:202)
at oracle.jdbc.driver.t4cdriverextension.getconnection(t4cdriverextension.java:33)
at oracle.jdbc.driver.oracledriver.connect(oracledriver.java:474)
at java.sql.drivermanager.getconnection(unknown source)
at java.sql.drivermanager.getconnection(unknown source)
at chap6.dbutil.getconnection(dbutil.java:14)
at chap6.statementdemo.main(statementdemo.java:15)
java.sql.sqlexception: 驱动错误或连接失败!
at chap6.dbutil.getconnection(dbutil.java:20)
at chap6.statementdemo.main(statementdemo.java:15)
解决办法一
后来在防火墙开了3个端口, 8080, 8009, 8005, 问题搞定
解决办法二
oracle的thin连接分为两种,一个是sid,一个是service name,而这两个的差别就在于服务器如何是配置sid,还是service name,配置完数据库后,可以在
代码如下 复制代码
d:oracleproduct10.2.0db_1networkadmin
目录下查找,tnsnames.ora 文件,看看里面的参数
根据上面的数据配置确认是哪个方式
a,如果是sid模式,jdbc连接数据库的形式是
代码如下 复制代码
string url = jdbc:oracle:thin:@//192.168.10.105:1522:uportal;
请注意在连数据实例的时候,是使用 英文冒号 :
b,如果是service 模式,jdbc连接数据的形式是
代码如下 复制代码
string url = jdbc:oracle:thin:@//192.168.10.105:1522/uportal;
请注意在连数据实例的时候,是使用 英文斜杠 /