Oracle ORA-28001: the password has expired

Автор: Admin | 24.11.2014
4 комментария | 12 694 views

Перестало работать приложение, использующее СУБД Oracle XE, в логе сообщение об истечении срока действия пароля: ORA-28001: the password has expired. При чем, было неизвестно под каким пользователем коннектится приложение. Но ясно, что искать надо просроченные пароли.

Приконнектиться к базе как супер админ:

conn / as sysdba

Посмотреть пользователей с истекшими паролями:

SQL> SELECT USERNAME,ACCOUNT_STATUS FROM dba_users WHERE ACCOUNT_STATUS LIKE '%EXPIRED%';

USERNAME                       ACCOUNT_STATUS
------------------------------ --------------------------------
DIP                            EXPIRED > LOCKED
ORACLE_OCM                     EXPIRED > LOCKED
DBSNMP                         EXPIRED > LOCKED
APPQOSSYS                      EXPIRED > LOCKED
ORAUSER                        EXPIRED > LOCKED

Стало ясно, что искомый пользователь ORAUSER. Теперь надо его разлочить и сменить\переназначить пароль:

SQL> ALTER USER orauser ACCOUNT UNLOCK;
User altered.
SQL> ALTER USER orauser IDENTIFIED BY newpass;
User altered.

Проверить статус и дополнительно посмотреть дату истечения пароля:

SQL> SELECT USERNAME,ACCOUNT_STATUS,EXPIRY_DATE FROM dba_users WHERE USERNAME LIKE '%ORAUSER%';

USERNAME                       ACCOUNT_STATUS                   EXPIRY_DA
------------------------------ -------------------------------- ---------
ORAUSER                        OPEN                             03-JAN-15

Видно, что учетка работает, но 3 января срок действия пароля снова истечет. Чтобы этого не происходило надо отключить данную возможность. Для этого надо узнать к какому профилю относится пользователь и отключить истечение времени действия пароля для этого профиля:

SQL> SELECT USERNAME,PROFILE from dba_users WHERE USERNAME LIKE '%ORAUSER%';

USERNAME                       PROFILE
------------------------------ ------------------------------
ORAUSER                        ORAPROFILE

SQL> ALTER PROFILE oraprofile LIMIT PASSWORD_LIFE_TIME UNLIMITED;
Profile altered.

Убедиться что все сработало. Поле EXPIRY_DATE должно быть пустым:

SQL> SELECT USERNAME,ACCOUNT_STATUS,EXPIRY_DATE FROM dba_users WHERE USERNAME LIKE '%ORAUSER%';

USERNAME                       ACCOUNT_STATUS                   EXPIRY_DA
------------------------------ -------------------------------- ---------
ORAUSER                        OPEN

Все.

Комментарии к посту “Oracle ORA-28001: the password has expired

  1. VeryVery

    Хорошо, что так примитивно рассказано. Ораклисты скажут, что нужно вспоминать матчасть. А у меня ситуация такая — робот сломался во время торгов на бирже, нужно было за минимальное время решить проблему. Здесь пошагово получилось за 2 минуты…

  2. Александр

    SQL> connect SYSTEM/34PassworD46@127.0.0.1:1521/xe;
    ERROR:
    ORA-28001: the password has expired

    —Истек срок действия пароля
    —Далее просит сменить пароль, меняю пароль сложный
    Changing password for SYSTEM
    New password: —Ввожу мега сложный пароль.
    Retype new password: —Подтверждаю пароль.
    ERROR:
    ORA-01017: invalid username/password; logon denied

    Password unchanged
    SQL>
    —Вываливается ошибка, пароль не изменен! в чем затык не понимаю.

    1. Александр

      Пардоныч хлопцы, вопрос решил у меня видимо, что то с ПК видимо, Выполнить cmd > sqlplus /nolog > и далее все что описывал (короче не работает командная строка).
      Помогла утилита Oracle RUN SQL Command Line, через нее все тоже самое проделал и все сменилось.

  3. Alex

    Автору спасибо, как не хватает статей написанных в таком стиле… без лишних отсылок типа «поищите в гугле». Просто, конкретно и понятно.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *