Oracle JDBC: неверное имя пользователя / пароль (ora-01017) - PullRequest
4 голосов
/ 08 декабря 2011

У меня странная проблема с подключением jdbc к серверу базы данных oracle.

На сервере tomcat запущены приложения. Эти приложения используют базу данных оракула. Все приложения используют одинаковые учетные данные.

Приложения работают нормально весь день. Ночью нет активности. Утром мы получаем несколько (2 или 3) ошибок ORA-01017 (неверное имя пользователя / пароль), когда приложения пытаются повторно подключиться к базе данных.

Тогда переподключение работает, и приложения будут работать в нормальном режиме.

Это работает в течение нескольких дней (около 5 дней), а затем одного или нескольких блоков приложения! Все попытки переподключения заканчиваются неудачей.

Мы отследили сетевое соединение и обнаружили, что если соединение не удается с ORA-01017 NO CREDENTIALS, где отправлено.

Конечно, никто не касается системы ночью.

Одной из попыток обходного пути является то, что мы перезапускаем сервер Tomcat каждое утро в 6 часов, чтобы очистить каждый кэш или пул соединений. Это не помогает.

Что не так? Есть идеи?

Продолжительный 5-дневный интервал появления полной блокировки (при повторном отдыхе каждый день) выглядит очень странно для меня.

Конфиг :

База данных Oracle 10.2, JDBC Driver 11.2 thin, tomcat 6.0.24, JDK 6, ОС - это окна, некоторые приложения - это диалоги для Avaya Voice Portal 5.0.

Наши собственные (не VP) приложения используют простые соединения (без объединения).


Система изначально была настроена на сервере Windows 2003 с глобальной сетью между сервером и сервером Tomcat.

Теперь система перенесена на сервер linux (CentOS) рядом с сервером базы данных и работает нормально. Нет ORA-01017 больше.

Ответы [ 2 ]

0 голосов
/ 10 февраля 2012

Я бы проверил прослушиватель Oracle и журналы трассировки.Как сказал Аарон Дигулла, это звучит как истощение ресурсов.

0 голосов
/ 19 декабря 2011

Одд. Некоторые идеи:

  1. Зарегистрируйте имя пользователя и пароль в течение нескольких дней, чтобы убедиться, что они верны. Некоторые ошибки в коде могут перезаписать значение, которое вы не ожидаете.

  2. Рассмотрите возможность использования JNDI с пулом соединений, предоставленным Tomcat. DBCP имеет несколько действительно продвинутых опций, чтобы проверить, живо ли соединение и как его снова подключить. После этого вы больше не должны видеть никаких проблем с подключением в своих журналах. Это также повысит безопасность, поскольку ни одному из приложений больше не нужно знать пароль БД.

  3. Это может быть проблема с утечкой ресурсов (происходит, если приложение никогда не возвращает соединение), но тогда я ожидаю другое сообщение об ошибке.

  4. Некоторые базы данных (DB2, H2) позволяют создавать представления, которые делают удаленные таблицы из других баз данных видимыми, как локальные таблицы. Не уверен, что Oracle поддерживает это, но если это так, возможно, имя пользователя / пароль для этой удаленной таблицы неверны.

Также рассмотрите следующие моменты в этом посте: Oracle ORA-01017 подсказки

На первый взгляд, ничто в посте не могло вызвать ваших проблем, но, возможно, какой-то скрипт манипулирует tnsnames.ora (например, распространением новой копии).

Или администратор базы данных отключил всех пользователей на время ежедневного резервного копирования.

...