Java OracleDB连接第一次耗时太长

iam*_*edu 12 java redhat oracle11g

我在连接到Oracle数据库时遇到问题,需要很长时间(约5分钟),并发送以下显示的异常.大多数情况下,在第一个错误之后,同一进程的下一个连接正常工作.

它是RHEL 6机器,具有两个不同的网络接口和IP地址.

注意:我没有使用类似的URL:"jdbc:oracle:thin:@xxxx:yyy,它实际上是:"jdbc:oracle:thin:@xxxx:yyyy:zzz.SID不缺,对不起:(

这大致是我孤立的:

bin/java -classpath ojdbc6_g.jar -Djavax.net.debug = all -Djava.util.logging.config.file = logging.properties

Class.forName ("oracle.jdbc.OracleDriver")
DriverManager.getConnection("jdbc:oracle:thin:@xxxx:yyyy", "aaaa", "bbbb")
Run Code Online (Sandbox Code Playgroud)

错误StackTrace:

java.sql.SQLRecoverableException: IO Error: Connection reset
        at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:533)
        at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:557)
        at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:233)
        at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:29)
        at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:556)
        at java.sql.DriverManager.getConnection(DriverManager.java:579)
        at java.sql.DriverManager.getConnection(DriverManager.java:221)
        at test.jdbc.Main(Test.java:120)
Caused by: java.net.SocketException: Connection reset
        at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:113)
        at java.net.SocketOutputStream.write(SocketOutputStream.java:153)
        at oracle.net.ns.DataPacket.send(DataPacket.java:248)
        at oracle.net.ns.NetOutputStream.flush(NetOutputStream.java:227)
        at oracle.net.ns.NetInputStream.getNextPacket(NetInputStream.java:309)
        at oracle.net.ns.NetInputStream.read(NetInputStream.java:257)
        at oracle.net.ns.NetInputStream.read(NetInputStream.java:182)
        at oracle.net.ns.NetInputStream.read(NetInputStream.java:99)
        at oracle.jdbc.driver.T4CSocketInputStreamWrapper.readNextPacket(T4CSocketInputStreamWrapper.java:121)
        at oracle.jdbc.driver.T4CSocketInputStreamWrapper.read(T4CSocketInputStreamWrapper.java:77)
        at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1173)
        at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:309)
        at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:200)
        at oracle.jdbc.driver.T4CTTIoauthenticate.doOSESSKEY(T4CTTIoauthenticate.java:404)
        at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:430)
        ... 35 more
Run Code Online (Sandbox Code Playgroud)

这里有一个非常详细的日志:http ://pastebin.com/MMFKU26z这里GET STUCK代表5分钟的等待时间

Rya*_*yan 24

您可能遇到了Oracle JDBC驱动程序的问题,该驱动程序默认在Linux上使用阻塞随机数生成器.尝试使用以下参数运行Java:

-Djava.security.egd=file:/dev/./urandom
Run Code Online (Sandbox Code Playgroud)

或者,您可以启动一个守护进程来提供随机数生成器.Linux"rngd"守护进程就是一个例子.

资料来源: