Как продлить срок действия пароля и где следить за его актуальностью?
Давно как-то ставил Oracle 11 себе на виртуальную машину. А сегодня понадобилось работать опять с системой. Попытался подключиться, но мне говорят срок действия пароля истек на пользователя system . Как можно исправить эту проблему? Где надо продлевать пароль и следить за его актуальностью?
Отслеживать
51.6k 201 201 золотой знак 65 65 серебряных знаков 246 246 бронзовых знаков
задан 13 мар 2014 в 8:51
IntegralAL IntegralAL
2,689 5 5 золотых знаков 60 60 серебряных знаков 105 105 бронзовых знаков
с локальной машины можно всегда зайти под встроеной учетной записью системного администратора (as sysdba): community.oracle.com/thread/347053
13 мар 2014 в 8:56
а что с учетными записями пользователей? Мне нужно через system зайти, а не лишь бы только зайти в базу.
13 мар 2014 в 9:06
а дальше как-то так: docs.oracle.com/cd/B19306_01/server.102/b14200/…
13 мар 2014 в 9:14
@jmu, то что вы указали в первом сообщение будет работать для 11g? Не поверю что в оракле такая дыра была, чтобы без пароля входить под админом. гранты и привилегии временные что ли? Почему пароли устаревают? Вопросы без ответов.
13 мар 2014 в 9:33
> Не поверю что в оракле такая дыра была, чтобы без пароля входить под админом. проблема не в том что системный администратор может войти в субд а в в этом: > потому что любой злоумышленник может сесть за компьютер админа если вы не можете защитить пк от злоумышленника парится по поводу пароля на субд бесполезно
14 мар 2014 в 23:37
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Надо зайти на сервер БД под уч. записью, входящей в группу администраторов БД,
обычно dba (на Windows ORA_DBA ). Если на сервере несколько инстанций БД, то надо убедится, что переменные окружения ORACLE_SID , ORACLE_HOME установлены правильно.
Зайти в SQL*Plus, посмотреть, у кого истёк пароль, продлить его (по умолчанию на 180 дней):
$ sqlplus / as sysdba SQL> select username, account_status, lock_date, expiry_date 2 from dba_users where account_status like 'EXPIRED%'; USERNAME ACCOUNT_STATUS LOCK_DATE EXPIRY_DATE ---------------- ---------------- --------------- --------------- ANONYMOUS EXPIRED & LOCKED 20190417T020418 20190417T020418 HR EXPIRED & LOCKED 20200615T202643 20200615T202643 SQL> alter user hr identified by hr account unlock; User altered.
Собрание заметок из опыта работы с УКМ
В командной строке выполняем такие команды, в конце жмыкаем энтер (если в строке есть ; значит тоже её пишем):
Синим, что может написать система. Черным, что мы пишем. (в скобках мой коментарий, его не пишем)
C :\ Documents and Settings \Администратор> Set nls _ lang = russian _ cis . ru 8 pc 866 (только для оракл 11, что бы видеть читабельные надписи)
C :\ Documents and Settings \Администратор > sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 — Production on Tue May 31 16:38:51 2011
Copyright (c) 1982, 2010, Oracle. All rights reserved.
SQL> conn sys/
ORA-28001: the password has expired
Изменение пароля для sys
Новый пароль qqq (набранные символы не будут отображаться)
Повторите новый пароль: qqq (набранные символы не будут отображаться)
Пароль изменен
SQL>select username,ACCOUNT_STATUS,EXPIRY_DATE from dba_users; (смотрим у кого просрочен пароль)
USERNAME ACCOUNT_STATUS EXPIRY_D ------------------------------ -------------------------------- -------- ПЕТРОВ EXPIRED & LOCKED 31/05/11
И т.п.
SQL> ALTER PROFILE default LIMIT password_life_time UNLIMITED; (стираем сроки «годности»)
SQL> commit; (на всякий пожарный случай)
SQL>select username,ACCOUNT_STATUS,EXPIRY_DATE from dba_users; (смотрим у кого просрочен пароль)
USERNAME ACCOUNT_STATUS EXPIRY_D ------------------------------ -------------------------------- -------- ПЕТРОВ OPEN
И т.п.
SQL> conn supermag/
ORA-28001: the password has expired
Изменение пароля для sys
ORA-28001: Пароль истек
Я столкнулся с проблемой с моей базой данных в Oracle, когда я открыл свою базу данных, появилось сообщение с: «ORA-28001: Пароль истек» Я обновил свою учетную запись несколькими способами:
sqlplus /nolog SQL> connect / as SYSDBA Connected. SQL> SELECT username, account_status FROM dba_users WHERE ACCOUNT_STATUS LIKE '%EXPIRED%'; SQL> ALTER USER system IDENTIFIED BY system; User altered. SQL> ALTER USER system ACCOUNT UNLOCK; User altered. SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; Profile altered. SQL> exit
Я проверяю и вижу это, моя учетная запись:’system’ имеет OPEN, но я открываю ее в Oracle SQL Developer, она все еще имеет оповещение:
ORA-28001: The password has expired
Я перечислил много ссылок, но все еще остается проблема, как это исправить? oracle
Поделиться Источник 14 ноября 2016 в 02:34
14 ответов
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; alter user EPUSR100 identified by EPUSR100 account unlock; commit;
Поделиться 14 ноября 2017 в 01:51
Я исправил проблему, просто нужно проверить:
open_mode from v$database
а затем проверить:
check account_status to get mode information
а затем использовать:
alter user myuser identified by mynewpassword account unlock;
Поделиться 14 ноября 2016 в 07:47
Попробуйте связаться с пользователями в SQL Plus, чей пароль истек. Он запросит новый пароль. Введите новый пароль и подтвердите пароль. Это будет работать Изображение вывода SQL Plus
Поделиться 21 января 2019 в 06:38
Проверьте «PASSWORD_LIFE_TIME» с помощью Sql > select * from dba_profiles; Установите на Никогда не истекающий срок Sql > ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; Затем сбросьте пароль заблокированного пользователя.
Поделиться 14 ноября 2016 в 04:19
C:\>sqlplus /nolog SQL> connect / as SYSDBA SQL> select * from dba_profiles; SQL> alter profile default limit password_life_time unlimited; SQL> alter user database_name identified by new_password; SQL> commit; SQL> exit;
Поделиться 26 апреля 2019 в 06:13
- Подключение к Oracle

sqlplus sys/root как sysdba
- Проверьте статус и дату окончания срока действия для пользователя
SELECT username, account_status, expiry_date FROM dba_users;

- Измените пароль для пользователя, чтобы разрешить истечение
ALTER USER dummy_user IDENTIFIED BY dummy_password;

- Раблокируйте учетную запись пользователя, если она заблокирована
ALTER USER dummy_user ACCOUNT UNLOCK;
- Установите неограниченный срок действия пароля, чтобы избежать проблем в будущем
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

- Снова проверьте статус пользователя, чтобы проверить дату окончания срока действия. Статус учетной записи теперь открыт, а дата окончания неограничена.
SELECT username, account_status, expiry_date FROM dba_users;

SELECT username, account_status, expiry_date FROM dba_users;
ALTER USER dummy_user IDENTIFIED BY dummy_password;
ALTER USER dummy_user ACCOUNT UNLOCK;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
Поделиться 18 марта 2021 в 08:52
У меня была та же проблема даже после изменения пароля, она не отражалась в SQLDEVELOPER.
Atlast следующий решил мою проблему:
- Откройте командную строку Propmt
- Введите sqlplus
- Войдите в систему как sysdba
- Выполните следующую команду: изменить имя пользователя, идентифицированное NEW_PASSWORD;
Поделиться 16 октября 2019 в 05:51
У меня была та же проблема, я пытаюсь войти в базу данных, появляется сообщение с: «ORA-28001: Пароль истек», я исправил проблему простыми шагами
1.Откройте командную строку 2.Тип sqlplus 3.Он попросит ввести пароль, вы можете дать старый пароль, он покажет, что пароль истек ORA-28001.Он попросит новый пароль и введет пароль 5.Он изменится с новым паролем 6.Перейдите в базу данных sql и попробуйте подключиться с новым паролем, он подключится.
Поделиться 20 июля 2020 в 16:05
Я запускаю Oracle 18c в контейнере Docker, где проблемная база данных является базой данных Pluggable, поэтому мне пришлось использовать другой подход:
- Войдите в SYSDBA
- Переключитесь на базу данных Pluggagle
ALTER SESSION SET CONTAINER=XEPDB2;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
SELECT dbms_metadata.get_ddl('USER','username') stmt from dual;
Замените имя_пользователя выше на свое. Вывод будет выглядеть примерно так:
CREATE USER "…" IDENTIFIED BY VALUES '…'
ALTER USER "…" IDENTIFIED BY VALUES '…' ACCOUNT UNLOCK;
Это комбинация других ответов здесь и в другом месте.
Поделиться 02 марта 2022 в 01:57
Если вы получаете дополнительную ошибку ORA-65066: Заданные изменения должны применяться ко всем контейнерам , вам нужно сначала переключиться на корневой cdb:
alter session set container=CDB$ROOT;
а затем команда alter должна работать:
alter user USER identified by NEW_PASSWORD account unlock;
Поделиться 13 января 2023 в 14:44
Чтобы узнать, какие пользователи истекли, запустите команду SELECT * FROM ;
Чтобы разблокировать пользователей, запустите команду alter, идентифицированную по разблокировке учетной записи;
Поделиться 19 августа 2021 в 11:24
Просто.. Перейдите в командную строку и введите SQLPLUS /@connect Строка нажмите Enter.
Она говорит, что пароль истек и предоставляет возможность ввести новый пароль. Введите новый пароль и вы готовы.
Поделиться 21 мая 2021 в 06:17
Просто перейдите на машину, где находится ваша база данных, найдите окна поиска -> поиск SqlPlus Введите имя пользователя, затем введите пароль, он попросит вас дать новый пароль. При предоставлении нового пароля он скажет, что успешно изменил пароль.
Поделиться 19 января 2021 в 06:08
Вы находитесь в неправильном cdb/pdb, поэтому подключитесь к правой pdb
ORACLE ORA-28001: THE PASSWORD HAS EXPIRED
Приложение перестало соединяться с базой данных Oracle. В логе — ошибка:
ORA-28001: the password has expired
(это означает, что срок действия пароля истек)
Смотрим, у каких пользователей срок истёк:
Oracle PL/SQL
select username,ACCOUNT_STATUS,EXPIRY_DATE from dba_users;
Устанавливаем бесконечный срок для пароля:
Oracle PL/SQL
ALTER PROFILE default LIMIT password_life_time UNLIMITED ;
После чего всё-таки придётся законнектиться sqlplus-ом под нужным пользователем и сменить пароль. Также нужно не забыть поменять его в приложении.