Migrando una Base de Datos Oracle On-Premise a Oracle Cloud Usando Data Pump Transportable Tablespace

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
Desde una on-premise PDB, usando Remote Cloning
Desde una on-premise (Non-CDB), usando Remote Cloning
Usando RMAN Cross-Platform Transportable PDB


Este método puede ser usado únicamente si la plataforma on-premise es “little endian” y el “character set” de la base de datos on-premise y del Oracle Database Cloud Service son compatibles.

El método Transportable Tablespace es generalmente mucho más rápido que el método convencional de exportar/importar de los datos, porque los datafiles que contienen todos los datos existentes son simplemente copiados para una ubicación en el destino.

Para migrar una base de datos on-premise hacia el Database Cloud Service usando el método Data Pump Transportable Tablespace, se deben realizar las siguientes tareas:


En el servidor de base de datos on-premises:

1.- Prepare la base de datos para el Data Pump Transportable Tablespace Export.

2. Invoque el Data Pump Export para realizar el transportable tablespace export.

3. Use un utilitario de copia segura (SCP) para transferir el archivo Data Pump Export dump y los tablespace datafiles para el nodo del Database Cloud Service.

4. Coloque los tablespaces en modo READ WRITE en la base on-premise.


En el nodo del Database Cloud Service:

5.- Prepare la base de datos para el tablespace import.

6.- Invoque el Data Pump Import y conéctese a la base de datos.

7.- Coloque los tablespaces en la base de datos del Database Cloud Service en modo READ WRITE.

8.- Después de verificar que los datos han sido importados satisfactoriamente, se podrá borrar el archivo dump.



Ejemplo: Data Pump Transportable Tablespace

El siguiente ejemplo proporciona una demostración paso a paso de las tareas requeridas para migrar tablespaces de una Base de Datos on-premise para el Oracle Database Cloud Service.

En el ejemplo se realizará la migración de los tablespaces TBSP_DATA y TBSP_INDEX.

La Base de Datos on-premise está en un servidor Linux.


En el equipo on-premise

1.- Prepare la base de datos para el Data Pump transportable tablespace export.

a.- Cree un directorio en el sistema operativo para el export.

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

[oracle@cloud ~]$


b. Invoque el SQL*Plus e ingrese a la Base de Datos on-premise con el usuario SYSTEM.

 [oracle@cloud ~]$ sqlplus SYSTEM

SQL*Plus: Release 11.2.0.4.0 Production on Thu Jun 1 01:49:18 2017

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

Enter password:

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL>


c. Cree un directorio en la Base de Datos para referenciar el directorio del Sistema operativo

 SQL> CREATE DIRECTORY prem_to_cloud AS '/u01/app/dpump';

Directory created.

SQL>


d.- Determine los nombres de los datafiles que pertenecen a los tablepaces FSDATA y FSINDEX  realizando una consulta a la vista DBA_DATA_FILES. Estos archivos también serán listados en la salida del export.

 SQL> SELECT tablespace_name, file_name FROM dba_data_files where tablespace_name = 'TBSP_DATA';

TABLESPACE_NAME

------------------------------

FILE_NAME

--------------------------------------------------------------

TBSP_DATA

/u01/app/oracle/oradata/ORA11G/tbspdata01.dbf

SQL> SELECT tablespace_name, file_name FROM dba_data_files where tablespace_name = 'TBSP_INDEX';

TABLESPACE_NAME

------------------------------

FILE_NAME

--------------------------------------------------------------

TBSP_DATA

/u01/app/oracle/oradata/ORA11G/tbspindex01.dbf

SQL>


e.- Coloque todos los tablespaces que serán transportados (transportable set) en modo READ ONLY.

 SQL> ALTER TABLESPACE tbsp_data ONLY; 

Tablespace altered.

SQL> ALTER TABLESPACE tbsp_index ONLY;

Tablespace altered.

SQL>


f.- Salga del SQL*Plus




En el servidor on-premises

2.- Invoque el Data Pump Export para realizar el Transportable Export.

Invoque el Data Pump Export y conéctese a la base de datos on-premise. Exporte los tablespaces usando la opción TRANSPORT_TABLESPACES. Ingrese  la contraseña para el usuario SYSTEM cuando sea solicitado.

 [oracle@cloud ~]$ expdp system TRANSPORT_TABLESPACES=tbsp_data,tbps_index 
TRANSPORT_FULL_CHECK=YES DIRECTORY=prem_to_cloud


Export: Release 11.2.0.4.0 - Production on Sat Jun 3 23:30:03 2017
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.

Password:

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 -
64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options

Starting "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01": system/********
TRANSPORT_TABLESPACES=tbsp_data,tbps_index TRANSPORT_FULL_CHECK=YES DIRECTORY=prem_to_cloud



Antes de proceder con el paso “No. 3”, se debe crear una Base de Datos Cloud Service Database Cloud Service.




Crear una nueva Base de Datos Cloud Service


1. 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-Mig.
  • En Service Level, seleccionar Oracle Database Cloud Service.
  • En Metering Frequency, seleccionar la frecuencia apropiada para el ambiente.
  • En Software Release, seleccionar Oracle Database 11g Release2.
  • En Software Edition, seleccionar Enterprise Edition.
  • En Database Type, seleccionar Single Instance.

Presione click en Next para continuar.


Figura1. Creando un nuevo servicio (Cloud-Mig11g)



2. En la pantalla de Service Details, realice lo siguiente:

  • Para el DB Name (SID), ingresar PROD.
  • Ingrese un 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



3. Finalmente, revise la configuración y de click en Create para crear la base de datos en el cloud.


Figura 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.


Figura 4. La base de datos primaria ha sido creada.



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


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



5. Antes de tratar de conectarse a la instancia de base de datos primaria en la nube, se debe habilitar el dblistener en la sección Access Rules, haciendo lo siguiente

a. Abra el servicio de la base de datos y seleccione Access Rules del menú.


Figura 6. Seleccionando la opción Access Rules



b. 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 dos instancias diferentes de PuTTY y conéctese a los dos equipos usando la llave publica SSH.


Figura 8. Conexión a los dos equipos usando PuTTY




3.- Use un utilitario de copia segura (SCP) para transferir el archivo Data Pump Export dump y los datafiles de los tablespaces para el nodo del Database Cloud Service.

En este ejemplo archivo dump es copiado para el directorio /u01. Elija la ubicación apropiada basada en el tamaño del archivo que será transferido.


a. En el nodo del Database Cloud Service, cree un directorio para el archivo dump.

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

[oracle@Cloud-Mig11g ~]$


b. Antes de usar el utilitario SCP para copiar los archivos, se debe asegurar que está disponible en el equipo on-premise la llave privada SSH proporcionada para acceder al nodo del Database Cloud Service.


c.- En el servidor de bases de datos on-premise, use el utilitario scp para transferir el archivo dump y todos los datafiles que serán transportados para el nodo en el Database Cloud Service.

 [oracle@cloud ~]$ scp -i rsa-key-20170111.ssh /u01/app/dpump/expdat.dmp 
oracle@129.144.152.230:/u01/app/on_premise


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

expdat.dmp
100% 97MB 121.3KB/s 13:42

[oracle@cloud ~]$ scp -i rsa-key-20170111.ssh /u01/app/oracle/oradata/ORA11G/tbspdata01.dbf
oracle@129.144.152.230:/u02/app/oracle/oradata/PROD


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

tbspdata01.dbf
100% 141MB 183.7KB/s 16:00

[oracle@cloud ~]$ scp -i rsa-key-20170111.ssh /u01/app/oracle/oradata/ORA11G/tbspindex01.dbf
oracle@129.144.152.230:/u02/app/oracle/oradata/PROD


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

tbspindex01.dbf
100% 14MB 183.7KB/s 2:00

[oracle@cloud ~]$




4. Coloque los tablespaces de regreso en modo READ WRITE.


a. Invoque el SQL*Plus e ingrese con el usuario SYSTEM.


b. Coloque los tablespaces TBPS_DATA y TBSP_INDEX de regreso a modo READ WRITE.

 SQL> ALTER TABLESPACE tbsp_data READ WRITE;

Tablespace altered.

SQL> ALTER TABLESPACE tbsp_index READ WRITE;

Tablespace altered.

SQL>

c. Salga del SQL*Plus




5.- En el nodo del Database Cloud Service, prepare la base de datos para el tablespace import.


a. En el nodo del Database Cloud Service, invoque el SQL*Plus e ingrese a la base de datos con el usuario SYSTEM.


b.- Cree un objeto de directorio en el Database Cloud Service.

 SQL> CREATE DIRECTORY on_cloud AS '/u01/app/on_premise';

Directory created.

SQL>


c.- Si los dueños de los objetos que serán importados no existen en la base de datos, créelos antes de realizar la importación. El transportable tablespace import no crea los usuarios.

 SQL> CREATE USER test PROFILE default IDENTIFIED BY test TEMPORARY TABLESPACE 
temp ACCOUNT UNLOCK;


User Created.

SQL>




6.- El nodo del Database Cloud Service, invoque el Data Pump Import y conéctese a la base de datos. Importe los datos dentro de la base de datos usando la opción TRANSPORT_DATAFILES

 [oracle@Cloud-Mig11g PROD]$ impdp system DIRECTORY=on_cloud \
> TRANSPORT_DATAFILES='/u02/app/oracle/oradata/PROD/tbspdata01.dbf' \
>'/u02/app/oracle/oradata/ORCL/tbspindex01.dbf'


Import: Release 11.2.0.4.0 - Production on Sat Jun 3 19:16:50 2017

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

Password:

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning and Real Application Testing options

Master table "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully loaded/unloaded

Source time zone version is 14 and target time zone version is 28.

Starting "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01": system/******** DIRECTORY=on_cloud
TRANSPORT_DATAFILES=/u02/app/oracle/oradata/PROD/ tbspdata
01.dbf,/u02/app/oracle/oradata/ORCL/tbspindex01.dbf




7.- Coloque los tablespaces en la base de datos del Database Cloud Service en modo READ WRITE.


a. Invoque el SQL*Plus e ingrese con el usuario SYSTEM.


b. Coloque los tablespaces TBSP_DATA y TBSP_INDEX de regreso en modo READ WRITE.

 SQL> ALTER TABLESPACE tbsp_data READ WRITE; 

Tablespace altered.

SQL> ALTER TABLESPACE tbsp_index READ WRITE;

Tablespace altered.

SQL>

c. Salga del SQL*Plus




8.- Después de verificar que los datos han sido importados satisfactoriamente, podemos borrar el archivo dump expdat.dmp.




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.