我们遇到的问题是,从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)
这只是随机发生的,也许每三个运行一次?
感谢您的协助!!!!谢谢!
答案 0 :(得分:0)
您正在使用哪个版本的JDBC驱动程序? 如果您使用的是12.2.0.1随附的版本,请用较新的版本替换。 我们在这里遇到了同样的问题;连接随机失败。但这根本不是一种抑制措施。 消息“ java.io.InterruptedIOException:套接字读取超时”完全错误。
真正的问题是,从dtrace探针可以看到,connect syscall被中断了
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 Client 18.3或19.3中的ojdbc.jar
还有一个针对12.2.0.1未发布的错误25977056的补丁:AC:用于TRANSPORT_CONNECT_TIMEOUT的单元已更改,没有限定符。