Skip to main content

Command Palette

Search for a command to run...

Remote PDB Cloning no Oracle 19c

Como clonar um PDB remoto via Database Link (com evidências reais no alert.log)

Updated
Remote PDB Cloning no Oracle 19c

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)
    )
  )

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.

42 views