Creating a new PDB by cloning a local PDB

Antes de ir para a parte prática, é importante mencionar que na versão 12.1, a criação de um PDB a partir de um PDB já existente necessitava de downtime, onde a origem precisava estar em READ ONLY:

ALTER PLUGGABLE DATABASE TESTE CLOSE IMMEDIATE;
ALTER PLUGGABLE DATABASE TESTE OPEN READ ONLY;

A partir da 12.2, esta operação pode ser realizada de forma online, caso o CDB esteja rodando em ARCHIVELOG, e o recurso de LOCAL UNDO esteja habilitado. Como estou na versão 18C, tentarei o método online:

SQL> ALTER SESSION SET CONTAINER=CDB$ROOT;
 
Session altered.
 
SQL> SELECT BANNER FROM V$VERSION;
 
BANNER
--------------------------------------------------------------------------------
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production

Verificando que o CDB já está em ARCHIVELOG mode:

SQL> SELECT LOG_MODE FROM V$DATABASE ;
 
LOG_MODE
------------
ARCHIVELOG

Checando se o recurso de LOCAL UNDO está habilitado:

SQL> SELECT PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME = 'LOCAL_UNDO_ENABLED';
 
PROPERTY_VALUE
-------------------------
TRUE

Validando se o OMF está setado. Em caso positivo, não será necessário, no comando que será executado, dizer ao Oracle o local de destino dos datafiles que serão criados:

SQL> SHOW PARAMETER DB_CREATE_FILE_DEST
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest                  string      /oracle/dados

Realizando a criação do novo PDB:

SQL> CREATE PLUGGABLE DATABASE HIPOFISE3 FROM HIPOFISE2;
 
Pluggable database created.

Abrindo o PDB:

SQL> ALTER PLUGGABLE DATABASE HIPOFISE3 OPEN;
 
Pluggable database altered.

Consultando os datafiles criados, é possível perceber que o OMF criou um diretório novo abaixo do CDB, com o GUID correspondente do novo PDB:

SQL> set linesize 100
SQL> col name format a100
SQL> SELECT NAME FROM V$DATAFILE WHERE CON_ID = ( SELECT CON_ID FROM V$PDBS WHERE NAME='HIPOFISE3' );
 
NAME
----------------------------------------------------------------------------------------------------
/oracle/dados/TALAMO/BDB85F2C66111220E0536B00A8C0B35D/datafile/o1_mf_system_j53hvf75_.dbf
/oracle/dados/TALAMO/BDB85F2C66111220E0536B00A8C0B35D/datafile/o1_mf_sysaux_j53hvf7p_.dbf
/oracle/dados/TALAMO/BDB85F2C66111220E0536B00A8C0B35D/datafile/o1_mf_undotbs1_j53hvf7q_.dbf
/oracle/dados/TALAMO/BDB85F2C66111220E0536B00A8C0B35D/datafile/o1_mf_users_j53hvf7r_.dbf

Realizando teste de conexão ao novo PDB com easyconnect:

SQL> CONN sys/oracle@oel8.localdomain:1521/HIPOFISE3.localdomain as SYSDBA
Connected.
SQL> SHOW CON_NAME CON_ID;
 
CON_NAME
------------------------------
HIPOFISE3
 
CON_ID
------------------------------
5

Obs: Este procedimento foi criado pelo senhor Ahmed Baraka (www.ahmedbaraka.com) e foi apenas reproduzido por mim em um laboratório pessoal para fins de aprendizado.

1 thought on “Creating a new PDB by cloning a local PDB”

  1. Pingback: ALL options for creating a PDB using Create Puggable Database command – Bruno Santos da Silva

Leave a Comment

Your email address will not be published.