No artigo de hoje quero demonstrar como podemos clonar um Pluggable Database (PDB) a partir de um PDB já existente em nosso container.
Bom, vamos lá. Conectamos em nosso Oracle 12c e subimos o banco:
SQL*Plus: Release 12.1.0.2.0 Production on Sun Sep 10 14:27:44 2017 Copyright (c) 1982, 2014, Oracle. All rights reserved. SQL> conn / as sysdba Connected to an idle instance. SQL> startup ORACLE instance started. Total System Global Area 754974720 bytes Fixed Size 2928968 bytes Variable Size 524291768 bytes Database Buffers 222298112 bytes Redo Buffers 5455872 bytes Database mounted. Database opened.
Verificamos nossos containers disponíveis e que já foram criados:
SQL> SELECT CON_ID, NAME FROM V$CONTAINERS; CON_ID NAME ---------- ------------------------------ 1 CDB$ROOT 2 PDB$SEED 3 PDB01 4 PDB02
Vamos ver mais detalhes do nosso PDB01 que já existe. Repare que nosso banco está aberto para leitura/escrita(READ WRITE):
SQL> SELECT A.CON_ID, A.NAME, B.STATUS, A.OPEN_MODE, A.TOTAL_SIZE
FROM V$PDBS A, DBA_PDBS B
WHERE A.CON_ID = B.PDB_ID;
CON_ID NAME STATUS OPEN_MODE TOTAL_SIZE
---------- ------------------------------ --------- ---------- ----------
2 PDB$SEED NORMAL READ ONLY 796917760
3 PDB01 NORMAL READ WRITE 2158755840
4 PDB02 NORMAL MOUNTED 0
Como estamos conectados em nosso CDB(Root) vamos ver a localização dos datafiles:
SQL> select file_id,file_name from dba_data_files; FILE_ID FILE_NAME ---------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1 /u01/oradata/CDB01/system01.dbf 3 /u01/oradata/CDB01/sysaux01.dbf 4 /u01/oradata/CDB01/undotbs01.dbf 6 /u01/oradata/CDB01/users01.dbf 12 /u01/oradata/CDB01/cdb_users01.dbf
Agora vamos nos conectar no PDB01 e verificar a localização dos datafiles:
SQL> alter session set container = PDB01; Session altered. SQL> select file_id,file_name from dba_data_files; FILE_ID FILE_NAME ---------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 8 /u01/oradata/CDB01/PDB01/system01.dbf 9 /u01/oradata/CDB01/PDB01/sysaux01.dbf 10 /u01/oradata/CDB01/PDB01/SAMPLE_SCHEMA_users01.dbf 11 /u01/oradata/CDB01/PDB01/example01.dbf 13 /u01/oradata/CDB01/PDB01/tbs_pdb_users.dbf
Tudo certo. Agora que sabemos a localização dos datafiles do CDB e do PDB, vamos voltar ao CDB e clonar nosso PDB.
Vamos então criar o PDB03 a partir do PDB01, como vemos abaixo:
SQL> alter session set container = CDB$ROOT;
Session altered.
SQL> create pluggable database PDB03 from PDB01
file_name_convert = ('/u01/oradata/CDB01/PDB01/','/u01/oradata/CDB01/PDB03/')
path_prefix = '/u01/oradata/CDB01/PDB03';
Pluggable database created.
Legal, PDB03 criado!
Vamos conferir. Repare que o PDB03 está com status NEW e ainda montado:
SQL> SELECT A.CON_ID, A.NAME, B.STATUS, A.OPEN_MODE, A.TOTAL_SIZE
FROM V$PDBS A, DBA_PDBS B
WHERE A.CON_ID = B.PDB_ID;
CON_ID NAME STATUS OPEN_MODE TOTAL_SIZE
---------- ------------------------------ --------- ---------- ----------
2 PDB$SEED NORMAL READ ONLY 796917760
3 PDB01 NORMAL READ WRITE 2158755840
4 PDB02 NORMAL MOUNTED 0
5 PDB03 NEW MOUNTED 0
SQL>
Vamos abrir nosso PDB03 para leitura/escrita e conferir na sequência:
SQL> alter pluggable database PDB03 open;
Pluggable database altered.
SQL> SELECT A.CON_ID, A.NAME, B.STATUS, A.OPEN_MODE, A.TOTAL_SIZE
FROM V$PDBS A, DBA_PDBS B
WHERE A.CON_ID = B.PDB_ID;
CON_ID NAME STATUS OPEN_MODE TOTAL_SIZE
---------- ------------------------------ --------- ---------- ----------
2 PDB$SEED NORMAL READ ONLY 796917760
3 PDB01 NORMAL READ WRITE 2158755840
4 PDB02 NORMAL MOUNTED 0
5 PDB03 NORMAL READ WRITE 2158755840
SQL>
É isso ai pessoal.
Sucesso!
Ronaldo.
Nenhum comentário:
Postar um comentário