栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

linux Oracle jdbc连接报 Connection reset的 几种常见问题总结

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

linux Oracle jdbc连接报 Connection reset的 几种常见问题总结

项目场景:

java程序 连接 oracle 数据库


问题描述

连接时日志报 Connection reset
在端口、用户名密码、地址都正确的情况下,java程序连接oracle数据库一直卡死,偶尔会连上几次,但是大部分情况下是连接失败!

java.sql.SQLRecoverableException: IO Error: Connection reset
	at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:467) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0]
	at oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:546) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0]
	at oracle.jdbc.driver.T4CConnection.(T4CConnection.java:236) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0]
	at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0]
	... 360 more
	
Caused by: java.net.SocketException: Connection reset
	at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:115) ~[?:1.8.0_202]
	at java.net.SocketOutputStream.write(SocketOutputStream.java:155) ~[?:1.8.0_202]
	at oracle.net.ns.DataPacket.send(DataPacket.java:210) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0]
	at oracle.net.ns.NetOutputStream.flush(NetOutputStream.java:230) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0]
	at oracle.net.ns.NetInputStream.getNextPacket(NetInputStream.java:312) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0]
	at oracle.net.ns.NetInputStream.read(NetInputStream.java:260) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0]
	at oracle.net.ns.NetInputStream.read(NetInputStream.java:185) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0]
	at oracle.net.ns.NetInputStream.read(NetInputStream.java:102) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0]
	at oracle.jdbc.driver.T4CSocketInputStreamWrapper.readNextPacket(T4CSocketInputStreamWrapper.java:124) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0]
	at oracle.jdbc.driver.T4CSocketInputStreamWrapper.read(T4CSocketInputStreamWrapper.java:80) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0]
	at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1137) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0]
	at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:290) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0]
	at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0]
	at oracle.jdbc.driver.T4CTTIoauthenticate.doOSESSKEY(T4CTTIoauthenticate.java:404) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0]
	at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:385) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0]
	... 160 more
	}

原因分析:

经过oracle官网及网络上的查询情况主要分两种情况

  1. random 生成的随机值不够,大致就是连接oracle数据库时需要从随机熵池中取随机数,而这熵池就是 /dev/random这个文件产生的。而这个文件是阻塞产生熵值的,会导致连接阻塞。
  2. 未在 /etc/hosts文件中添加 本机主机名和IP的映射,且没有dns域名解析有可能会导致获取连接的时间太久。

解决方案:

1.在java应用启动时添加参数

-Djava.security.egd=file:/dev/./urandom

2.在 /etc/hosts文件中添加 本机主机名对应ip的映射

192.168.0.22 hostname
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/874051.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号