¿Qué es una PDB y en qué se diferencia de una base de datos normal?

Antes de Oracle 12c, cada base de datos en Oracle era independiente y tenía su propio conjunto de archivos, procesos y configuración.

En Oracle 12c y versiones posteriores (como 19c), Oracle introdujo el concepto de Multitenant, lo que permite tener múltiples bases de datos dentro de una sola instancia.

Diferencia clave:

  • Base de datos tradicional (no-CDB): Es una base de datos autónoma con su propio sistema de archivos, usuarios y recursos.
  • PDB (Pluggable Database): Es una base de datos dentro de una CDB (Container Database), que comparte los recursos de la CDB pero funciona de manera independiente.

Analogía simple:


Piensa en una PDB como un departamento dentro de un edificio.

  • El edificio (CDB) → Tiene recursos comunes (agua, electricidad, seguridad).
  • Cada departamento (PDB) → Es un espacio independiente, con sus propias reglas y residentes, pero usa los servicios del edificio.

Comparación visual entre una base de datos tradicional y PDB en Oracle 19c:

¿Cómo se usa una PDB en Oracle 19c?

Para usar una PDB, primero necesitas una CDB (Container Database). Aquí te muestro los comandos básicos para administrar PDBs.

Ver qué PDBs existen en tu CDB

Ejecuta el siguiente comando para ver las PDBs en tu base de datos:

SHOW CON_NAME; -- Ver en qué base de datos estás conectado
SHOW PDBS; -- Lista todas las PDBs dentro de la CDB

Aquí:

  • PDB$SEED → Es una PDB especial usada como plantilla para crear nuevas PDBs.
  • PDB1 y PDB2 → Son bases de datos dentro de la CDB.

Ventajas de usar PDBs en Oracle 19c

Menor consumo de recursos: Una sola instancia puede gestionar múltiples PDBs.
Fácil administración: Puedes mover una PDB de una CDB a otra sin necesidad de export/import.
Seguridad mejorada: Cada PDB tiene sus propios usuarios y permisos.
Escalabilidad: Permite manejar muchas bases de datos sin necesidad de instancias separadas.
Mejor uso de licencias: Oracle permite hasta 3 PDBs gratis sin necesidad de una licencia adicional.

Conectarse a una PDB

Si estás en la CDB, puedes cambiar a una PDB con:

ALTER SESSION SET CONTAINER = PDB1;

O puedes conectarte directamente desde SQL*Plus:

sqlplus sys@PDB1 as sysdba

Para confirmar en qué base de datos estás conectado:

SHOW CON_NAME;

Crear una nueva PDB

Para crear una nueva PDB llamada PDB_NUEVA, ejecuta:

CREATE PLUGGABLE DATABASE PDB_NUEVA ADMIN USER pdbadmin IDENTIFIED BY Password123;

Después de crearla, ábrela con:

ALTER PLUGGABLE DATABASE PDB_NUEVA OPEN;

Cerrar y eliminar una PDB

Si quieres cerrar una PDB, usa:

ALTER PLUGGABLE DATABASE PDB1 CLOSE;

Para eliminarla completamente:

DROP PLUGGABLE DATABASE PDB1 INCLUDING DATAFILES;

Conectarse a una PDB

Ahora nos conectamos a la PDB recién creada (PDB_TEST):

ALTER SESSION SET CONTAINER = PDB_TEST;
SHOW CON_NAME;

También puedes conectarte directamente desde SQL*Plus:

sqlplus sys@PDB_TEST as sysdba

Crear un usuario dentro de la PDB

Cada PDB puede tener sus propios usuarios y esquemas. Creamos un usuario dentro de PDB_TEST:

CREATE USER usuario_pdb IDENTIFIED BY Password123;
GRANT CONNECT, RESOURCE TO usuario_pdb;
ALTER USER usuario_pdb QUOTA UNLIMITED ON USERS;

Ahora usuario_pdb puede conectarse y trabajar en la PDB.

Backup y Restore de una PDB

Si deseas hacer un backup de PDB_TEST, usa RMAN:

rman target /
BACKUP PLUGGABLE DATABASE PDB_TEST;

Para restaurarla en caso de fallo:

rman target /
RESTORE PLUGGABLE DATABASE PDB_TEST;
RECOVER PLUGGABLE DATABASE PDB_TEST;
ALTER PLUGGABLE DATABASE PDB_TEST OPEN;

Migrar una PDB a otra CDB

Imagina que tienes PDB1 en una CDB (CDB_OLD) y quieres moverla a CDB_NEW.

Desconectar la PDB de la CDB actual

ALTER PLUGGABLE DATABASE PDB1 CLOSE;
ALTER PLUGGABLE DATABASE PDB1 UNPLUG INTO '/u01/app/oracle/oradata/PDB1.xml';

Esto genera un archivo XML con la configuración de la PDB.

Conectar la PDB en la nueva CDB

En la nueva CDB (CDB_NEW), crea la PDB a partir del XML:

CREATE PLUGGABLE DATABASE PDB1 USING '/u01/app/oracle/oradata/PDB1.xml';
ALTER PLUGGABLE DATABASE PDB1 OPEN;

¿Cuándo usar PDBs y cuándo una BD tradicional?

  • Una PDB (Pluggable Database) es una base de datos dentro de una CDB (Container Database).
  • La CDB comparte recursos con todas sus PDBs, haciendo más eficiente el uso de memoria y CPU.
  • PDBs permiten migraciones rápidas, consumen menos recursos y facilitan la administración.
  • Si vienes de versiones antiguas (11g o anteriores), considera migrar a una arquitectura multitenant.

Si antes Oracle era como una ciudad donde cada casa tenía su propio generador eléctrico (BD tradicional), ahora con PDBs, Oracle es un edificio de departamentos con un generador central que ahorra energía y reduce costos.

Deja un comentario

Tendencias