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

У нас возникла проблема, из-за которой из-за тайм-аута случайного соединения наше приложение 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)

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

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

1 Ответ

0 голосов
/ 21 мая 2019

Какую версию драйвера 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 ИЗМЕНЕНЫ БЕЗ КВАЛИФИКАТОРА.

...