oracle io错误 the,Oracle JDBC 连接出现 IO 错误: The Network Adapter could not establish the connection...

今天碰到,Tomcat 连 Oracle 数据库时出现如下异常信息,java.sql.SQLRecoverableException: IO 错误: The Network Adapter could not establish the connection。

具体异常信息:

java.sql.SQLRecoverableException: IO 错误: The Network Adapter could not establish the connection

at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:673)

at oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:715)

at oracle.jdbc.driver.T4CConnection.(T4CConnection.java:385)

at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:30)

at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:564)

at java.sql.DriverManager.getConnection(DriverManager.java:571)

at java.sql.DriverManager.getConnection(DriverManager.java:215)

at com.liuqianfei.metademo.OracleMetaDemo1.main(OracleMetaDemo1.java:25)

Caused by: oracle.net.ns.NetException: The Network Adapter could not establish the connection

at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:445)

at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:464)

at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:594)

at oracle.net.ns.NSProtocol.connect(NSProtocol.java:229)

at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1360)

at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:486)

... 7 more

Caused by: java.net.ConnectException: Connection refused: connect

at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)

at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)

at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)

at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)

at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)

at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)

at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)

at java.net.Socket.connect(Socket.java:579)

at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:162)

at oracle.net.nt.ConnOption.connect(ConnOption.java:133)

at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:411)

... 12 more

882f1999fa3c7be04890af1dbb88822f.png

解决办法一

后来在防火墙开了3个端口, 8080, 8009, 8005, 问题搞定。

解决办法二

oracle 的 thin 连接分为两种,一个是 SID,一个是 SERVICE NAME,而这两个的差别就在于服务器如何是配置 SID,还是 SERVICE NAME,配置完数据库后,可以在 C:\oracle\product\12.1.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora 文件中查看详细配置信息:

# Generated by Oracle configuration tools.

LISTENER_ORCL =

(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

ORACLR_CONNECTION_DATA =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

)

(CONNECT_DATA =

(SID = CLRExtProc)

(PRESENTATION = RO)

)

)

ORCL =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl)

)

)

A,如果是SID模式,JDBC连接数据库的形式是

String url = "jdbc:oracle:thin:@//192.168.1.100:1521:orcl";

B,如果是SERVICE 模式,JDBC连接数据的形式是

String url = "jdbc:oracle:thin:@//192.168.1.100:1521/CLRExtProc";

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值