Oracle как разблокировать/заблокировать пользователя

Проблема:
1. Вывести список разблокированных пользователей
3. Вывести список заблокированных пользователей
4. Вывести информацию о конкретном пользователе
5. Нужно заблокировать пользователя (залочить пользователя) в Oracle.
6. Как разблокировать пользователя (разлочить пользователя)в Oracle.

Инструментарий: Oracle 10, Oracle 11
В предыдущей заметке я описывал как получить список пользователей которые созданы в Oracle.

  • В разблокированных пользователей статус (account_status) равен Open. Выведим список разблокированных пользователей:
SELECT
username, --Логин
account_status, --Статус аккаунта
lock_date --дата блокировки(если пользователь заблокирован)
FROM dba_users
WHERE account_status = 'OPEN';
Результат выполнения запроса
username account_status lock_date
SYS OPEN (null)
SCOTT OPEN (null)

Как видим у нас есть два разблокированных пользователя.

  • Чтобы вывести список всех заблокированных пользователей можно воспользоваться запросом:
SELECT
username, --Логин
account_status, --Статус аккаунта
lock_date --дата блокировки(если пользователь заблокирован)
FROM dba_users
WHERE (account_status = 'LOCKED')OR(account_status ='EXPIRED & LOCKED');
Результат выполнения запроса
username account_status lock_date
ANONYMOUS EXPIRED & LOCKED 25.06.2013 12:16:22
ALEX LOCKED 15.05.2014 10:00:00
  • Для того чтобы просмотреть информацию об конкретном пользователе можно воспользоваться тем же запросом, но с другими параметрами (К примеру будим просматривать информацию о пользователе SCOTT):
SELECT
username, --Логин
account_status, --Статус аккаунта
lock_date --дата блокировки(если пользователь заблокирован)
FROM dba_users
WHERE USERNAME = UPPER('SCOTT');

Логины в базе данных хранятся в верхнем регистре, из за этого я написал UPPER(…). В нашем случае все просто, мы пишем в верхнем регистре и все, но а если мы передаем имя в виде параметра, тогда конечно нужно защитить себя от ошибки.

Результат выполнения запроса
username account_status lock_date
SCOTT OPEN (null)
  • Следующая задача — нужно заблокировать пользователя (залочить пользователя) в Oracle. Для блокировки пользователя (воспользуемся учетной записью пользователя SCOTT, и заблокируем его) нужно выполнить
ALTER USER SCOTT ACCOUNT LOCK;

Если запрос выполнился успешно — можна выполнить предыдущий запрос чтобы просмотреть информацию о пользователе SCOTT. В результате у нас будет следующай информация:

Результат выполнения запроса
username account_status lock_date
SCOTT LOCKED 16.05.2014 10:00:00
      • Мы подошли к главному вопросу. Как же разблокировать пользователя, который был заблокирован в Oracle. Пользователь может быть заблокирован в Oracle по нескольким причинам, одна из них — при входе был введен несколько раз неправильный пароль.Так что действие разблокировки осуществляется следующим образом:
ALTER USER SCOTT ACCOUNT UNLOCK;

Для проверки выполним запрос который покажет состояние пользователя в системе.

Результат выполнения запроса
username account_status lock_date
SCOTT OPEN (null)

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

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