mirsovetov.net
Андрощук Александр, ИТ решения, советы, заметки…
Oracle как разблокировать/заблокировать пользователя
Проблема:
1. Вывести список разблокированных пользователей
3. Вывести список заблокированных пользователей
4. Вывести информацию о конкретном пользователе
5. Нужно заблокировать пользователя (залочить пользователя) в Oracle.
6. Как разблокировать пользователя (разлочить пользователя)в Oracle.
Инструментарий: Oracle 10, Oracle 11
В предыдущей заметке я описывал как получить список пользователей которые созданы в Oracle.
- В разблокированных пользователей статус (account_status) равен Open. Выведим список разблокированных пользователей:
Как видим у нас есть два разблокированных пользователя.
- Чтобы вывести список всех заблокированных пользователей можно воспользоваться запросом:
- Для того чтобы просмотреть информацию об конкретном пользователе можно воспользоваться тем же запросом, но с другими параметрами (К примеру будим просматривать информацию о пользователе SCOTT):
- Следующая задача — нужно заблокировать пользователя (залочить пользователя) в Oracle. Для блокировки пользователя (воспользуемся учетной записью пользователя SCOTT, и заблокируем его) нужно выполнить
Если запрос выполнился успешно — можно выполнить предыдущий запрос чтобы просмотреть информацию о пользователе SCOTT. В результате у нас будет следующая информация:
- Мы подошли к главному вопросу. Как же разблокировать пользователя, который был заблокирован в Oracle. Пользователь может быть заблокирован в Oracle по нескольким причинам, одна из них — при входе был введен несколько раз неправильный пароль. Так что действие разблокировки осуществляется следующим образом:
Для проверки выполним запрос который покажет состояние пользователя в системе.
Unlock an account in oracle 12c database
I tried to run a spring mvc code and got a jdbc connection error: cannot open connection. I tried to connect the database in sqldeveloper but my account was locked.
So I tried using sqlplus in command prompt. Since I am having multiple db_homes, and oracle home was not set it throwed an error sqlplus is not an internal command. I have fixed it by checking the db_home path and fixed and after that I gave the command «alter user system account unlock» it altered.
Then I tried to connect the database in sql developer with the user name and password but still its locked. Is that anyother thing, I need to do to unlock the account? Please need suggestion on this. It was working earlier.
Alter User Account Lock & Unlock in Oracle
I will explain Alter User Account Lock & Unlock in Oracle in this post.
Alter User Account Lock in Oracle
Oracle DBA needs locking any user to prevent login to database, If you want to lock any user, you can lock it as follows.
Alter User Account Unlock in Oracle
OR Sometimes You can get “ ORA-28000: the account is locked ” error.
Details of error are as follows.
To solve this error, unlock the related user as follows.
Or increase the Password Life time parameter as follows.
Check the related profile limit.
Change default password life time to unlimited as follows.
Check Oracle user account status and expiry date like following.
Existing user account status and expiry_date will not change, so you should change user password with original hash value to activate these changes.
To take hash password of user, execute following script.
You should change related user password with its hash value like following.
Or you can set new password for the user.
Thus, Related Oracle User password lifetime will be unlimited and it will not be expired.
Разблокировка и доступ к пользователю HR в Oracle Database 18c Express Edition
В посте рассматривается способ разблокировки и доступа к учебному и тестовому пользователю (схемы) HR в базе данных Oracle Database 18c Express Edition. Рассмотрены следующие вопросы:
- Краткий обзор Multitenant архитектуры
- Разблокировка пользователя HR
Краткий обзор Multitenant архитектуры На сегодняшний день последней актуальной версией бесплатной редакции Oracle Database является Oracle Database 18c Express Edition. Данная версия выпущена в 2018 году. Предыдущая версия бесплатной редакции была Oracle Database 11g Express Edition. В Oracle Database 18c Express Edition включены многие важные опции наиболее функциональной редакции Oracle Database – Oracle Database Enterprise Edition. Ниже приведены некоторые основные опции, которые доступны также в Oracle Database 18c Express Edition:
- Multitenant
- Flashback Table
- Flashback Database
- Oracle Partitioning
- In-Memory Column Store и Aggregation
- Advanced Analytics и Security
- Online Index Rebuild
- Online Table Redefinition
- Query Results Cache и PL/SQL Function Result Cache
- Oracle Advanced Compression
- Materialized View Query Rewrite
- Oracle Spatial and Graph
- Bitmap Indexes
Для подключения к схеме HR в Oracle Database 18c Express Edition необходимо понимать принцип работы новой опции Multitenant. Начиная с Oracle Database 12с поддерживается новая архитектура – Multitenant, которая предоставляет возможность использовать множество баз данных для консолидации их в составе единой и главной базы данных. Такая консолидация упрощает задачи администрирования баз данных. Единая и главная база данных используется в качестве платформы и называется контейнерная база данных (Container Database – CDB), а база данных из множества работающих в составе контейнерной базы данных называется подключаемой базой данных (Pluggable Database – PDB). Архитектура Multitenat позволяет создать в Oracle Database 18с Express Edition одну CDB базу и до трех PDB баз. Архитектура Oracle Database 11g Express Edition предоставляет возможность создать одну и единственную базу. В Oracle Database 18с Express Edition учебная и тестовая схема (пользователь) HR, которая содержит взаимосвязанные таблицы и данные, располагается в составе PDB. В связи с этим, чтобы подключиться к базе данных под этой учетной записью, необходимо войти в PDB, разблокировать пользователя HR и назначить ему пароль. Ниже пошагово описываются шаги подключения к CDB, PDB и манипуляция настроек пользователя с помощью SQLPlus и SQLDeveloper.
Разблокировка пользователя (схемы) HR
Предполагается, что есть успешно установленная Oracle Database 18c Express Edition. При необходимости, можно установить Oracle Database 18c Express Edition используя следующие материалы: установка Oracle Database 18c Express Edition на Linux и установка Oracle Database 18c Express Edition на Windows. Нижеописанные шаги будут работать с Oracle Database 18c Express Edition, установленной, как на операционную систему Linux, так и на Windows.
Вариант разблокировки с помощью SQL*Plus.
Шаг 1. Подключение к CDB
Выполняется подключение к CDB с помощью пользователя sys с ролью as sysdba:
Подключение успешно прошло к CDB. Далее проверяется имя и идентификатор CDB.
Результат запроса показывает, что CDB имеет имя XE и ее уникальный идентификатор = 0. По умолчанию, после установки Oracle Database 18c Express Edition есть одна PDB с именем XEPDB1. Следующий запрос покажет существующие PDB.
Активная PDB имеет имя XEPDB1 с идентификатором 3 и ее режим работы определен как READ WRITE. OPEN MODE – READ WRITE означает, что база данных (БД) открыта и готова работать в режиме чтения и записи. PDB$SEED используется CDB как шаблон для создания новых PDB баз.
Проверяется наличие пользователя HR в CDB.
Запрос не вернул данные. Это означает, что пользователя HR нет в CDB. Далее необходимо подключиться к PDB и найти там HR.
Шаг 2. Подключение к PDB
Есть два способа подключиться к PDB с использованием SQL*Plus.
Способ 1. Находясь в CDB, подключиться к PDB используя команду alter session. В примере ниже происходит переключение из сеанса CDB к PDB с именем XEPDB1:
Переключение прошло успешно. Для того, чтобы удостовериться в корректности подключения, проверяется имя и идентификатор PDB базы:
Запросы показывают характеристики существующей PDB (Шаг 1.).
Способ 2. Можно подключиться к PDB с консоли операционной системы, указав параметры подключения.
Ниже выполняется подключение к PDB под пользователем sys с указанием IP адреса сервера БД, порта и имени PDB (по умолчанию для созданной PDB (XEPDB1) используется порт 1539):
Подключение прошло успешно.
Для информации: Администраторы баз данных временами выполняют подключение к БД используя аутентификацию на уровне операционной системы с помощью команды sqlplus / as sysdba и без указания пароля. При запуске этой команды в среде с Multitenant архитектурой будет осуществлено подключение к CDB. Для того, чтобы напрямую подключиться к PDB минуя CDB, используется sqlplus / as sysdba и без указания пароля, также необходимо в переменную среду операционной системы добавить новый системный параметр ORACLE_PDB_SID и в его значении указать название PDB. Этот параметр для подключения к PDB без указания пароля могут осуществлять только пользователи sys и system. Остальные пользователи будут автоматически подключены к CDB, если не укажут параметры подключения к PDB. Ниже описываются шаги подключения к PDB для пользователя sys с применением параметра ORACLE_PDB_SID в переменной среде операционной системы. Это очень удобный способ для администраторов баз данных:
Подключение к PDB прошло успешно напрямую из операционной системы без указания пароля и параметров подключения PDB. Далее проверяется имя и идентификатор PDB.
После успешного подключения к PDB c использованием одного из двух способов определяется наличие пользователя HR, а также его статус.
Запускается запрос поиска пользователя HR среди всех существующих пользователей в XEPDB1:
Получен результат, подтверждающий наличие пользователя HR в PDB.
При помощи запроса определяется имя, статус и дата блокировки пользователя HR:
Результат запроса показывает, что статус пользователя «заблокирован» и пароль просрочен (необходимо задать новый пароль) – EXPIRED & LOCKED. Первоначальная дата блокировки равна дате установки Oracle Database 18c Express Edition.
Шаг 3. Разблокировка пользователя HR
После установки Oracle Database 18c Express Edition учетная запись HR заблокирована и пароль у нее просрочен (необходимо задать новый пароль) (см. предыдущий шаг – Шаг 2.). В этом случае, система позволяет сделать запросы к объектам HR (таблицам, представлениям, функциям и т.п.) от имени других пользователей при наличии соответствующих привилегий. Например, при выполнении запроса на определение количества строк в таблице EMPLOYEES пользователя HR под пользователем SYS система успешно выдаст следующий результат:
Для пользователя HR назначается новый пароль:
При попытке подключения к PDB, не разблокировав пользователя, можно получить следующую ошибку:
Необходимо заново подключиться к PDB под пользователем sys:
и разблокировать пользователя HR следующей командой:
Операции назначения пароля и разблокировки пользователя HR прошли успешно. Проверяется статус пользователя:
Пользователь HR разблокирован и новый пароль активен. Это означает, что теперь можно подключиться к PDB с именем XEPDB1 под учебным тестовым пользователем HR и начать работу.
Шаг 4. Подключение к PDB с учетной записью HR.
Используя данные для подключения к PDB, выполняется вход систему под учетной записью HR и запускается запрос для определения количества строк в его таблице EMPLOYEES.
На этом завершается определение наличия пользователя, назначение ему пароля и разблокировка HR в PDB Oracle Database 18c Express Edition, а также выполнение запроса к его объекту с помощью SQL*Plus.
Вариант разблокировки с помощью SQL Developer.
Шаг 1. Подключение к CDB
Для этого создается новое подключение в SQL Developer и указываются необходимые параметры подключения к CDB, такие как:
Name: XE_18c
Указывается имя соединения, которое позволяет однозначно идентифицировать CDB при подключении.
IP: 192.168.0.1
IP адрес сервера БД.
Port: 1539
Порт подключения к БД.
SID: XE
SID или имя CDB.
Username: sys
Указывается имя пользователя для подключения к БД.
Role: SYSDBA
Подключение к БД осуществляется пользователем sys. Данный пользователь может подключиться только с ролью SYSDBA.
Password:
Пароль пользователя sys, который был назначен во время установки базы данных.
После нажатия Connect произойдет успешное подключение к CDB с именем XE. Далее проверяется имя, идентификатор и версия CDB, а также выводятся существующие PDB.

Как и ожидалось, выведенные выше данные идентичны полученным с помощью SQL*Plus.
Далее проверяется наличие пользователя HR в CDB.

Запрос не вернул данные, это означает, что пользователя HR нет в CDB. Теперь необходимо подключиться к PDB и проверить наличие HR в PDB.
Шаг 2. Подключение к PDB
Создается новое подключение в SQL Developer и указываются необходимые параметры подключения к подключаемой базе данных XEPDB1, такие как:
Name: XEPDB1_18c
Указывается имя соединения, которое позволяет однозначно идентифицировать PDB при подключении.
IP: 192.168.0.1
IP адрес сервера БД.
Port: 1539
Порт подключения к БД.
SID: XEPDB1
SID или имя PDB.
Username: sys
Указывается имя пользователя для подключения к БД.
Role: SYSDBA
Подключение к БД осуществляется пользователем sys. Данный пользователь может подключиться только с ролью SYSDBA.
Password:
Пароль пользователя sys, который был назначен во время установки базы данных. Пользователи sys и system могут подключиться с одним и тем же паролем и к CDB и к PDB.

После нажатия Connect произойдет успешное подключение к подключаемой БД XEPDB1. Далее проверяется имя и идентификатор.

Результаты показывают, что было подключение к PDB с именем XEPDB1 и идентификатором 3. Определяется наличие пользователя HR в этой PDB. В иерархии дерева надо выбрать «Other Users» в соединении с именем XEPDB1_18c как показано на скриншоте:

В списке пользователей необходимо найти пользователя HR и нажать на правую кнопку. Из контекстного меню выбрать «Edit User». Откроется новое модальное окно «Edit User» как показано на скриншоте. Как видно на скриншоте учетная запись HR заблокирована (Account is Locked) и пароль у нее просрочен (Password Expired):

Шаг 3. Разблокировка пользователя HR:
В продолжение предыдущего шага необходимо:
- Задать идентичный пароль в полях New Password (новый пароль) и Confirm Password (подтвердить пароль).
- Снять галочку из пункта Password Expired (user must change next login).
- Снять галочку из пункта Account is Locked для разблокировки пользователя.
- Нажать Apply.
Пользователь HR разблокирован и ему назначен пароль. Это означает, что теперь можно подключиться к PDB с именем XEPDB1 под учебным тестовым пользователем HR и начать работу.
Шаг 4. Подключение к PDB с учетной записью HR.
Создается новое подключение в SQL Developer и указываются необходимые параметры подключения к подключаемой базе данных XEPDB1 с пользователем HR, такие как:
Name: XEPDB1_18c_hr
Указывается имя соединения, которое позволяет однозначно идентифицировать PDB при подключении с пользователем HR.
IP: 192.168.0.1
IP адрес сервера БД.
Port: 1539
Порт подключения к БД.
SID: XEPDB1
SID или имя PDB.
Username: HR
Указывается имя пользователя для подключения к БД.
Role: default
Подключение к БД осуществляется пользователем HR. Данный пользователь не может использовать роль SYSDBA.
Password:
Пароль, который был назначен пользователю HR на третьем шаге, то есть hr.

После нажатия Connect произойдет успешное подключение к PDB с именем XEPDB1 под пользователем HR. Выполняется запрос для определения количества строк в таблице EMPLOYEES:

На этом завершается определение наличия пользователя, назначение ему пароля и разблокировка HR в PDB Oracle Database 18c Express Edition, а также выполнение запроса к его объекту с помощью SQL Developer.