
В этой статье расскажем, как клонировать PDB другую базу данных (контейнерную БД) в другой системе управления базами данных; этот процесс называется «удаленным клонированием».
Требования:
| ПРОИСХОЖДЕНИЕ | НАПРАВЛЕНИЕ |
| хост: Oracl21_Primary | хост: Oracle21_dg |
| Название исходной базы данных (CDB): testsource | Название целевой базы данных (CDB): testtarget |
| Имя целевой базы данных (PDB): PDB1_SOURCE | Имя целевой базы данных (PDB): TEST_TARGETPDB1 |
| Версия: 19.3 | Версия: 19.3 |
Задание 1: Подготовка исходной среды
Сначала в CDB создаем пользователя, с помощью которого будем клонировать нашу базу данных.
SQL> show con_id
CON_ID
1
SQL> CREATE USER c##testclone IDENTIFIED BY bdconraul CONTAINER=ALL;
SQL> GRANT CREATE SESSION, CREATE PLUGGABLE DATABASE TO c##testclone CONTAINER=ALL;
В базе данных pdb имеется таблица схемы RAUL под названием SOURCETABLE, которую мы собираемся реплицировать на целевой хост — в нашем случае Oracle21_dg. Проверяем содержимое таблицы на исходном сервере;
SQL> ALTER SESSION SET CONTAINER=PDB1_SOURCE;
SQL> show con_name
CON_NAME
——————-
PDB1_SOURCE
SQL> show con_id
CON_ID
————
3
SQL> select * from RAUL.SOURCETABLE;
ID ИМЯ
—————
1 Рауль
2 Хуан
3 Пепе
Задание 2. Подготовка целевой среды
Добавляем в файл tnsnames.ora адрес, указывающий на исходную базу данных CDB, к которой мы подключимся для выполнения копирования.
cat tnsnames.ora
SOURCE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle21)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = testsource)
)
)
2.1. Целевая база данных CDB должна находиться в режиме archive log.
archive log ;
SQL> Режим журналов базы данных: «Архивный» (Archive Mode)
Автоматическая архивация включена
Место назначения архива: USE_DB_RECOVERY_FILE_DEST
Самая старая последовательность онлайн-журналов: 3
Следующая последовательность журналов для архивирования: 5
Текущая последовательность журналов: 5
Если вы не находитесь в режиме archive log, шаги по смене состояния следующие:
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
ARCHIVE LOG ;
2.2. Убедитесь, что local_undo_enabled был установлен в значение «true» в целевой базе данных CDB.
Мы убедились, что параметр (Local UNDO) имеет значение TRUE. Это позволяет нам, помимо прочего, выполнять «горячее» клонирование PDB.

2.3. Создание DB_LINK, указывающего на исходную базу данных.
Мы создаем db_link из целевой базы данных, указывающий на исходную базу данных, с помощью которого будем выполнять копирование.
SQL> show con_id
———————–
1
SQL> CREATE PUBLIC DATABASE LINK clone_pdblink CONNECT TO c##testclone identified by bdconraulusing‘SOURCE‘;
Примечание: Имя db_link: clone_pdblink; имя пользователя для подключения к БД: c##testclone; tnsnames name=SOURCE
Мы проверяем, что db_link был создан правильно:

Задание 3. Клонирование удаленной базы данных.
Мы запускаем команду клонирования с целевой базы данных, указав исходную базу данных через ранее созданную ссылку db_lnik.
SQL> alter session set global_names=false;
Сессия изменена.
SQL> create pluggable database CLONE_PDB1 from PDB1_SOURCE@clone_pdblink;
Подключаемая база данных создана.
Задание 4. Откройте PDB созданный PDB
По умолчанию база данных (pdb) создается в смонтированном состоянии. Откроем файл pdb.
SQL> alter pluggable database test_targetpdb1 open;

Задание 5. Проверяем, всё ли правильно.
Мы убедились, что PDB содержащиеся в ней данные были правильно скопированы в место назначения.






