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

## 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';

![](https://cdn.hashnode.com/uploads/covers/69835211e3aecdfd224c568a/b23e89e3-c7dd-4ace-8906-d6a149dcc81b.png align="center")

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

![](https://cdn.hashnode.com/uploads/covers/69835211e3aecdfd224c568a/16b33c3b-f9d6-4785-a4f1-ec0356d88eb4.png align="center")

Verifique se o status da **OPTION** consta como **VALID**.

Anteriormente inexistente, a opção foi instalada com sucesso.

Aproveite e compile tudo.

![](https://cdn.hashnode.com/uploads/covers/69835211e3aecdfd224c568a/36c7ed2e-8be5-4277-b5dd-f5c7e2824fea.png align="center")

select comp\_id, version, status  
from dba\_registry  
where comp\_id='SDO';

![](https://cdn.hashnode.com/uploads/covers/69835211e3aecdfd224c568a/18be3ebf-61be-4aae-b889-367abcd9c6e1.png align="center")

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;

![](https://cdn.hashnode.com/uploads/covers/69835211e3aecdfd224c568a/7809b33b-6e8b-4bb3-8602-304eb1d52d6a.png align="center")

![](https://cdn.hashnode.com/uploads/covers/69835211e3aecdfd224c568a/8350d5ce-1cea-47e0-9c53-be2037cf3915.png align="center")

## 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.
