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

开门见山,最快捷的解决方案: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采用非阴塞式生成随机数,性能很好,不会产生超时)

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

时间: 2024-10-12 22:26:49

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

java连接oracle数据库,关闭连接出现异常:java.sql.SQLRecoverableException: IO Error: Connection reset

java.sql.SQLRecoverableException: IO Error: Connection reset at oracle.jdbc.driver.T4CConnection.logoff(T4CConnection.java:612) at oracle.jdbc.driver.PhysicalConnection.close(PhysicalConnection.java:5094) at com.sms.send.StartTaskNew.run(SmsSend.java

Linux 使用命令执行java -jar xxx.jar 在连接数据库时发生 java.sql.SQLRecoverableException: IO Error: Connection reset 错误

一.问题描述 1. jar 包在未打包之前执行没有问题 2.应用启动慢,并且此问题是一个偶尔性质的,也就是时有时无, 3.数据库连接数够用 4.发生错误的该连接是一个新的连接,不是服务端关闭导致的问题 二.问题原因 在Linux操作系统中,有一个特殊的设备文件,可以用作随机数发生器或伪随机数发生器. /dev/random 在读取时,/dev/random设备会返回小于熵池噪声总数的随机字节./dev/random可生成高随机性的公钥或一次性密码本.若熵池空了,对/dev/random的读操作将

在linux上通过JDBC连接ORACLE 时总是出现 java.sql.SQLRecoverableException: IO Error: Connection reset 的问题

如标题所述,经过和度娘沟通了不知道多少遍最后看一篇文章解决, 我是通过执行jar来操作DB的.所以在命令中加了一个参数( 加粗,红色) eg: $JAVA_EXE -Djava.security.egd=file:///dev/urandom  -jar  xxxxxxx.jar 最终测试OK 参考的文章出处是:http://www.feexion.com/?p=247

解决weblogic错误:java.sql.SQLRecoverableException: IO Error: Broken pipe

首先说一下系统基础架构: 服务器:weblogic11g集群 数据库:oracle数据库Rac 出错信息: 1.java.sql.SQLRecoverableException: Closed Connection 2.Test "SELECT 1 FROM DUAL" set up for pool "mds-soa" failed with exception: "java.sql.SQLRecoverableException: IO Error:

java.sql.SQLRecoverableException: IO 错误: Socket closed

今天weblogic的alllog日志报了很多socket closed的错误. ### Cause: org.hibernate.exception.JDBCConnectionException: IO 错误: Socket closed at com.gg.corm.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:23) ~[gg-top-corm-3.1.2-20141209.jar:na] at com.g

Linux环境下Java应用性能分析定位-CPU使用篇

1     CPU热点分析定位背景 CPU资源还是很昂贵的,为了深刻感受到这种昂贵,间下图当前CPU的资源售价: 所以对于程序猿们来说,需要让程序合理高效的使用CPU资源.利用有限的CPU资源来解决完成我们面对的实际问题,这就是为什么我们要尽可能优化程序. 不篇从微观层面展开介绍说明,不做宏观层面的介绍(譬如数据中心级容量监控,管理调度(OpenStack,Kubernates等)以及迁移(手动,自动,冷迁,热迁)). 本篇将以倒推式方法组织目录结构.出现了问题怎么办,以及为什么要这样做,以及后

Linux环境下java环境搭建一 JDK搭建

第一步:下载jdk压缩文件 第二步:上传到家目录下的soft目录下,可以采用winscp,此处下载的是.tar.gz文件 第三步:解压压缩文件,并在/usr/local目录下创建一个jdk7的目录,并把之前解压的文件移动到这个目录 #tar -zvxf  jdk-7u80-linux-x64.tar.gz #mv "解压的到的文件夹名称"  /usr/local/jdk7 第四步:修改/etc/profile配置文件 在配置Linux中的环境变量PATH时, 分割使用冒号在Linux中

Linux环境下java开发环境搭建二 tomcat搭建

第一步:下载安装包并解压 # tar zxvf 压缩包名 第二步:把解压出的文件移动到/usr/local/tomcat7中 #mv 解压出来的文件夹  /usr/local/tomcat7 第三步:配置环境变量 # vim /etc/profile 在环境变量中加入如下变量 export TOMCAT_HOME=/usr/local/tomcat export CATALINA_HOME=/usr/local/tomcat 第四步:放行 8080 端口,如果自己开发的应用是别的端口号,也可以放

LINUX系统下Java和Scala的环境配置

LINUX系统下Java和Scala的环境配置 最近,笔者在研究一个有关“自然语言处理”的项目,在这个项目中,需要我们用Spark进行编程.而Spark内核是由Scala语言开发的,所以在使用Spark之前,我们必须配置好Scala,而Scala又是运行在JVM上的,所以在配置Scala之前,先要配置好JDK.下面是我个人的一些总结. 我是在Win7系统下开的虚拟机,虚拟机的系统是CentOS7,在创建虚拟机完成后,它会自带一个OpenJDK,我的版本是这样的: 但是因为最开始不了解这个情况,所