Проблема:
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) |