Java getConnection к базе данных Oracle в UNIX не работает или занимает намного больше времени, чем в Windows - PullRequest
0 голосов
/ 07 сентября 2011

У меня действительно большая проблема!Я открываю соединение с базой данных оракула с помощью «DriverManager.getConnection (url, properties)».На машинах UNIX (в настоящее время на ВМ) возникает проблема: 99% времени требуется минутам, чтобы функция вернула соединение.Я увеличил тайм-аут соединения оракула, чтобы не получить исключение SQLException, но для установления соединения требуется до 3 минут.На моей машине с Windows соединение возвращается менее чем за 1 секунду.

telnet к серверу + порт работает, ping успешно, traceroute выглядит хорошо.Я также пробовал с нескольких виртуальных машин или из разных баз данных на разных физических машинах.

Я использую драйвер JDBC "ojdbc6-11.2.0.2.0.jar".идея?

Ответы [ 2 ]

2 голосов
/ 02 февраля 2017

Через долгое время мы разобрались в проблеме. Драйвер JDBC Oracle заблокирован в точке считывания уникального идентификатора. После настройки ВМ Аргумент

-Djava.security.egd = файл: / DEV / urandom

мы могли бы гарантировать, что всегда получим UniqueID в надлежащее время. К сожалению, по умолчанию / dev / random генерирует uniqueid, если на машине достаточно энтропии, которая часто отсутствует на виртуальных машинах.

Может быть, это поможет некоторым из вас однажды.

1 голос
/ 07 сентября 2011

Это немного странно, но это может быть ОБРАТНАЯ проблема DNS.

Если ваш сервер Oracle работает на Unix, попробуйте следующее:

$ host IP_ADDRESS_OF_WIN_MACHINE
$ host IP_ADDRESS_OF_LINUX_MACHINE

Проверьте, есть ли что-то другоена двух разрешениях имен.Если это так, то может быть так, что попытка выполнить обратный поиск DNS на LINUX IP занимает слишком много времени.

Это случилось со мной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...