Saiba como criar ambientes flexíveis para testes e simulações
Este tutorial foi elaborado com o propósito de guiar você através do processo de clonagem de um Pluggable Database (PDB) dentro de um mesmo Container Database (CDB). Esta técnica é essencial para os DBAs que buscam criar ambientes paralelos flexíveis, ideais para testes de aplicativos, simulações de funcionalidades e outras aplicações. Em versões anteriores, como no Oracle 11g, essa tarefa seria realizada utilizando ferramentas como RMAN DUPLICATE ou Data Pump. Porém, veremos como esse processo pode ser otimizado nas versões mais recentes, trazendo ganhos significativos em eficiência e tempo para nós, profissionais de banco de dados.
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