Remote PDB Cloning no Oracle 19c
Como clonar um PDB remoto via Database Link (com evidências reais no alert.log)

Introdução
Em ambientes Oracle Multitenant, a necessidade de clonar um PDB entre CDBs distintos é comum para refresh de ambientes, provisionamento rápido, migração controlada e consolidação. Uma das formas mais elegantes no Oracle 19c é utilizar Remote Cloning via Database Link.
Cenário do Laboratório
Origem: CDB1 contendo PDB1_RMDB
Destino: CDB2 onde será criado PDB2_RMDB
Detalhe: Ambos precisam ter
1.Pré-requisitos Técnicos
Validar LOCAL UNDO, no banco de origem:
SELECT property_name, property_value
FROM database_properties
WHERE property_name = 'LOCAL_UNDO_ENABLED';
2. Criar usuário comum para o clone remoto
No CDB de origem:
CREATE USER c##remote_clone_user IDENTIFIED BY remote_clone_user CONTAINER=ALL;
GRANT CREATE SESSION, CREATE PLUGGABLE DATABASE TO c##remote_clone_user CONTAINER=ALL;
3. Configurar TNS no destino
Este será o dblink utilizado para capturar os dados a partir da origem e clonar o pdb no destino.
remote_cdb =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.18.10)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pdb3)
)
)
4. Criando o Database Link
CREATE DATABASE LINK clone_link
CONNECT TO c##remote_clone_user IDENTIFIED BY remote_clone_user
USING 'remote_cdb';
Valide o dblink antes de iniciar a atividade:
SQL> select sysdate from dual@clone_link;
SYSDATE
---------
23-FEB-26
5. Executando o Remote Clone
No servidor de destino, inicie o clone.
SQL> CREATE PLUGGABLE DATABASE PDB2_RMDB
FROM PDB1_RMDB@clone_link;
5.1. Evidências no alert.log
Completed: CREATE PLUGGABLE DATABASE PDB2_RMDB FROM PDB1_RMDB@clone_link
2026-02-23T17:14:31.465239-03:00
PDB2_RMDB(4):Endian type of dictionary set to little
2026-02-23T17:14:33.344149-03:00
****************************************************************
Pluggable Database PDB2_RMDB with pdb id - 4 is created as UNUSABLE.
If any errors are encountered before the pdb is marked as NEW,
then the pdb must be dropped
local undo-1, localundoscn-0x000000000000012b
****************************************************************
2026-02-23T17:14:37.703009-03:00
Applying media recovery for pdb-4099 from SCN 592315319879 to SCN 592318035910
Remote log information: count-1
thr-1,seq-20746,logfile-+ARCH/RMDB/partial_archivelog/2026_02_23/thread_1_seq_20746.342.1225991677,los-592315312478,nxs-18446744073709551615,maxblks-17452
PDB2_RMDB(4):Media Recovery Start
2026-02-23T17:14:37.719435-03:00
PDB2_RMDB(4):Serial Media Recovery started
PDB2_RMDB(4):max_pdb is 5
2026-02-23T17:14:38.141677-03:00
PDB2_RMDB(4):Media Recovery Log +ARCH/RMDB/partial_archivelog/2026_02_23/thread_1_seq_20746.342.1225991677
2026-02-23T17:14:38.467834-03:00
PDB2_RMDB(4):Incomplete Recovery applied until change 592318035910 time 02/23/2026 17:14:35
2026-02-23T17:14:38.484103-03:00
PDB2_RMDB(4):Media Recovery Complete (RMDB)
PDB2_RMDB(4):Pluggable database PDB2_RMDB pseudo opening
2026-02-23T17:14:38.737473-03:00
PDB2_RMDB(4):SUPLOG: Initialize PDB SUPLOG SGA, old value 0x0, new value 0x18
PDB2_RMDB(4):Autotune of undo retention is turned on.
2026-02-23T17:14:39.505291-03:00
PDB2_RMDB(4):Undo initialization recovery: Parallel FPTR failed: start:1801041217 end:1801041235 diff:18 ms (0.0 seconds)
PDB2_RMDB(4):Undo initialization recovery: err:0 start: 1801041210 end: 1801041442 diff: 232 ms (0.2 seconds)
2026-02-23T17:14:39.783233-03:00
PDB2_RMDB(4):[4108367] Successfully onlined Undo Tablespace 2.
PDB2_RMDB(4):Undo initialization online undo segments: err:0 start: 1801041442 end: 1801041513 diff: 71 ms (0.1 seconds)
PDB2_RMDB(4):Undo initialization finished serial:0 start:1801041210 end:1801041561 diff:351 ms (0.4 seconds)
PDB2_RMDB(4):Database Characterset for PDB2_RMDB is WE8MSWIN1252
PDB2_RMDB(4):Pluggable database PDB2_RMDB pseudo closing
PDB2_RMDB(4):JIT: pid 4108367 requesting stop
PDB2_RMDB(4):Closing sequence subsystem (18980911116255).
PDB2_RMDB(4):Buffer Cache flush started: 4
PDB2_RMDB(4):Buffer Cache flush finished: 4
2026-02-23T17:14:41.231833-03:00
Completed: CREATE PLUGGABLE DATABASE PDB2_RMDB FROM PDB1_RMDB@clone_link
2026-02-23T17:39:39.513401-03:00
6. Abrindo o PDB
ALTER PLUGGABLE DATABASE PDB2_RMDB OPEN;
6.1 Evidências do Alert.log
ALTER PLUGGABLE DATABASE PDB2_RMDB OPEN
2026-02-23T17:39:39.525650-03:00
PDB2_RMDB(4):Pluggable database PDB2_RMDB opening in read write
PDB2_RMDB(4):SUPLOG: Initialize PDB SUPLOG SGA, old value 0x0, new value 0x18
PDB2_RMDB(4):Autotune of undo retention is turned on.
PDB2_RMDB(4):Endian type of dictionary set to little
2026-02-23T17:39:40.932091-03:00
PDB2_RMDB(4):Undo initialization recovery: Parallel FPTR complete: start:1802542564 end:1802542662 diff:98 ms (0.1 seconds)
PDB2_RMDB(4):Undo initialization recovery: err:0 start: 1802542559 end: 1802542662 diff: 103 ms (0.1 seconds)
2026-02-23T17:39:42.518603-03:00
PDB2_RMDB(4):[4108367] Successfully onlined Undo Tablespace 2.
PDB2_RMDB(4):Undo initialization online undo segments: err:0 start: 1802542662 end: 1802544248 diff: 1586 ms (1.6 seconds)
PDB2_RMDB(4):Undo initialization finished serial:0 start:1802542559 end:1802544297 diff:1738 ms (1.7 seconds)
PDB2_RMDB(4):Deleting old file#8 from file$
PDB2_RMDB(4):Deleting old file#9 from file$
PDB2_RMDB(4):Deleting old file#10 from file$
PDB2_RMDB(4):Deleting old file#11 from file$
PDB2_RMDB(4):Deleting old file#12 from file$
PDB2_RMDB(4):Deleting old file#13 from file$
PDB2_RMDB(4):Deleting old file#14 from file$
PDB2_RMDB(4):Deleting old file#15 from file$
PDB2_RMDB(4):Deleting old file#16 from file$
PDB2_RMDB(4):Deleting old file#17 from file$
PDB2_RMDB(4):Deleting old file#18 from file$
PDB2_RMDB(4):Deleting old file#19 from file$
PDB2_RMDB(4):Deleting old file#20 from file$
PDB2_RMDB(4):Deleting old file#21 from file$
PDB2_RMDB(4):Deleting old file#22 from file$
PDB2_RMDB(4):Adding new file#102 to file$(old file#8). fopr-1, newblks-1728000, oldblks-26880
PDB2_RMDB(4):Adding new file#103 to file$(old file#9). fopr-1, newblks-211840, oldblks-21120
PDB2_RMDB(4):Adding new file#104 to file$(old file#10). fopr-1, newblks-819840, oldblks-7680
PDB2_RMDB(4):Adding new file#105 to file$(old file#11). fopr-1, newblks-640, oldblks-640
PDB2_RMDB(4):Adding new file#106 to file$(old file#12). fopr-1, newblks-4194302, oldblks-131072
PDB2_RMDB(4):Adding new file#107 to file$(old file#13). fopr-1, newblks-4194302, oldblks-131072
PDB2_RMDB(4):Adding new file#110 to file$(old file#14). fopr-1, newblks-131072, oldblks-131072
PDB2_RMDB(4):Adding new file#111 to file$(old file#15). fopr-1, newblks-489472, oldblks-131072
PDB2_RMDB(4):Adding new file#112 to file$(old file#17). fopr-1, newblks-131072, oldblks-131072
PDB2_RMDB(4):Adding new file#113 to file$(old file#18). fopr-1, newblks-131072, oldblks-131072
PDB2_RMDB(4):Adding new file#108 to file$(old file#20). fopr-1, newblks-3638272, oldblks-131072
PDB2_RMDB(4):Adding new file#109 to file$(old file#21). fopr-1, newblks-3177472, oldblks-131072
PDB2_RMDB(4):Adding new file#114 to file$(old file#22). fopr-1, newblks-2918400, oldblks-12800
PDB2_RMDB(4):Successfully created internal service PDB2_RMDB at open
2026-02-23T17:39:43.638607-03:00
****************************************************************
Post plug operations are now complete.
Pluggable database PDB2_RMDB with pdb id - 4 is now marked as NEW.
****************************************************************
PDB2_RMDB(4):Database Characterset for PDB2_RMDB is WE8MSWIN1252
2026-02-23T17:39:49.052903-03:00
PDB2_RMDB(4):JIT: pid 4108367 requesting full stop
2026-02-23T17:39:55.253777-03:00
Violations: Type: 2, Count: 3
PDB2_RMDB(4):***************************************************************
PDB2_RMDB(4):WARNING: Pluggable Database PDB2_RMDB with pdb id - 4 is
PDB2_RMDB(4): altered with errors or warnings. Please look into
PDB2_RMDB(4): PDB_PLUG_IN_VIOLATIONS view for more details.
PDB2_RMDB(4):***************************************************************
PDB2_RMDB(4):SUPLOG: Set PDB SUPLOG SGA at PDB OPEN, old 0x18, new 0x0 (no suplog)
2026-02-23T17:40:03.101257-03:00
PDB2_RMDB(4):Opening pdb with Resource Manager plan: DEFAULT_PLAN
PDB2_RMDB(4):joxcsys_required_dirobj_exists: directory object exists with required path /u01/app/oracle/product/19.0.0.0/dbhome_1/javavm/admin/, pid 4108367 cid 4
2026-02-23T17:40:04.120041-03:00
Pluggable database PDB2_RMDB opened read write
Completed: ALTER PLUGGABLE DATABASE PDB2_RMDB OPEN
7. Verificando PDB_PLUG_IN_VIOLATIONS
Valide se há violações ao abrir o PDB. No meu caso, não foram detectadas ocorrências e as atividades prosseguiram. Caso encontre alguma violação, realize as correções antes de continuar para evitar divergências nos dados.
SELECT name, cause, type, message, status
FROM pdb_plug_in_violations
WHERE name = 'PDB2_RMDB';
Esse warning é bem típico após plug/clone de PDB: ele está dizendo que no PDB clonado o componente/option “SDO” (Oracle Spatial / Locator) não está instalado (aparece como NULL), enquanto no CDB raiz ele está instalado/registrado como 19.0.0.0.0. Por isso o PDB_PLUG_IN_VIOLATIONS registra OPTION / WARNING / PENDING.
Temos também warning de parâmetros:
Esses aqui:
pga_aggregate_target mismatch: Previous 2032M Current 2G
session_cached_cursors mismatch: Previous 200 Current 50
São warnings de parâmetro do CDB no momento do plug/clone.
Em geral:
não quebram o PDB
são só “diferença de configuração” registrada como PENDING
Mas vamos arrumar.
8. Warnings de Parâmetros:
No CDB (não no PDB), ajuste:
alter system set session_cached_cursors=200 scope=spfile;
alter system set pga_aggregate_target=2032M scope=both;
8.1 Warnings de Option:
Repita este processo para todos os PDBS que tiverem a VIOLATION registrada.
alter session set container = PDB1_RMDB;
@?/md/admin/catmd.sql
@?/rdbms/admin/utlrp.sql
alter session set container = PDB2_RMDB;
@?/md/admin/catmd.sql
@?/rdbms/admin/utlrp.sql
Verifique se o status da OPTION consta como VALID.
Anteriormente inexistente, a opção foi instalada com sucesso.
Aproveite e compile tudo.
select comp_id, version, status
from dba_registry
where comp_id='SDO';
Para aplicar as alterações de parâmetros e corrigir as violações, reinicie os PDBs e valide o status em seguida.
alter pluggable database PDB1_RMDB close immediate;
alter pluggable database PDB1_RMDB open;
alter pluggable database PDB2_RMDB close immediate;
alter pluggable database PDB2_RMDB open;
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1_RMDB READ WRITE NO
4 PDB2_RMDB READ WRITE NO
col cause for a25
col time for a25
col message for a80
select name, type, cause, status, time, message
from pdb_plug_in_violations
where name IN ('PDB1_RMDB', 'PDB2_RMDB')
and message like '%SDO%'
order by time desc;
Conclusão
Remote PDB Cloning no Oracle 19c permite clonagem consistente, auditável e rápida entre CDBs, eliminando processos manuais como unplug/plug via XML ou restore físico tradicional.





