Clonar um PDB de outro CDB via DB link (remote clone)
OracleMultitenantComando
-- 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';O que faz
Copia um PDB do CDB de origem para o CDB de destino pela rede através de um DB link; não precisa de arquivos intermediários nem de unplug.
Quando usar
Para mover um PDB para outro servidor/CDB, criar uma cópia de teste da produção em um servidor separado ou migrar para um CDB de versão mais nova.
Atenção
Os CDBs de origem e destino devem ser compatíveis em endianness, character set (ou destino AL32UTF8) e opções; um PDB clonado para uma versão mais nova abre RESTRICTED no início e precisa de datapatch/upgrade. Remova o DB link e o common user ao final do clone. Hot clone exige local undo + ARCHIVELOG na origem.
Relacionados
- Criar um novo PDB a partir do PDB$SEED
- Clonar um PDB no mesmo CDB (local / hot clone)
- Fazer unplug de um PDB e plug em outro (ou no mesmo) CDB
- Abrir PDBs e mantê-los abertos após restarts do CDB (SAVE STATE)
- Definir limites de CPU, memória, I/O e storage por PDB
- Confirmar em qual container você está e consultar todos os PDBs a partir do root (CDB_ / CONTAINERS)