Java OracleDB连接第一次花费的时间太长
我在连接到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 堆栈跟踪错误:Java OracleDB连接第一次花费的时间太长,java,oracle11g,redhat,Java,Oracle11g,Redhat,我在连接到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.n
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
java.sql.SQLRecoverableException:IO错误:连接重置
位于oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:533)
位于oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:557)
位于oracle.jdbc.driver.T4CConnection(T4CConnection.java:233)
位于oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:29)
位于oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:556)
位于java.sql.DriverManager.getConnection(DriverManager.java:579)
位于java.sql.DriverManager.getConnection(DriverManager.java:221)
位于test.jdbc.Main(test.java:120)
原因:java.net.SocketException:连接重置
位于java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:113)
位于java.net.SocketOutputStream.write(SocketOutputStream.java:153)
位于oracle.net.ns.DataPacket.send(DataPacket.java:248)
位于oracle.net.ns.NetOutputStream.flush(NetOutputStream.java:227)
位于oracle.net.ns.NetInputStream.getNextPackage(NetInputStream.java:309)
位于oracle.net.ns.NetInputStream.read(NetInputStream.java:257)
位于oracle.net.ns.NetInputStream.read(NetInputStream.java:182)
位于oracle.net.ns.NetInputStream.read(NetInputStream.java:99)
位于oracle.jdbc.driver.T4CSocketInputStreamWrapper.readnextPackage(T4CSocketInputStreamWrapper.java:121)
位于oracle.jdbc.driver.T4CSocketInputStreamWrapper.read(T4CSocketInputStreamWrapper.java:77)
位于oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1173)
位于oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:309)
位于oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:200)
位于oracle.jdbc.driver.T4CTTIoauthenticate.doosskey(T4CTTIoauthenticate.java:404)
位于oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:430)
…还有35个
这里有一个非常详细的日志记录发生了什么:
此处显示GET Stick的行表示5分钟的等待时间。查看连接字符串时,似乎缺少Oracle服务名称或SID。连接字符串应类似于“jdbc:Oracle:thin:@xxxx:yyyy/zzz”,其中
zzz
是SID。您可能还想看看的答案。您可能遇到了Oracle JDBC驱动程序的问题,该驱动程序在Linux上默认使用阻塞随机数生成器。请尝试使用以下参数运行Java:
-Djava.security.egd=file:/dev/./urandom
或者,您可以启动一个守护进程来为随机数生成器提供数据
资料来源:
-Djava.security.egd=file:/dev/./urandom