Oracle 12C RAC в Solaris 11 - время ожидания случайного подключения

У нас возникла проблема, из-за которой из-за тайм-аута случайного соединения наше приложение Java подключается к Oracle 12c R1 RAC. Оба на Солярисе 11.

Вызвано: java.sql.SQLRecoverableException: IO Error: Сетевой адаптер не смог установить соединение
в oracle.jdbc.driver.T4CConnection.logon (T4CConnection.java:743)
...
...
Вызвано: java.net.SocketTimeoutException: истекло время соединения на java.net.PlainSocketImpl.socketConnection(NativeMethod)

И это происходит только случайно, может быть, один раз в три запуска?

Любая помощь приветствуется!!!! Спасибо!

0 ответов

Какую версию драйвера JDBC вы используете? Если вы используете тот, который поставляется с 12.2.0.1, замените его на более новый. Здесь у нас была такая же проблема; подключения случайно не работают. Но это совсем не тайм-аут. Сообщение "java.io.InterruptedIOException: истекло время ожидания чтения сокета" просто неверно.

Реальная проблема заключается в том, что системный вызов connect прерывается, как вы можете видеть из зондов 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

Попробуйте ojdbc.jar из Oracle Client 18.3 или 19.3

Также существует патч для неопубликованной ошибки 12.2.0.1 25977056: AC: ЕДИНИЦЫ ДЛЯ TRANSPORT_CONNECT_TIMEOUT ИЗМЕНЕНЫ БЕЗ КВАЛИФИКАЦИИ.

Другие вопросы по тегам