Multitenant, Acceso Fácil a PDBs.

Por Raúl Antonio Molina Alvarenga

07 de Octubre de 2022

Cuando Comenzó la tecnología de Multitenant, fue como un giro de timón, algo complejo de entender, y para mi existía una analogía que encontraba algo cierta, comparaba Multitenant como SQL Server, algo que un sostengo, aquí les explico mi analogía:

  • la CDB$ROOT, es como la master y msdb del SQLSERVER,
  • La instancia de la base de datos es como el motor en los Servicios de Windows ejecutandose si se apaga  ninguna Base de Datos atachada se puede acceder
  • Las bases de datos , pueden desconectarse y posteriormente pegarse o atacharse, a la misma Instancia Principal o otra en otro servidor
  • Pueden crearse backups de las bases de datos
  • No deben existir Objetos de usuario en la CDB$ROOT y/o la master o msdb.

Habiendo aclarado mi analogía, expongo el acceso.

Parecía complejo y tedioso el conectarse a una PDB en el mismo servidor de Base de datos al inicio, pues si no usábamos  TNSNAMES o easy connect, solo podíamos cambiándonos de contenedor en la sesión así:

[oracle@nodo1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Fri Oct 7 15:57:33 2022

Version 19.15.0.0.0

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

Connected to:

Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production

Version 19.15.0.0.0

SQL> show pdbs;

    CON_ID CON_NAME   OPEN MODE  RESTRICTED

---------- ------------------------------ ---------- ----------

2 PDB$SEED  READ ONLY  NO

3 MYPLUGDB3_NEW  READ WRITE NO

SQL> 
SQL> show con_name

CON_NAME

------------------------------

CDB$ROOT

SQL> 




SQL> show pdbs;

    CON_ID CON_NAME   OPEN MODE  RESTRICTED

---------- ------------------------------ ---------- ----------

2 PDB$SEED  READ ONLY  NO

3 MYPLUGDB3_NEW  READ WRITE NO

SQL> alter session set container=MYPLUGDB3_NEW;

Session altered.

SQL> show con_name

CON_NAME

------------------------------

MYPLUGDB3_NEW

SQL>

Ahora bien, desde 18c, es posible definir una nueva variable de ambiente, que permita conectarse directamente a una Base de Datos sin necesidad de pasar primero por el contenedor raíz, así:

[oracle@nodo1 ~]$ export ORACLE_PDB_SID=MYPLUGDB3_NEW

[oracle@nodo1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Fri Oct 7 16:19:03 2022

Version 19.15.0.0.0

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

Connected to:

Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production

Version 19.15.0.0.0

SQL> show con_name

CON_NAME

------------------------------

MYPLUGDB3_NEW

SQL>

Este formato permite, inclusive ejecutar expdp directamente en la PDB o Base de Datos pluggable sin necesidad de usar tnsnames.

Espero les sirva.

#OracleTipsSV

Saludos.