Conectando em um PDB a partir de um CDB – Oracle versão 12C

oracle12clogo

A partir do banco de dados Oracle versão 12C algumas coisas mudaram em relação à sua versão anterior, 11G. Uma delas é a introdução de PDB e CDB que faz com que a administração da base de dados se torne um pouco diferente. Imagine uma caixa grande com outras caixas menores dentro dela, imaginou? Pois bem, a caixa maior entenda como o CDB e as caixas menores como o PDB, explicando de uma maneira bem sucinta. Neste post, estarei explicando como se conectar em um PDB a partir de um CDB e a obter informações do mesmo.

  • Conectando no CDB: Até aqui tudo parecido com a versão 11G, fazendo-se uso da v$instance para verificar o status da base:
/home/oracle> sqlplus "/as sysdba"

SQL*Plus: Release 12.1.0.2.0 Production on Sun May 1 11:51:05 2016

Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Advanced Analytics and Real Application Testing options

SQL> select instance_name, status from gv$instance;

INSTANCE_NAME    STATUS
---------------- ------------
CDBORCL1        OPEN
CDBORCL2        OPEN


No entanto, se não fosse pela versão apresentada no banner 12.1.0.2.0, poderíamos achar que esta base de dados tivesse somente estas instâncias e nada demais. Todavia, se tratando da versão 12C, podemos encontrar PDBs e administrar os mesmos. Sendo assim, vamos verificar os PDBS existentes nessa base.

  • Verificando os PDBs existentes na base e já verificando o CDB root, no qual estamos conectados atualmente:
SQL> SQL> COLUMN PDB_NAME FORMAT A15
 
SELECT PDB_ID, PDB_NAME, STATUS FROM DBA_PDBS ORDER BY PDB_ID;

SQL> SQL> 


    PDB_ID PDB_NAME        STATUS
---------- --------------- ---------
         2 PDB$SEED        NORMAL
         3 ORCL            NORMAL
         4 TECHDAT         NORMAL
         5 TDATAB          NORMAL


SQL> SHOW CON_NAME

CON_NAME
------------------------------
CDB$ROOT

Agora que verificamos os PDBs existentes na base, vamos conectar em um deles para chegarmos ao intuito do post . Iremos usar o PDB TECHDAT.

  • Se conectando em um PDB a partir de um CDB:

SQL> ALTER SESSION SET container = TECHDAT;

Session altered.

  • Verificando se estamos conectado no  PDB mencionado:

SQL> SHOW CON_NAME

CON_NAME
------------------------------
TECHDAT

SQL> COLUMN PDB_NAME FORMAT A15

SELECT PDB_ID, PDB_NAME, STATUS FROM DBA_PDBS ORDER BY PDB_ID;SQL> SQL>

PDB_ID PDB_NAME STATUS
---------- --------------- ---------
3 TECHDAT  NORMAL

Um detalhe interessante é que quando estamos dentro do PDB a view v$instance só fará menção de fato a instância ao qual estamos conectado. Para obter informações do PDB ao qual se estar conectado, usa-se a view v$pdbs ou a DBA_PDBS utilizada anteriormente. Como no exemplo abaixo:


SQL> select name, open_mode from v$pdbs;

NAME OPEN_MODE
-------- ----------
TECHDAT READ WRITE

Agora que já vimos como conectar no PDB, vamos voltar ao CDB.

  • Voltando ao CDB :

SQL>  ALTER SESSION SET container = CDB$ROOT;

Session altered.

SQL>  SHOW CON_NAME

CON_NAME
------------------------------
CDB$ROOT

  • Verificando as informações de CDB e PDB de um modo geral:

SQL> select instance_name, status from gv$instance;

INSTANCE_NAME    STATUS
---------------- ------------
CDBORCL1         OPEN
CDBORCL2        OPEN

SQL> COLUMN NAME FORMAT A8

SELECT NAME, CON_ID, DBID, CON_UID, GUID FROM V$CONTAINERS ORDER BY CON_ID;SQL> SQL> 

NAME         CON_ID       DBID    CON_UID GUID
-------- ---------- ---------- ---------- --------------------------------
CDB$ROOT          1 3903653274          1 EB0EDFE2CFF400A8E0430AF1183CD739
PDB$SEED          2 4103666646 4103666646 058400A8E91A0058E0530A9810484BED
ORCL             3 2023794284 2023794284 05842B0BD16800DCE0530A9810482D14
TECHDAT          4 2714962256 2714962256 05897B3422E400D2E0530A9810481676
TDATAB             5 2066344434 2066344434 1F6982154AFE01EEE0530A9810483C01

kindregards

Related posts

Leave a Comment