1

我们遇到的问题是,我们的 Java 应用程序连接到 Oracle 12c R1 RAC 时出现随机连接超时。两者都在 Solaris 11 上。

引起:java.sql.SQLRecoverableException: IO 错误:网络适配器无法
在 oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:743)建立连接
...
...
引起:java.net。 SocketTimeoutException:在 java.net.PlainSocketImpl.socketConnection(NativeMethod) 处连接超时

这只是随机发生的,也许每三次运行一次?

任何帮助表示赞赏!!!!谢谢!

4

1 回答 1

0

您使用的是哪个版本的 JDBC 驱动程序?如果您使用的是 12.2.0.1 附带的版本,请将其替换为较新的版本。我们在这里遇到了同样的问题;连接随机失败。但这根本不是超时。消息“java.io.InterruptedIOException: Socket read timed out”是完全错误的。

真正的问题是连接系统调用被中断,正如您从 dtrace 探测器中看到的那样

 23708/2:  connect(0x8, 0xFFFFFFFF7F2EDD54, 0x20)                = -1 Err#4
 23708/2:  lwp_sigmask(0x3, 0x4, 0x40)           = 0xFFFFFFFF 0
 23708/2:  setcontext(0x1, 0xFFFFFFFF7F2ED2D0, 0x0)              = 0 0
 23708/2:  connect(0x8, 0xFFFFFFFF7F2EDD54, 0x20)                = -1 Err#149

请从 Oracle 客户端 18.3 或 19.3 尝试 ojdbc.jar

还有一个针对 12.2.0.1 未发布错误 25977056 的补丁:AC:TRANSPORT_CONNECT_TIMEOUT 的单位已更改,没有限定符。

于 2019-05-21T12:09:06.857 回答