Разблокировка и доступ к пользователю 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:
[oracle@dushanbe ~]$ sqlplus sys as sysdba SQL*Plus: Release 18.0.0.0.0 - Production on Fri Jul 17 13:00:06 2020 Version 18.4.0.0.0 Copyright (c) 1982, 2018, Oracle. All rights reserved. Enter password: Connected to: Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production Version 18.4.0.0.0
Подключение успешно прошло к CDB. Далее проверяется имя и идентификатор CDB.
SQL> select instance_name, con_id, version from v$instance; INSTANCE_NAME CON_ID VERSION -------------- ------- ---------- XE 0 18.0.0.0.0
Результат запроса показывает, что CDB имеет имя XE и ее уникальный идентификатор = 0. По умолчанию, после установки Oracle Database 18c Express Edition есть одна PDB с именем XEPDB1. Следующий запрос покажет существующие PDB.
SQL> show pdbs;CON_ID CON_NAME OPEN MODE RESTRICTED
------- --------- ------------ -----------2 PDB$SEED READ ONLY NO
3 XEPDB1 READ WRITE NO
Активная PDB имеет имя XEPDB1 с идентификатором 3 и ее режим работы определен как READ WRITE. OPEN MODE – READ WRITE означает, что база данных (БД) открыта и готова работать в режиме чтения и записи. PDB$SEED используется CDB как шаблон для создания новых PDB баз.
Проверяется наличие пользователя HR в CDB.
SQL> select username from dba_users where username = 'HR'; no rows selected
Запрос не вернул данные. Это означает, что пользователя HR нет в CDB. Далее необходимо подключиться к PDB и найти там HR.
Шаг 2. Подключение к PDB
Есть два способа подключиться к PDB с использованием SQL*Plus.
Способ 1. Находясь в CDB, подключиться к PDB используя команду alter session. В примере ниже происходит переключение из сеанса CDB к PDB с именем XEPDB1:
SQL> alter session set container = xepdb1; Session altered.
Переключение прошло успешно. Для того, чтобы удостовериться в корректности подключения, проверяется имя и идентификатор PDB базы:
SQL> show con_name CON_NAME -------- XEPDB1 SQL> show con_id CON_ID -------- 3
Запросы показывают характеристики существующей PDB (Шаг 1.).
Способ 2. Можно подключиться к PDB с консоли операционной системы, указав параметры подключения.
Ниже выполняется подключение к PDB под пользователем sys с указанием IP адреса сервера БД, порта и имени PDB (по умолчанию для созданной PDB (XEPDB1) используется порт 1539):
[oracle@dushanbe ~]$ sqlplus sys/sys@192.168.0.1:1539/XEPDB1 as sysdba SQL*Plus: Release 18.0.0.0.0 - Production on Sat Jul 18 17:04:51 2020 Version 18.4.0.0.0 Copyright (c) 1982, 2018, Oracle. All rights reserved. Connected to: Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production Version 18.4.0.0.0
Подключение прошло успешно.
Для информации: Администраторы баз данных временами выполняют подключение к БД используя аутентификацию на уровне операционной системы с помощью команды sqlplus / as sysdba и без указания пароля. При запуске этой команды в среде с Multitenant архитектурой будет осуществлено подключение к CDB. Для того, чтобы напрямую подключиться к PDB минуя CDB, используется sqlplus / as sysdba и без указания пароля, также необходимо в переменную среду операционной системы добавить новый системный параметр ORACLE_PDB_SID и в его значении указать название PDB. Этот параметр для подключения к PDB без указания пароля могут осуществлять только пользователи sys и system. Остальные пользователи будут автоматически подключены к CDB, если не укажут параметры подключения к PDB. Ниже описываются шаги подключения к PDB для пользователя sys с применением параметра ORACLE_PDB_SID в переменной среде операционной системы. Это очень удобный способ для администраторов баз данных:
[oracle@dushanbe ~]$ env | grep ORACLE* ORACLE_SID=XE ORACLE_HOME=/opt/oracle/product/18c/dbhomeXE [oracle@dushanbe ~]$ [oracle@dushanbe ~]$ export ORACLE_PDB_SID=xepdb1 [oracle@dushanbe ~]$ env | grep ORACLE* ORACLE_PDB_SID=xepdb1 ORACLE_SID=XE ORACLE_HOME=/opt/oracle/product/18c/dbhomeXE [oracle@dushanbe ~]$ [oracle@dushanbe ~]$ sqlplus / as sysdba SQL*Plus: Release 18.0.0.0.0 - Production on Fri Jul 17 16:46:35 2020 Version 18.4.0.0.0 Copyright (c) 1982, 2018, Oracle. All rights reserved. Connected to: Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production Version 18.4.0.0.0
Подключение к PDB прошло успешно напрямую из операционной системы без указания пароля и параметров подключения PDB. Далее проверяется имя и идентификатор PDB.
SQL> show con_name CON_NAME -------- XEPDB1 SQL> show con_id CON_ID -------- 3
После успешного подключения к PDB c использованием одного из двух способов определяется наличие пользователя HR, а также его статус.
Запускается запрос поиска пользователя HR среди всех существующих пользователей в XEPDB1:
SQL> select username from dba_users where username = 'HR'; USERNAME -------- HR
Получен результат, подтверждающий наличие пользователя HR в PDB.
При помощи запроса определяется имя, статус и дата блокировки пользователя HR:
SQL> select username, account_status, lock_date from dba_users where username = 'HR'; USERNAME ACCOUNT_STATUS LOCK_DATE -------- ---------------- ----------- HR EXPIRED & LOCKED 30-MAY-20
Результат запроса показывает, что статус пользователя «заблокирован» и пароль просрочен (необходимо задать новый пароль) – EXPIRED & LOCKED. Первоначальная дата блокировки равна дате установки Oracle Database 18c Express Edition.
Шаг 3. Разблокировка пользователя HR
После установки Oracle Database 18c Express Edition учетная запись HR заблокирована и пароль у нее просрочен (необходимо задать новый пароль) (см. предыдущий шаг – Шаг 2.). В этом случае, система позволяет сделать запросы к объектам HR (таблицам, представлениям, функциям и т.п.) от имени других пользователей при наличии соответствующих привилегий. Например, при выполнении запроса на определение количества строк в таблице EMPLOYEES пользователя HR под пользователем SYS система успешно выдаст следующий результат:
SQL> select count(*) from hr.employees;
COUNT(*)
--------
107
Для пользователя HR назначается новый пароль:
SQL> ALTER USER hr IDENTIFIED BY hr; User altered.
При попытке подключения к PDB, не разблокировав пользователя, можно получить следующую ошибку:
[oracle@dushanbe ~]$ sqlplus hr/hr@192.168.0.1:1539/XEPDB1 SQL*Plus: Release 18.0.0.0.0 - Production on Sat Jul 18 12:49:01 2020 Version 18.4.0.0.0 Copyright (c) 1982, 2018, Oracle. All rights reserved. ERROR: ORA-28000: The account is locked. Enter user-name:
Необходимо заново подключиться к PDB под пользователем sys:
[oracle@dushanbe ~]$ sqlplus sys/sys@192.168.0.1:1539/XEPDB1 as sysdba SQL*Plus: Release 18.0.0.0.0 - Production on Sat Jul 18 17:04:51 2020 Version 18.4.0.0.0 Copyright (c) 1982, 2018, Oracle. All rights reserved. Connected to: Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production Version 18.4.0.0.0
и разблокировать пользователя HR следующей командой:
SQL> ALTER USER hr ACCOUNT UNLOCK; User altered.
Операции назначения пароля и разблокировки пользователя HR прошли успешно. Проверяется статус пользователя:
SQL> select username, account_status, lock_date from dba_users where username = 'HR'; USERNAME ACCOUNT_STATUS LOCK_DATE -------- ---------------- ----------- HR OPEN
Пользователь HR разблокирован и новый пароль активен. Это означает, что теперь можно подключиться к PDB с именем XEPDB1 под учебным тестовым пользователем HR и начать работу.
Шаг 4. Подключение к PDB с учетной записью HR.
Используя данные для подключения к PDB, выполняется вход систему под учетной записью HR и запускается запрос для определения количества строк в его таблице EMPLOYEES.
[oracle@dushanbe ~]$ sqlplus hr/hr@192.168.0.1:1539/XEPDB1
SQL*Plus: Release 18.0.0.0.0 - Production on Sat Jul 18 12:46:35 2020
Version 18.4.0.0.0
Copyright (c) 1982, 2018, Oracle. All rights reserved.
Connected to:
Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0
SQL> show user;
USER is "HR"
SQL> select count(*) from employees;
COUNT(*)
--------
107
На этом завершается определение наличия пользователя, назначение ему пароля и разблокировка 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.