domingo, 8 de junio de 2014

Oracle 12c : Métodos para crear Pluggable database (PDB) - Plug & Unplug



En un artículo anterior expliqué la forma de crear una base de datos PDB mediante el procedimiento de Clonado.  .

Existe otro procedimiento que consiste en convertir una base de datos simple (como la que todos conocemos) en una base de datos PDB.  En 12c una base de datos simple se le conoce con el nombre de Non-CDB.
También es posible mover una base de datos PDB de un contenedor a otro.  Esta funcionalidad es muy útil para temas de Upgrade. 

Para realizar ambos procedimientos utilizamos el método Plug (conectado) y Unplug (desconectado).  El método permite a una base de datos Pluggable conectarse o desconectarse de un contenedor de forma rápida y sencilla.















A continuación explicaré de forma detallada ambos métodos.

I - Conectado de una base de datos Non-CDB a un Contenedor - Plug In

Para el ejemplo utilizaremos una base de datos contendor llamada CDB1 y una base de datos Non-CDB llamada ORCL.

CDB1









ORCL








   
Colocar la base de datos Non-CDB en Read Only
Antes de conectar de la base de datos ORCL al contendor debemos de activarla en modo READ ONLY.
























Preparar la Base de datos Non-CDB para ser conectada al contenedor

Antes de conectar la base de datos ORCL al contenedor CDB1 se debe de cumplir 2 pre-requisitos.

1. Generación del archivo XML con la metadata del Non-CDB
Este archivo es necesario para poder conectar la base de datos ORCL al contenedor. 
Para poder crear el archivo XML hacemos uso de un nuevo paquete de Oracle 12c: DBMS_PDB









2. Contendor debe tener acceso a los datafiles del Non-CBD
Es necesario que el contenedor CDB1 pueda acceder a los datafiles de la base de datos ORCL.
Para nuestro ejemplo ambas bases de datos están en el mismo servidor por lo que no se tiene problemas de acceso.


Bajar la base de datos Non-CDB
Antes de hacer el Plug In al contendor, es necesario bajar la base de datos ORCL de forma limpia.








 

Plug In de la base de datos Non-CDB
Con el archivo XML y la base de datos abajo, procedemos a realizar el Plug In (conectado) al contenedor CDB1.
Para el Plug In utilizamos el comando CREATE PLUGGABLE DATABASE y nombraremos la base de datos PDBORCL


Al momento de crear la base de datos se muestra un error relacionado al tempfile. Este error aparece porque el proceso de Plug In recrea el tablespace temporal.
Borramos los tempfiles y volvemos a lanzar el comando.







Para el ejemplo se he reutilizado los datafiles ya existentes, de la base de datos ORCL, para crear el nuevo Pluggable database.

Si se desea mover o copiar los datafiles de la base de datos Non-CDB a otro directorio (tal vez dentro de la estructura del contendor) se debe de utilizar las opciones MOVE o COPY al final del comando.



Finalizar la conversión de la base de datos Non-CDB a Pluggable Database
Una vez que se ha conectado la base de datos ORCL al contenedor CDB1, nos conectamos a la nueva base de datos Pluggable y ejecutamos el script $ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql.

El script se encargará de eliminar la información en el diccionario de datos que se encuentra duplicada en el
contenedor ROOT y la nueva base de datos Pluggable.


 
Esperamos a que finalice el script de manera correcta



















 
Abrir la nueva base de datos Pluggable
Finalmente abrimos la nueva base de datos PDBORCL en modo READ WRITE y verificamos su configuración.


















De esa manera tenemos una nueva base de datos Pluggable desde  una base de datos Non-CDB.

 
II - Unplug y PlugIn de un PDB de un contendor a otro.

Para este ejemplo utilizaremos 2 contendores CDB1 y CDB2 y un Pluggable Database PDB3.

Lo que haremos es desconectar (Unplug) la base de datos PDB3 del contenedor CDB1 y luego conectar la base (Plug In) en un nuevo contenedor CDB2


Bajara la base de datos Pluggable
Antes de desconectar la base de datos PDB3, es necesario desactivar la base de datos.


















 
UnPlug la base de datos Pluggable del contendor
Procedemos a desconectar la base de datos PDB3 del contendor CDB1.






Al momento de desconectar la base de datos Pluggable se crea un archivo XML con toda la
información de la base de datos (metadata).  Este archivo nos servirá, mas adelante, para poder conectar la base de datos a otro contenedor.

Si revisamos el estado actual de la base de datos Pluggable observaremos que se encuentra en estado MOUNTED Y UNPLUGGED.















Si deseamos bajar la base de datos nos mostrará error










Eliminar la base de datos Pluggable del contendor origen
Ya desconectada la base de datos PDB3 del contenedor CDB1 procedemos a eliminarla del mismo.









PlugIn a un nuevo contendor
El siguiente paso es conectar la base de datos PDB3 en el nuevo contendor CDB2.
Con el archivo XML creado, el procedimiento de PlugIn es similar al de un Non-CDB.













Para este caso se ha movido los datafiles del directorio /u02/oradata/cdb1 al directorio /u02/oradata/cdb2

 
Revisión la configuración del Pluggable database
Revisamos la base de datos PDB3 que acabamos de conectar.









Observamos que se encuentra en estado MOUNTED. 
Procedemos a abrir la base de datos.








De esa manera tenemos la base de datos Pluggable conectada a un nuevo contenedor.

Estas han sido las dos maneras de poder crear un Pluggable database con el método UnPlug y PlugIn. 
Prueben realizarlo en ambientes de test primero y comprueben la simplicidad que se tiene para mover una base de datos Pluggable de un contenedor a otro.

Espero les pueda servir de ayuda.

3 comentarios:

  1. Hola, es posible tener una PDB en un servidor oracle de producción, clonarla y enviarla a otro servidor diferente de desarrollo?

    ResponderBorrar
  2. SI claro
    Es posible crear un contenedor en otro servidor y posteriormente realizar la clonación en red vía DBLINK.

    Si te parece puedo crear un documento para poder explicar ese tipo de clonación.

    ResponderBorrar
  3. si claro seria muy bueno, gracias la verdad me ha ayudado mucho tus textos, excelentes

    ResponderBorrar