异常信息:
    007.png

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

    问题原因:

    连接ORACLE服务器,客户端要生成随机密钥用于客户端认证,linux下JDK默认使用/dev/random,random采用阻塞方式生成随机数,生成的速度很慢,ORACLE服务器会主动reset,并在alert.log中报错:

    1. TNS-12535: TNS:operation timed out
    2. ns secondary err code: 12606
    3. nt main err code: 0
    4. nt secondary err code: 0
    5. nt OS err code: 0
    6. Client address: (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.6.21)(PORT=33460))
    7. WARNING: inbound connection timed out (ORA-3136)

    解决方案:

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

    IO Error: Connection reset异常参考文章