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.
Pingback: ALL options for creating a PDB using Create Puggable Database command – Bruno Santos da Silva