gpt4 book ai didi

Java OracleDB 连接第一次花费太长时间

转载 作者:搜寻专家 更新时间:2023-10-30 21:02:04 27 4
gpt4 key购买 nike

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

这是一台 RHEL 6 机器,有两个不同的网络接口(interface)和 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")

错误堆栈跟踪:

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

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

最佳答案

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

-Djava.security.egd=file:/dev/./urandom

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

来源:

关于Java OracleDB 连接第一次花费太长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14400595/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com