orcale数据库连接异常(The Network Adapter could not establish the connection)

文章描述了一个在SpringBoot应用中遇到的Oracle数据库连接问题,具体表现为java.sql.SQLRecoverableException,原因是JVM尝试使用不被服务器支持的IPv6协议。解决方案是设置JVM参数-Djava.net.preferIPv4Stack=true,或者在Tomcat服务器配置中添加此参数,强制使用IPv4协议进行连接。
摘要由CSDN通过智能技术生成

项目场景:

今天在springboot里连接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:458)
	at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:546)
	at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:236)
	at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
	at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521)
	at java.sql.DriverManager.getConnection(DriverManager.java:664)
	at java.sql.DriverManager.getConnection(DriverManager.java:247)
	at com.iss.cms.ifpf.common.enums.IfpfBankCodeCodeEnum.main(IfpfBankCodeCodeEnum.java:123)
Caused by: oracle.net.ns.NetException: The Network Adapter could not establish the connection
	at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:392)
	at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:434)
	at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:687)
	at oracle.net.ns.NSProtocol.connect(NSProtocol.java:247)
	at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1102)
	at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:320)
	... 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:350)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:589)
	at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:150)
	at oracle.net.nt.ConnOption.connect(ConnOption.java:133)
	at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:370)
	... 12 more


原因分析:

我试图通过SQL Developer连接,它工作正常。


解决方案:

最后,我解决了这个问题,这个错误是由使用IPv6协议的JVM引起的,而这个协议是网络/ oracle服务器不支持的。
由于我为我的应用程序使用Tomcat服务器,因此向tomcat添加了以下参数
-Djava.net.preferIPv4Stack=true
或者你可以将这个参数作为系统环境变量添加为:
有效名称: _JAVA_OPTIONS
变量值: -Djava.net.preferIPv4Stack=true

源文件https://www.656463.com/wenda/JavaIoycwlspqwfjllj_201

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值