码迷,mamicode.com
首页 > 数据库 > 详细

ojdbc在linux环境下 java.sql.SQLRecoverableException: IO Error: Connection reset 的问题

时间:2019-08-26 15:01:21      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:reset   and   lib   客户   生成随机数   str   uid   windows环境   问题   

开门见山,最快捷的解决方案:java -Djava.security.egd=file:///dev/urandom  -jar  xxxxxxx.jar

描述下问题:写了个jar工具,用到了连接池,ojdbc。windows环境一起正常。linux环境下启动关闭两三次后就出现

 java.sql.SQLRecoverableException: IO 错误: Connection reset

查看配置文件和解析问题, 无果。

更换hikari到druid,无果。

使用最新ojdbc包,无果。

无奈搜索一番,找到了原因,解释下出现这个问题的原因:

连接ORACLE服务器,客户端要生成随机密钥用于客户端认证,JDK默认使用/dev/random,random采用阻塞方式生成随机数,生成的速度很慢,ORACLE服务器会主动reset,并在alert.log中报错:
TNS-12535: TNS:operation timed out
    ns secondary err code: 12606
    nt main err code: 0
    nt secondary err code: 0
    nt OS err code: 0
  Client address: (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.6.21)(PORT=33460))
WARNING: inbound connection timed out (ORA-3136)

其他解决方案:

编辑$JAVA_HOME/jre/lib/security/java.security将securerandom.source=file:/dev/random 改为file:/dev/urandom(urandom采用非阴塞式生成随机数,性能很好,不会产生超时)

 

ojdbc在linux环境下 java.sql.SQLRecoverableException: IO Error: Connection reset 的问题

标签:reset   and   lib   客户   生成随机数   str   uid   windows环境   问题   

原文地址:https://www.cnblogs.com/bmwsl/p/11412362.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!