Migrando una Base de Datos Oracle On-Premise a Oracle Cloud Usando RMAN Cross-Platform Transportable PDB

Por Joel Pérez Oracle ACE director, Skant Gupta Oracle ACE & César Aguilar
Publicado en Mayo 2018

Revisado por Diana Patino



Antes de comenzar, tal vez quieras conocer otros métodos para migrar una Base de Datos Oracle On-Premise a Oracle Cloud:
Usando Data Pump Full Transportable
Usando Data Pump Transportable Tablespace
Desde una on-premise PDB, usando Remote Cloning
Desde una on-premise (Non-CDB), usando Remote Cloning



Este método puede ser usado si se cumple con las siguientes características: la plataforma “On-Premise” es “little endian” y el “character sets” de la base de datos “On-Premise” y la base del Database Cloud Service son compatibles.

Para migrar una Base de Datos Oracle 12c PDB para una Base de Datos Oracle 12c en el Oracle Database Cloud Service usando el método RMAN cross-platform transportable PDB, se deben realizar las siguientes tareas:


En el servidor de base de datos “On-Premise”

1. Invocar el SQL*Plus y cerrar la PDB “On-Premise”.

2. Ejecutar el comando ALTER PLUGGABLE DATABASE UNPLUG para generar el archivo XML con la lista de los datafiles que serán “plugged” en la base de datos cloud.

3. Invocar el RMAN y conectarse a la raíz. Ejecutar el comando BACKUP FOR TRANSPORT PLUGGABLE DATABASE.

4. Usar un utilitario de copia segura (SCP) para transferir el archivo XML y el backup set para el nodo del Database Cloud Service.


En el nodo del Database Cloud Service

5. Crear la base de datos del Database Cloud Service

6. Invocar el RMAN y conectarse a la raíz, ejecutar el comando RESTORE ALL FOREIGN DATAFILES.

7. Invocar el SQL*Plus y conectarse a la raíz, ejecutar el comando CREATE PLUGGABLE DATABASE

8. Ejecutar el comando ALTER PLUGGABLE DATABASE OPEN



Ejemplo: Base de Datos On-Premise para la Nube Usando  RMAN Cross-Platform Transportable PDB


El siguiente ejemplo indica como migrar una base de datos “On-Premise” para el Cloud usando RMAN Cross-Platform Transportable PDB

En este ejemplo, la base de datos “On-Premise” está en un servidor Linux.


En el servidor de base de datos “On-Premise”

1.- Invoque el SQL*Plus y cierre la PDB “On-Premise”.

a) Invoque el SQL*Plus e ingrese a la base de datos “On-Premise” con el usuario SYS.

[oracle@cloud ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Sun Jun 4 11:47:11 2017

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


Connected to:

Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit ProductionWith the Partitioning, 
OLAP, Advanced Analytics and Real Application Testing options

SQL>



b) Cierre la PDB “On-Premise” PREM_PDB.

SQL> ALTER PLUGGABLE DATABASE pdb_prem CLOSE;

Pluggable database altered.

SQL>





2. Ejecute el comando ALTER PLUGGABLE DATABASE UNPLUG para generar un archive XML con la lista de los datafiles que serán plugged en la base de datos del Cloud.

a) Cree un directorio para el archive xml y el backup.

[oracle@cloud ~]$ mkdir –p /u01/app/dpump/

[oracle@cloud ~]$



b) Unplug la PDB. El siguiente commando crea el archive XML.

SQL> ALTER PLUGGABLE DATABASE pdb_prem UNPLUG INTO '/u01/app/dpump/PDB_PREM.xml';

Pluggable database altered.

SQL>





3.- Invoque el RMAN y conéctese a la raíz. Ejecute el  comando BACKUP FOR TRANSPORT PLUGGABLE DATABASE

a) Invoque el RMAN e ingrese a la base de datos “On-Premise” con el usuario SYS.

[oracle@cloud admin]$ rman target /

Recovery Manager: Release 12.1.0.2.0 - Production on Thu Jun 8 22:33:05 2017

Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.

connected to target database: CDBPREM (DBID=1893698667)

RMAN>



b) Tome el backup

RMAN> BACKUP FOR TRANSPORT AS COMPRESSED BACKUPSET PLUGGABLE  DATABASE  
'PDB_PREM'  FORMAT  '/u01/app/dpump/PDB_PREM.dfb';


Starting backup at 08-JUN-17

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=82 device type=DISK

channel ORA_DISK_1: starting compressed full datafile backup set

channel ORA_DISK_1: specifying datafile(s) in backup set

input datafile file number=00011 name=/u01/app/oracle/oradata/CDBPREM/PDB_PREM/example01.dbf

input datafile file number=00009 name=/u01/app/oracle/oradata/CDBPREM/PDB_PREM/sysaux01.dbf

input datafile file number=00008 name=/u01/app/oracle/oradata/CDBPREM/PDB_PREM/system01.dbf

input datafile file number=00010 
name=/u01/app/oracle/oradata/CDBPREM/PDB_PREM/SAMPLE_SCHEMA_users01.dbf

input datafile file number=00012 name=/u01/app/oracle/oradata/CDBPREM/fsindex01.dbf

input datafile file number=00013 name=/u01/app/oracle/oradata/CDBPREM/fsdata01.dbf

channel ORA_DISK_1: starting piece 1 at 08-JUN-17

channel ORA_DISK_1: finished piece 1 at 08-JUN-17

piece handle=/u01/app/dpump/PDB_PREM.dfb tag=TAG20170608T223310 comment=NONE

channel ORA_DISK_1: backup set complete, elapsed time: 00:01:35

Finished backup at 08-JUN-17


RMAN>






4.- Cree el nuevo Cloud Database Service

a) Ingrese a la cuenta del Oracle Cloud, diríjase a la página "Oracle Database Cloud Service" y cree un nuevo servicio.

  • En Service Name, ingresar Cloud-Mig12c.
  • En Service Level, seleccionar Oracle Database Cloud Service.
  • En Metering Frequency, seleccionar la frecuencia apropiada para el ambiente.
  • En Software Release, seleccionar Oracle Database 12c Release1.
  • En Software Edition, seleccionar Enterprise Edition.
  • En Database Type, seleccionar Single Instance.

Presione click en Next para continuar.


Figura1. Creando un nuevo servicio (Cloud-Mig12c)



b) En la pantalla de Detalles del Servicio, realice lo siguiente:

  • Para el DB Name (SID), ingrese PRODDB.
  • Ingrese el Administrative Password deseado y confirme la contraseña (esta será la contraseña del sys).
  • En Usable Database Storage (GB), ingresar 25.
  • Para el Compute Shape, seleccionar OC3 -1 OCPU, 7.5GB RAM (este es el mínimo requerido).
  • Para SSH Public Key, ingresar rsa-key-20170111.pub

Presione click en Next para continuar.


Figura 2. Especificando los detalles del servicio



c) Finalmente, revise la configuración y de click en Create para crear la base de datos en la nube.


Figure 3. Creando la instancia de base de datos cloud.



Después de unos pocos minutos, visualizará que la instancia de base de datos en la nube ha sido creada satisfactoriamente.


Figure 4. La base de datos primaria ha sido creada



d) Presione Click en service name (Cloud-Mig12c) para abrir la página principal de la base de datos.


Figure 5. Página principal de la base de datos cloud



e) Antes de tratar de conectarnos a la instancia de base de datos primaria en el cloud, debemos habilitar el dblistener en la sección Access Rules, haciendo lo siguiente:

e.1. Abrir el servicio de la base de datos y seleccionar Access Rules del menú.


Figure 6. Seleccionando la opción Access Rules


e.2. Para la regla ora_p2_dblistener, seleccione Enable del menú Actions.


Figura 7. Habilitando la regla ora_p2_dblistener




Conexión a la Base de Datos Cloud


Abra una instancia de PuTTY y conéctese al nodo usando la llave pública SSH.


Figure 8. Conexión al nodo usando PuTTY




5.- Use un utilitario de copia segura para transferir el archivo XML y el backup set para el nodo del Database Cloud Service.

a) En el nodo del Database Cloud Service, cree un directorio para el backup set y el archive dump.

[oracle@Cloud-Mig12c ~]$ mkdir –p /u01/app/on_premise/

[oracle@Cloud-Mig12c ~]$


b) Antes de usar el commando scp para copiar los archivos, se debe asegurar que la llave privada SSH, para acceder al nodo del Database Cloud Service, esté disponible en el servidor “On-Premise”.

c) En el servidor de base de datos “On-Premise”, use el utilitario SCP para transferir el backup set y el archivo dump para el nodo en el Database Cloud Service.

[oracle@cloud ~]$ scp -i rsa-key-20170111.ssh /u01/app/dpump/PDB_PREM.xml 
oracle@129.144.149.23:/u01/app/on_premise

Enter passphrase for key 'rsa-key-20170111.ssh':

PDB_PREM.xml
100% 7681     7.5KB/s   00:00

[oracle@cloud ~]$ scp -i rsa-key-20170111.ssh /u01/app/dpump/PDB_PREM.dfb 
oracle@129.144.149.23:/u01/app/on_premise

Enter passphrase for key 'rsa-key-20170111.ssh':

PDB_PREM.dfb
100%  190MB  55.8KB/s   58:06

[oracle@cloud ~]$





6. En el nodo del DataBase Cloud Service, invoque el RMAN y conéctese a la raíz. Ejecute el comando RESTORE ALL FOREIGN DATAFILES

a) Invoque el RMAN e ingrese a la PDB como un usuario que tenga el privilegio SYSDBA o SYSBACKUP privilege.

[oracle@Cloud-Mig12c ~]$ rman target /

Recovery Manager: Release 12.1.0.2.0 - Production on Thu Jun 8 18:08:20 2017

Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.

connected to target database: PRODDB (DBID=685826250)

RMAN>


b) Ejecute el comando RESTORE

RMAN> RESTORE ALL FOREIGN DATAFILES TO NEW FROM BACKUPSET  '/u01/app/on_premise/PDB_PREM.dfb';


Starting restore at 08-JUN-17

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=36 device type=DISK

channel ORA_DISK_1: starting datafile backup set restore

channel ORA_DISK_1: specifying datafile(s) to restore from backup set

channel ORA_DISK_1: restoring all foreign files in backup piece

channel ORA_DISK_1: reading from backup piece /u01/app/on_premise/PDB_PREM.dfb

channel ORA_DISK_1: restoring foreign file 11 to 
/u02/app/oracle/oradata/PRODDB/datafile/o1_mf_example_dmm4nwql_.dbf

channel ORA_DISK_1: restoring foreign file 9 to 
/u02/app/oracle/oradata/PRODDB/datafile/o1_mf_sysaux_dmm4nwt1_.dbf

channel ORA_DISK_1: restoring foreign file 8 to 
/u02/app/oracle/oradata/PRODDB/datafile/o1_mf_system_dmm4nwx9_.dbf

channel ORA_DISK_1: restoring foreign file 10 to 
/u02/app/oracle/oradata/PRODDB/datafile/o1_mf_users_dmm4nx06_.dbf

channel ORA_DISK_1: restoring foreign file 12 to 
/u02/app/oracle/oradata/PRODDB/datafile/o1_mf_fsindex_dmm4nx1z_.dbf

channel ORA_DISK_1: restoring foreign file 13 to 
/u02/app/oracle/oradata/PRODDB/datafile/o1_mf_fsdata_dmm4nx3c_.dbf

channel ORA_DISK_1: foreign piece handle=/u01/app/on_premise/PDB_PREM.dfb

channel ORA_DISK_1: restored backup piece 1

channel ORA_DISK_1: restore complete, elapsed time: 00:01:46

Finished restore at 08-JUN-17


RMAN>


c) Salga del RMAN.




7.- En el nodo del Database Cloud Service, invoque el SQL*Plus y conéctese a la raíz. Ejecute el comando CREATE PLUGGABLE DATABASE

a) En el servidor “On-Premise”, invoque el SQL*Plus e ingrese a la base de datos “On-Premise” con el usuario SYS.

[oracle@cloud ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Sun Jun 4 11:47:11 2017

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

Connected to:

Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit ProductionWith the Partitioning, 
OLAP, Advanced Analytics and Real Application Testing options

SQL>


b) Ejecute el comando CREATE PLUGGABLE DATABASE

SQL> CREATE PLUGGABLE DATABASE PDB_PREM as clone USING '/u01/app/on_premise/PDB_PREM.xml'
source_file_name_convert = ( '/u01/app/oracle/oradata/CDBPREM/PDB_PREM/system01.dbf','/u02/app/oracle/oradata/PRODDB/datafile/
o1_mf_system_dmm4nwx9_.dbf', '/u01/app/oracle/oradata/CDBPREM/PDB_PREM/sysaux01.dbf','/u02/app/oracle/oradata/PRODDB/datafile/
o1_mf_sysaux_dmm4nwt1_.dbf', '/u01/app/oracle/oradata/CDBPREM/PDB_PREM/SAMPLE_SCHEMA_users01.dbf',
'/u02/app/oracle/oradata/PRODDB/datafile/o1_mf_users_dmm4nx06_.dbf', '/u01/app/oracle/oradata/CDBPREM/PDB_PREM/example01.dbf','/u02/app/oracle/oradata/PRODDB/datafile/
o1_mf_example_dmm4nwql_.dbf', '/u01/app/oracle/oradata/CDBPREM/fsindex01.dbf','/u02/app/oracle/oradata/PRODDB/datafile/
o1_mf_fsindex_dmm4nx1z_.dbf', '/u01/app/oracle/oradata/CDBPREM/PDB_PREM/PDB_PREM_temp012017-05-21_01-01-24-PM.dbf',/u02/app/
oracle/oradata/PRODDB/datafile/pdb4_temp01.dbf', '/u01/app/oracle/oradata/CDBPREM/fsdata01.dbf','/u02/app/oracle/oradata/PRODDB/datafile/
o1_mf_fsdata_dmm4nx3c_.dbf') file_name_convert=NONE NOCOPY TEMPFILE REUSE;
Pluggable database altered. SQL>




8.- En el nodo del Database Cloud Service, ejecute el comando ALTER PLUGGABLE DATABASE OPEN

a) Coloque la PDB_PREM en modo READ WRITE

SQL> ALTER PLUGGABLE DATABASE pdb_prem OPEN;

Pluggable database altered.

SQL>



b) Salga del SQL*Plus.





Joel Pérez es un experto DBA (Oracle ACE Director, Maximum Availability OCM, OCM Cloud & OCM12c/11g) con más de 17 años de experiencia real en el mundo de la tecnología Oracle, especializado en diseño e implementación de soluciones de: Nube, Alta disponibilidad, Recuperación contra desastres, Upgrades, Replicación y toda área relacionada con bases de datos Oracle. Orador habitual en eventos internacionales de materia Oracle. Escritor de artículos para OTN español, portugués e Inglés. Joel se desempeña actualmente como: Database Cloud Solution Architect & International Business Manager para la compañía http://en.enmotech.com/ Yunhe Enmo (Beijing) Technology Co. Ltd. Beijing, China. LinkedIn: https://www.linkedin.com/in/sirdbaasjoelperez/ & Joel Pérez’s Blog: http://blog.enmotech.com/

Skant Gupta es un Oracle Certified Professional Cloud, 12c & 11g RAC Certified, se desempeña como Senior DBA en Etisalat, Dubai. Más de 5 años en diversas tecnologías de Oracle, focalizado principalmente en bases de datos, soluciones de alta disponibilidad, weblogic y GoldenGate. Podrá seguirlo en su blog: http://oracle-help.com

César Aguilar es un DBA Oracle Certified Professional Cloud, OCE RAC 11g, OCP12c, OCP/OCA 11g, Oracle Database12c Certified Implementation Specialist, con experiencia en RAC, Data Guard y otras soluciones de alta disponibilidad. Actualmente se encuentra radicado en Ecuador y trabaja para la compañía Refundation Consulting Group “http://www.refundation.com” como Senior DBA

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.