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.
Hola, es posible tener una PDB en un servidor oracle de producción, clonarla y enviarla a otro servidor diferente de desarrollo?
ResponderBorrarSI claro
ResponderBorrarEs 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.
si claro seria muy bueno, gracias la verdad me ha ayudado mucho tus textos, excelentes
ResponderBorrar