Clonar PDB no Mesmo CDB – Banco de Dados 12c
Introdução
Esse tutorial tem objetivo de mostrar como se realiza um clone de um pluggable database (PDB) em um mesmo container (CDB). Tendo como benefício o provisionamento de um ambiente paralelo, de modo versátil, para testes de aplicação, simulações de funcionalidades, etc.
No Oracle 11g isso seria feito via RMAN DUPLICATE ou datapump, consegue ver o benefício para nós DBAS?
Pré-requisitos
- Recursos de hardware disponíveis.
- Banco de dados 12c instalado.
- Container.
- Um PDB para ser fonte do clone.
Comandos Extras:
Meu banco de dados é CDB ou non-CDB?
select name,cdb,con_dbid from v$database;
Qual nome do meu CDB?
SQL> show com_name
Quais PDB existem no meu CDB e qual open_mode?
SELECT name, open_mode FROM v$pdbs;
Como mudar minha sessão para PDB/CDB?
ALTER SESSION SET container = pdb1;
ALTER SESSION SET container = cdb$root;
Procedimentos
Variáveis:
- ORACLE_HOME: /u01/app/oracle/12.2.0.1/db1
- Porta listener: 1539
- Container: CDB$ROOT
- PDB: ORCLPDB
Preparando o PDB fonte para o clone
Setar variáveis de ambiente (Oracle HOME,BASE,SID)
. oraenv
Baixar pluggable database
sqlplus / as sysdba
SQL> alter pluggable database ORCLPDB close immediate;
Abrir em modo read only
SQL> alter pluggable database ORCLPDB open read only;
Criar diretório para clone
SQL> host
cd /u02
mkdir nome_pasta_pdb
exit
Configurando diretório para ser alvo na criação do Clone
sqlplus / as sysdba
SQL> alter system set db_create_file_dest='/u02/ nome_pasta_pdb';
Clonado PDB
sqlplus / as sysdba
SQL> create pluggable database CLONE_NAME from ORCLPDB;
Abrindo pluggable database
sqlplus / as sysdba
SQL> alter pluggable database ORCLPDB open;
-- Torna permanente o estágio do PDB.
SQL> alter pluggable database ORCLPDB save state;
Conectando no PDB clone
system/oracle@localhost:1539/CLONE_NAME;
Observe como fica o status do LISTENER
lsnrctl status
Como ficaria meu TNSnames para entrado do PDB?
CLONE_NAME =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db1-fs.localdomain)(PORT = 1539))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = CLONE_NAME)
)
)
Referências
https://oracle-base.com/articles/12c/multitenant-connecting-to-cdb-and-pdb-12cr1
https://oracle-base.com/articles/12c/multitenant-clone-remote-pdb-or-non-cdb-12cr1