четверг, 21 марта 2013 г.

ADMIN состояние Oracle WebLogic серверов: возможные причины

В ходе своей работы нередко сталкиваюсь с ситуацией, что в результате очередной перезагрузки управляемых серверов домена Oracle WebLogic Server, с развернутым на них источником данных Data Source и подключенным к схеме в Oracle Database, сервера переходят в состояние ADMIN и ADF приложение при обращении к нему в браузере возвращает 500-ую ошибку.

По моим наблюдениям такая ситуация нередко может происходить из-за того, что истек срок действия пароля пользователя для той схемы к которой осуществляется подключение через источник данных Data Source (ошибка ORA-28001 The password has expired). Таким образом, при  запуске управляемых серверов обнаруживается что Data Source не валиден и управляемые сервера переходят в состояние ADMIN (состояние при котором сервер запущен, но доступен только для административных манипуляций).

Особенности ADMIN режима:
  1. Консоль администрирования доступна;
  2. Экземпляр сервера принимает запросы от пользователей с привилегиями администратора. Запросы от других пользователей отклоняются;
  3. Развертывания и повторные развертывания приложений доступны, однако изменения вступают в силу только после того, как экземпляр перейдет в состояние RUNNING
Подробнее о состояниях экземпляров серверов Oracle Weblogic Server можно узнать здесь:

Причиной обозначенной выше ситуации может быть то, что в профиле DEFAULT в Oracle Database, который часто назначается пользователям по умолчанию, параметр PASSWORD_LIFE_TIME имеет значение 180 дней, по истечении которых пароль пользователя становится не валиден и авторизация заканчивается неудачно. Для того, чтобы срок действия пароля не истекал,  необходимо отредактировать профиль DEFAULT, например подключившись пользователем SYSTEM в SQLPlus, и выполнить следующее:

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

Вообще при запуске Oracle WebLogic серверов с развернутым источником данных происходит попытка инициировать пул соединений (Connection Pool). Если этого сделать не удалось, то запуск серверов заканчивается неудачно и они переходят в состояние ADMIN. Один из возможных вариантов избежать этого - присвоить параметру InitialCapacity источника данных Data Source значение 0, таким образом WebLogic не будет пытаться создавать объект JDBC Connection во время запуска, что позволит избежать перехода серверов в состояние ADMIN.



Примечание: Существует возможность принудительно перевести сервера Oracle WebLogic в состояние RUNNING (из состояния ADMIN). Для этого необходимо в консоли администрирования Oracle WebLogic отметить управляемые сервера и нажать на кнопку Resume. Однако это не является решением проблемы а лишь устраняет её "симптомы".



2 комментария:

  1. Реализуем интеграционную шину, обеспечивающую связь с информационными системами, разбросанными по всей России. Так как качество каналов связи иногда оставляет желать лучшего, то постоянно сталкиваемся с проблемой запуска серверов в ADMIN-режиме, просто потому что в момент запуска не удалось установить соединение с какими-нибудь СУБД.

    Если просто жестко сделать RESUME, то это чревато тем, что некоторые источники данных просто не создадутся и не зарегистрируются в JNDI-дереве, соответственно при работе приложения их невозможно будет найти.

    ОтветитьУдалить
  2. Да, если СУБД стала доступна после того как запуск серверов закончился неудачно и они перешли в ADMIN состояние, то основываясь на собственном опыте замечал, что попытка сделать RESUME не приводит источники данных в работоспособное состояние и запуск приложения завершается с ошибкой. Как вариант – перезагрузка серверов.

    ОтветитьУдалить