Клонирование PDB из одной контейнерной базы в другую | OTUS
🔥 BLACK FRIDAY!
Максимальная скидка -25% на всё. Успейте начать обучение по самой выгодной цене.
Выбрать курс

Курсы

Программирование
iOS Developer. Basic
-25%
Python Developer. Professional
-25%
Разработчик на Spring Framework
-25%
Golang Developer. Professional
-25%
Python Developer. Basic
-25%
iOS Developer. Professional
-25%
Highload Architect
-25%
JavaScript Developer. Basic
-25%
Kotlin Backend Developer
-25%
JavaScript Developer. Professional
-25%
Android Developer. Basic
-25%
Unity Game Developer. Basic
-25%
Разработчик C#
-25%
Программист С Web-разработчик на Python Алгоритмы и структуры данных Framework Laravel PostgreSQL Reverse-Engineering. Professional CI/CD Vue.js разработчик VOIP инженер Программист 1С Flutter Mobile Developer Супер - интенсив по Kubernetes Symfony Framework Advanced Fullstack JavaScript developer Супер-интенсив "Azure для разработчиков"
Инфраструктура
Мониторинг и логирование: Zabbix, Prometheus, ELK
-25%
DevOps практики и инструменты
-25%
Архитектор сетей
-25%
Инфраструктурная платформа на основе Kubernetes
-25%
Супер-интенсив «IaC Ansible»
-16%
Разработчик программных роботов (RPA) на базе UiPath и PIX
-25%
Супер-интенсив "SQL для анализа данных"
-16%
Базы данных Сетевой инженер AWS для разработчиков Cloud Solution Architecture Разработчик голосовых ассистентов и чат-ботов Внедрение и работа в DevSecOps Администратор Linux. Виртуализация и кластеризация Нереляционные базы данных Супер-практикум по использованию и настройке GIT IoT-разработчик Супер-интенсив «ELK»
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

Клонирование PDB из одной контейнерной базы в другую

SUBD_Deep_27.11_site-5020-e4395b.png

Появилась, казалось бы, простая задача — сделать копию рабочего проекта для разработки нового. Уточню — обе контейнерные базы живые, и в них крутятся проекты. Но это оказалось не столь тривиально.

Просто снять backup rman’ом и восстановить его на другой cdb невозможно. Ибо другая cdb ничего об этом pdb не знает. Использовать unplug — тоже не подходит, ведь рабочую базу нельзя тормозить. Везде описана процедура клонирования через dblink, но везде также требовалось в начале перевести исходную pdb в read only состояние через остановку.

Обнаружилось несколько методов клонирования

  1. Через rman — duplicate через auxiliary cdb создаётся отдельный экземпляр (instance) для новой cdb, делается duplicate нужной pdb (при этом необходимая структура cdb тоже дублицируется). Из минусов — нужен общий каталог бэкапов, затем нужно отсоединить pdb и сделать clone в нужную cdb.
  2. Через rman, используя transportable tablespace (в подробности не вдавался).

В конце концов нашли правильное сочетание для поиска нужной инструкции — PDB HOT CLONE, и оказалось всё достаточно просто. Oracle 12c поддерживает клонирование на лету, поэтому необязательно переводить pdb в read only.

Исходные данные: — CDB_source — исходная контейнерная база; — PDB_source — исходная PDB; — CDB_dup — контейнерная база, куда производим клонирование.

Поехали!

На CDB_source создаём пользователя для клонирования (во избежание зависаний все контейнеры должны быть открыты):

SQL> CREATE USER c##remote_clone_user IDENTIFIED BYremote_clone_user container=all;
User created.
SQL> GRANT CREATE SESSION, CREATE PLUGGABLE DATABASE TO c##remote_clone_user CONTAINER=ALL;

на CDB_dup прописываем tns:

cdb_source =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = cdb_source)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = cdb_source)
)
)

создаём DBLINK и клонируем pdb:

SQL> CREATE PUBLIC DATABASE LINK clone_link
CONNECT TO c##remote_clone_user IDENTIFIED BYremote_clone_user USING 'CDB_SOURCE';

Database link created.

SQL> create pluggable database pdbdup from PDB_SOURCE@clone_link;

Pluggable database created.

SQL> alter pluggable database pdbdup open;

Pluggable database altered.

На этом всё. Если хотите узнать больше, задавайте вопросы в комментариях или записывайтесь на курс "Реляционные СУБД"!

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
🎁 Максимальная скидка!
Черная пятница уже в OTUS! Скидка -25% на всё!