Проблема:
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';
Code language: SQL (Structured Query Language) (sql)
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');
Code language: SQL (Structured Query Language) (sql)
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');
Code language: SQL (Structured Query Language) (sql)
username | account_status | lock_date |
SCOTT | OPEN | (null) |
- Следующая задача — нужно заблокировать пользователя (залочить пользователя) в Oracle. Для блокировки пользователя (воспользуемся учетной записью пользователя SCOTT, и заблокируем его) нужно выполнить
ALTER USER SCOTT ACCOUNT LOCK;
Code language: SQL (Structured Query Language) (sql)
Если запрос выполнился успешно — можно выполнить предыдущий запрос чтобы просмотреть информацию о пользователе SCOTT. В результате у нас будет следующая информация:
username | account_status | lock_date |
SCOTT | LOCKED | 16.05.2014 10:00:00 |
- Мы подошли к главному вопросу. Как же разблокировать пользователя, который был заблокирован в Oracle. Пользователь может быть заблокирован в Oracle по нескольким причинам, одна из них — при входе был введен несколько раз неправильный пароль. Так что действие разблокировки осуществляется следующим образом:
ALTER USER SCOTT ACCOUNT UNLOCK;
Code language: SQL (Structured Query Language) (sql)
Для проверки выполним запрос который покажет состояние пользователя в системе.
username | account_status | lock_date |
SCOTT | OPEN | (null) |