Duplicar un PDB en un CDB con RMAN - Oracle Database 18c

Por Francisco Riccio
Publicado en Abril 2018



Introducción

A partir de la versión Oracle Database 18c, RMAN tiene la capacidad de copiar en línea un PDB a un CDB específico.

Existen algunas restricciones de esta nueva funcionalidad, las cuales son:

  • La copia del PDB es completa y no puede ser parcial, es decir no se puede excluir algunos tablespaces del PDB.
  • El destino no puede ser un Standby CDB.
  • PDB con TDE-encrypted tablespaces no está permitido.
  • El único método de copia es vía Active Database y por lo tanto no podremos usar nuestros backups previos. Se debe recordar que este método copia los data files vía red hacia el lugar destino.


Implementación

A. Revisión del Ambiente

Origen: CDB (PRDCDB) y el PDB a duplicar se llama PDB_PRD.




Destino: CDB (DEVCDB) y no tiene ningún PDB.





B: Configuración Inicial

Debemos realizar las siguientes validaciones antes de iniciar la duplicación del PDB.


A continuación se procede a configurar el parámetro REMOTE_RECOVERY_FILE_DEST en el CDB destino.



Posterior a la modificación del parámetro se debe crear la carpeta /u03/arch_devcdb en el servidor.



C. Operación de Duplicación

Escenario #1 - A continuación se ejecutará la operación de duplicación vía RMAN, copiando el PDB PDB_PRD al CDB DEVCDB y manteniendo el nombre original del PDB en el destino.

duplicate pluggable database<nombre_PDB>to<nombre_CDB>
db_file_name_convert
('<ruta_datafiles_origen>,'<ruta_datafiles_destino>')
from active database
section size #M; 

Ejemplo:


Se aprecia además que en el destino se ha copiado los archives logs del origen.



 Se valida que el PDB_PRD ha sido duplicado en el CDB DEVCDB.





Escenario #2 - A continuación se ejecutará la operación de duplicación vía RMAN, copiando el PDB PDB_PRD al CDB DEVCDB pero cambiándole de nombre a PDB_DEV.

duplicate pluggable database<nombre_PDB>as<nombre_nuevo_PDB_duplicado>to<nombre_CDB>
db_file_name_convert
('<ruta_datafiles_origen>,'<ruta_datafiles_destino>')
from active database
section size #M;

Ejemplo:



 Se valida que el PDB_PRD ha sido duplicado en el CDB DEVCDB.





Escenario #3 - A continuación se ejecutará la operación de duplicación vía RMAN, copiando el PDB PDB_PRD a su mismo CDB pero cambiándole de nombre a PDB_DEV.

duplicate pluggable database<nombre_PDB>as<nombre_nuevo_PDB_duplicado>to
<nombre_CDB_del_PDB_origen>
db_file_name_convert
('<ruta_datafiles_origen>,'<ruta_datafiles_destino>')
from active database
section size #M;

Ejemplo:



 Se valida que el PDB_PRD ha sido duplicado en su CDB pero con otro nombre.




Este tercer escenario puede ser reemplazado por otros métodos de duplicación o clonación más sencillos, pero se muestra de ejemplo como una alternativa más que se puede tener a la mano.

Al finalizar la operación de duplicación es importante eliminar los archives logs almacenados en la carpeta definida en el parámetro REMOTE_RECOVERY_FILE_DEST.

 

Conclusión
Esta nueva funcionalidad que nos provee Oracle Database 18c nos permite copiar PDBs de un CDB a otro sin tener que clonar completamente el CDB original. Esto nos da mucha flexibilidad para implementar ambientes de desarrollos y pruebas de manera rápida y eficiente.



Francisco Riccio, actualmente se desempeña como Arquitecto de Soluciones en Oracle Perú y es instructor de cursos oficiales de certificación Oracle. Es un Oracle Certified Professional en productos de Oracle Application, Base de Datos, Cloud & Virtualización.

Este artículo ha sido revisado por el equipo de productos Oracle y se encuentra en cumplimiento de las normas y prácticas para el uso de los productos Oracle.