Перестало работать приложение, использующее СУБД 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
Все.
Хорошо, что так примитивно рассказано. Ораклисты скажут, что нужно вспоминать матчасть. А у меня ситуация такая — робот сломался во время торгов на бирже, нужно было за минимальное время решить проблему. Здесь пошагово получилось за 2 минуты…
SQL> connect SYSTEM/[email protected]: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>
—Вываливается ошибка, пароль не изменен! в чем затык не понимаю.
Пардоныч хлопцы, вопрос решил у меня видимо, что то с ПК видимо, Выполнить cmd > sqlplus /nolog > и далее все что описывал (короче не работает командная строка).
Помогла утилита Oracle RUN SQL Command Line, через нее все тоже самое проделал и все сменилось.
Автору спасибо, как не хватает статей написанных в таком стиле… без лишних отсылок типа «поищите в гугле». Просто, конкретно и понятно.
Благодарю!
Впервые с этим работаю, всё понятно-получилось!