Клонирование pluggable database в Oracle Database 18c Express Edition

Клонирование pluggable database в Oracle Database 18c Express Edition

Начиная с Oracle Database 12с, поддерживается новая архитектура – Multitenant, которая предоставляет возможность использовать множество баз данных для консолидации их в составе единой главной базы данных. Такое объединение упрощает задачи администрирования баз данных. Единая и главная база данных используется в качестве платформы и называется контейнерная база данных (Container Database – CDB), а база данных из множества работающих в составе контейнерной базы данных называется подключаемой базой данных (Pluggable Database – PDB). Архитектура Multitenat позволяет создать в Oracle Database 18с Express Edition одну CDB базу и до трех PDB баз. По умолчанию после установки Oracle 18c Express Edition создается одна CDB и одна PDB. Название автоматически созданной PDB после установки Oracle Database 18с Express Edition – XEPDB1. Ниже пошагово описывается процесс клонирования подключаемой базы данных XEPDB1 в Oracle Database 18c Express Edition, работающей на виртуальной машине под управлением операционной системы Oracle Linux. Нижеописанные шаги также будут работать с Oracle Database 18c Express Edition, установленной на операционную систему Windows.

Клонирование подключаемой базы данных XEPDB1 может понадобиться для самых различных целей. Например, для создания среды разработки и тестирования.

Cоздание клона подключаемой БД XEPDB1.

Необходимо подключиться к CDB под пользователем sys:

[oracle@dushanbe ~]$ sqlplus / as sysdba
SQL*Plus: Release 18.0.0.0.0 - Production on Mon Mar 22 15:44:52 2021
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) и их статусы:

SQL> show pdbs;

CON_ID   CON_NAME   OPEN MODE   RESTRICTED
-------  ---------  ----------  -----------
  2      PDB$SEED   READ ONLY       NO  
  3      XEPDB1     READ WRITE      NO

Можно увидеть, что подключаемая база данных XEPDB1 открыта и работает в режиме чтения и записи данных (Open mode – read write). Для клонирования надо сперва перевести PDB XEPDB1 в режим монтирования (mount), а потом только чтения (read only).

В режиме mount нельзя вносить изменения в объекты и база становится доступной только для администраторов.

SQL> alter pluggable database XEPDB1 close;
Pluggable database altered.

Еще раз проверяется статус подключаемых баз данных. Результат показывает, что PDB XEPDB1 теперь работает в режиме монтирования (mounted):

SQL> show pdbs;

CON_ID   CON_NAME   OPEN MODE   RESTRICTED
-------  ---------  ----------  -----------
  2      PDB$SEED   READ ONLY       NO  
  3      XEPDB1     MOUNTED 

Затем PDB XEPDB1 (далее XEPDB1) переводится в режим только чтения (read only). Режим read only позволяет совершать запрос, но не позволяет совершать изменения пользователям.

SQL> alter pluggable database XEPDB1 open read only;
Pluggable database altered.

Просматривается список PDB и их статусы:

SQL> show pdbs;

CON_ID   CON_NAME   OPEN MODE   RESTRICTED
-------  ---------  ----------  -----------
  2      PDB$SEED   READ ONLY       NO  
  3      XEPDB1     READ ONLY       NO 

Теперь, когда XEPDB1 в режиме только чтения, можно приступать к созданию непосредственно клона этой базы данных. Клон XEPDB1 будет называться MSU. Для создания клона PDB будет использована команда create pluggable database. Если create pluggable database запустить без параметра file_name_convert или create_file_dest, то можно получить ошибку ORA-65016:

SQL> create pluggable database HI from XEPDB1;
create pluggable database HI from XEPDB1
                                        *
ERROR at line 1:
ORA-65016: FILE_NAME_CONVERT must be specified

Для того, чтобы данная ошибка не возникала, необходимо указать директорию, где будут созданы файлы для новой PDB MSU. Директорию для файлов клона PDB можно указать с помощью одного из двух параметров в команде create pluggable database: file_name_convert или create_file_dest. При указании параметра file_name_convert система сама создает поддиректорию MSU в директории /opt/oracle/oradata/XE:

SQL> create pluggable database MSU from XEPDB1
file_name_convert = (
'/opt/oracle/oradata/XE/XEPDB1',
'/opt/oracle/oradata/XE/MSU');

Pluggable database created.

Для параметра create_file_dest необходимо предварительно создать директорию операционной системы, иначе можно получить ошибку:

SQL> create pluggable database HI from XEPDB1
CREATE_FILE_DEST='/opt/oracle/oradata/XE/HI';  
create pluggable database HI from XEPDB1
*
ERROR at line 1:
ORA-65165: missing or invalid path for file creation /opt/oracle/oradata/XE/HI
ORA-01262: Stat failed on a file destination directory
Linux-x86_64 Error: 2: No such file or directory

Клонирование PDB было запущено с двумя разными параметрами – file_name_convert и create_file_dest. В первом случае клон PDB успешно создался, а во втором случае не создался, т.к. предварительно не была создана директория для его файлов. Если предварительно создать директорию, то команда успешно создаст  клон PDB и с помощью параметра create_file_dest.  В данном посте клонирование PDB будет осуществлено на примере только одного параметра – file_name_convert.

Проверяются имеющиеся PDB и их статусы :

SQL> show pdbs;

CON_ID   CON_NAME   OPEN MODE   RESTRICTED
-------  ---------  ----------  -----------
  2      PDB$SEED   READ ONLY       NO  
  3      XEPDB1     READ ONLY       NO  
  4      MSU        MOUNTED   

Как можно увидеть, появилась новая PDB MSU, находящаяся в режиме монтирования. Основная PDB XEPDB1 находится в режиме read only. Теперь необходимо перевести эти две PDB в режим чтения и записи. Запускается команда, которая открывает все базы данных в режим чтения и записи, кроме шаблонного PDB (PDB$SEED).

SQL> alter pluggable database all except pdb$seed open read write force;
Pluggable database altered.

Далее проверяется состояние баз данных:

SQL> show pdbs;

CON_ID   CON_NAME   OPEN MODE   RESTRICTED
-------  ---------  ----------  -----------
  2      PDB$SEED   READ ONLY       NO  
  3      XEPDB1     READ WRITE      NO  
  4      MSU        READ WRITE      NO    

Как видно, PDB XEPDB1 и MSU теперь находятся в режиме чтения и записи. Последним шагом будет сохранение состояния read write для PDB MSU. Параметр save state позволяет вернуть PDB MSU в текущее состояние (read write) после перезагрузки корневой БД – CDB. Другими словами, после перезагрузки CDB будет осуществлен автоматический запуск PDB MSU также как и XEPDB1.

SQL> alter pluggable database MSU save state;
Pluggable database altered.

Для создания второго клона подключаемой БД XEPDB1 выполняются следующие действия.

Подключение к CDB под пользователем sys:

[oracle@dushanbe ~]$ sqlplus / as sysdba
SQL*Plus: Release 18.0.0.0.0 - Production on Mon Mar 22 15:44:52 2021
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 pdbs;

CON_ID   CON_NAME   OPEN MODE   RESTRICTED
-------  ---------  ----------  -----------
  2      PDB$SEED   READ ONLY       NO  
  3      XEPDB1     READ WRITE      NO  
  4      MSU        READ WRITE      NO  

Выполняется перевод PDB XEPDB1 в режим монтирования и проверяется, что она теперь работает в другом режиме (mounted).

SQL> alter pluggable database XEPDB1 close;
Pluggable database altered.

SQL> show pdbs;

CON_ID   CON_NAME   OPEN MODE   RESTRICTED
-------  ---------  ----------  -----------
  2      PDB$SEED   READ ONLY       NO  
  3      XEPDB1     MOUNTED  
  4      MSU        READ WRITE      NO  

Затем XEPDB1 переводится в режим read only и снова просматриваются состояние PDB.

SQL> alter pluggable database XEPDB1 open read only;
Pluggable database altered.

SQL> show pdbs;

CON_ID   CON_NAME   OPEN MODE   RESTRICTED
-------  ---------  ----------  -----------
  2      PDB$SEED   READ ONLY       NO  
  3      XEPDB1     READ ONLY       NO 
  4      MSU        READ WRITE      NO   

Создается еще один клон базы XEPDB1, который будет называться TTU.

SQL> create pluggable database TTU from XEPDB1
file_name_convert = (
'/opt/oracle/oradata/XE/XEPDB1',
'/opt/oracle/oradata/XE/TTU');

Pluggable database created.

ERROR at line 1:
ORA-65010: maximum number of pluggable databases created

Видно сообщение о том, что клон (еще одна подключаемая БД) создан, однако при этом достигнуто максимально возможное количество (три) подключаемых БД в Oracle Database 18c Express Edition.

Просматриваются все имеющиеся подключаемые БД и видно, что новая PDB TTU создана и работает в режиме mounted:

SQL> show pdbs;

CON_ID   CON_NAME   OPEN MODE   RESTRICTED
-------  ---------  ----------  -----------
  2      PDB$SEED   READ ONLY       NO  
  3      XEPDB1     READ ONLY       NO 
  4      MSU        READ WRITE      NO
  5      TTU        MOUNTED

Все PDB кроме PDB$SEED переводятся в режим чтения и записи и проверяются их статусы:

SQL> alter pluggable database all except pdb$seed open read write force;
Pluggable database altered.

SQL> show pdbs;
 CON_ID   CON_NAME   OPEN MODE   RESTRICTED
-------  ---------  ----------  -----------
  2      PDB$SEED   READ ONLY       NO  
  3      XEPDB1     READ WRITE      NO 
  4      MSU        READ WRITE      NO 
  5      TTU        READ WRITE      NO 

Сохраняется состояние нового клона для будущего автоматического запуска после перезагрузки CDB:

SQL> alter pluggable database TTU save state;
Pluggable database altered.

На этом завершается описание создания двух новых клонов Pluggable Database XEPDB1 в Oracle Database 18c Express Edition.

Leave a Reply

Your email address will not be published. Required fields are marked *