Клонировать PDB из другой CDB через DB link (удалённый клон)
OracleMultitenantКоманда
-- 1) In the SOURCE CDB, a common user:
CREATE USER c##clone_user IDENTIFIED BY "<password>" CONTAINER = ALL;
GRANT CREATE SESSION, CREATE PLUGGABLE DATABASE TO c##clone_user CONTAINER = ALL;
-- 2) In the TARGET CDB root, DB link and test:
CREATE DATABASE LINK clone_link
CONNECT TO c##clone_user IDENTIFIED BY "<password>"
USING '//<source_host>:1521/<source_cdb_service>';
SELECT * FROM dual@clone_link;
-- 3) Clone and open:
CREATE PLUGGABLE DATABASE <new_pdb> FROM <pdb>@clone_link
FILE_NAME_CONVERT = ('/<pdb>/', '/<new_pdb>/');
ALTER PLUGGABLE DATABASE <new_pdb> OPEN;
-- 4) Violations (version, options, parameters, patches):
SELECT name, cause, type, message
FROM pdb_plug_in_violations
WHERE name = UPPER('<new_pdb>') AND status <> 'RESOLVED';Что делает
Копирует PDB из исходной CDB в целевую CDB по сети через DB link; промежуточные файлы и unplug не нужны.
Когда использовать
Чтобы перенести PDB на другой сервер/в другую CDB, создать тестовую копию production на отдельном сервере или перейти на CDB более нового релиза.
Внимание
Исходная и целевая CDB должны быть совместимы по порядку байтов (endianness), набору символов (или целевой AL32UTF8) и опциям; PDB, клонированная в более новый релиз, сначала открывается в режиме RESTRICTED и требует datapatch/обновления. По завершении клонирования удалите DB link и common user. Горячий клон требует local undo + ARCHIVELOG на источнике.
Связанные материалы
- Создать новую PDB из PDB$SEED
- Клонировать PDB в пределах той же CDB (локальный / горячий клон)
- Отключить PDB (unplug) и подключить её к другой (или той же) CDB
- Открыть PDB и сохранить их открытыми при перезапусках CDB (SAVE STATE)
- Задать для каждой PDB лимиты CPU, памяти, I/O и хранилища
- Проверить, в каком контейнере вы находитесь, и запросить все PDB из root (CDB_ / CONTAINERS)