Migrando una Base de Datos On-Premise (Non-CDB) a Oracle Cloud Usando Clonación Remota

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
Usando RMAN Cross-Platform Transportable PDB


Este método puede ser utilizado si se cumple con las siguientes tres características: la plataforma On-Premise  es “little endian”, la base de datos On-Premise es versión 12.1.0.2 o superior y la base de datos On-Premise y la del Database Cloud Service son compatibles en el “character sets” y el “national character sets”.

El método remote cloning puede ser usado para copiar una Base de Datos 12c On-Premise non-CDB para una PDB en una base de datos Oracle Database 12c en el Oracle Database Cloud Service.

Para migrar una base de datos Oracle Database 12c non-CDB para el Database Cloud Service usando el método remote cloning, se deben realizar las siguientes tareas:

1.- En el servidor de base de datos On-Premise, invocar el SQL*Plus y colocar la base de datos en modo READ ONLY.

2.- Crear la base de datos en el Database Cloud Service.

3.- En el nodo del Database Cloud Service, invocar el SQL*Plus y crear un dblink que habilite una conexión con la base de datos On-Premise.

4.- En el nodo del Database Cloud Service, ejecutar el comando CREATE PLUGGABLE DATABASE para clonar la base de datos On-Premise non-CDB.

5.- En el nodo del Database Cloud Service, ejecutar el script: $ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql

6.- En el nodo del Database Cloud Service, abrir la nueva PDB ejecutando el comando ALTER PLUGGABLE DATABASE OPEN

7.- Opcionalmente, en el servidor de base de datos On-Premise, invocar el SQL*Plus y colocar la base de datos On-Premise de regreso en modo READ WRITE.



Ejemplo: Moviendo una Base de Datos On-Premise (Non-CDB) para la Nube Usando Clonación Remota


Esta sección explica cómo proceder para clonar remotamente una base de datos non-CDB On-Premise dentro de un CDB DBaaS como una nueva PDB.

En este ejemplo, la base de datos On-Premise Oracle Database 12c non-CDB está en un servidor Linux.


En el servidor de base de datos On-Premise

1.- Invoque el SQL*Plus y coloque la base de datos On-Premise en modo READ ONLY.

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 Production 
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL>



b) Cierre la base de datos On-Premise PREM non-CDB

SQL> SHUT IMMEDIATE;

Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>



c) Abra la base de datos On-Premise PREM non-CDB en modo read-only.

SQL> STARTUP MOUNT

ORACLE instance started.

Total System Global Area 1241513984 bytes
Fixed Size		    2923872 bytes
Variable Size		  452985504 bytes
Database Buffers	  771751936 bytes
Redo Buffers		   13852672 bytes
Database mounted.
SQL> ALTER DATABASE OPEN READ ONLY;

Database altered.

SQL>





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


Figure1. Creando un nuevo servicio (Cloud-Mig12c)


  • Para el DB Name (SID), ingresar PRODDB.
  • Ingresar un Administrative Password deseado y confirmar 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



b) 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.



c) Después de unos pocos minutos, visualizará que la instancia de base de datos en el cloud 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 intentar 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:

e.1. Abra el servicio de la base de datos y seleccione 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 publica SSH.


Figure 8. Conexión al nodo usando PuTTY




3.- En el nodo del Database Cloud Service, invoque el SQL*Plus y cree un dblink para habilitar la conexión con la base de datos On-Premise.

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

[oracle@Cloud-Mig12c ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Sun Jun 4 06:33:14 2017

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

Connected to:

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


SQL>



b) Cree un dblink en el DBaaS PRODDB CDB para conectarse con la NON-CDB On-Premise PREM_PDB.

SQL> CREATE DATABASE LINK link_non_cdb CONNECT TO system IDENTIFIED BY sys USING 'PREM';

Database link created.

SQL>





4.- En el nodo del Database Cloud Service, ejecute el comando CREATE PLUGGABLE DATABASE para clonar la base de datos NON-CDB On-Premise.

a) Cree un directorio para los datafiles de PDB clonada.

[oracle@Cloud-Mig12c ~]$ mkdir -p /u02/app/oracle/oradata/PRODDB/PREM

[oracle@Cloud-Mig12c ~]$



b) Cree la nueva PDB PREM_PDB1 en el DBaaS CDB.

SQL> CREATE PLUGGABLE DATABASE prem_pdb1 FROM NON$CDB@link_prem CREATE_FILE_DEST = 
'/u02/app/oracle/oradata/PRODDB/PREM';

Pluggable database created.

SQL>





5.- En el nodo del Database Cloud Service, ejecute el script $ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql

a) Conéctese a la nueva PDB usando el service name configurado en el archivo tnsnames.ora

[oracle@Cloud-Mig12c ~]$ sqlplus sys@prem_pdb1 as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Sun Jun 4 12:45:44 2017
Copyright (c) 1982, 2014, Oracle.  All rights reserved.
Enter password:
Connected to:

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

SQL> SHOW con_name

CON_NAME

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

PREM_PDB1

SQL>



b) Ejecute el script $ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql

SQL> @$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql

SQL> SET SERVEROUTPUT ON

SQL> SET FEEDBACK 1

SQL> SET NUMWIDTH 10

SQL> SET LINESIZE 80

………

SQL>
SQL> -- leave the PDB in the same state it was when we started
SQL> BEGIN
  2    execute immediate '&open_sql &restricted_state';
  3  EXCEPTION
  4    WHEN OTHERS THEN
  5    BEGIN
  6      IF (sqlcode <> -900) THEN
  7        RAISE;
  8      END IF;
  9    END;
 10  END;
 11  /

PL/SQL procedure successfully completed.

SQL>
SQL> WHENEVER SQLERROR CONTINUE;
SQL>





6.- En el nodo del Database Cloud Service, abra la nueva PDB ejecutando el comando ALTER PLUGGABLE DATABASE OPEN

a) Ahora se puede abrir la nueva  PDB en el CDB del DBaaS.

SQL> ALTER PLUGGABLE DATABASE prem_pdb1 OPEN;

Pluggable database altered.

SQL> CONNECT SYSTEM@PREM_PDB1

Enter password:

Connected.

SQL>





7.- Opcionalmente, en el servidor de base de datos On-Premise, invoque el SQL*Plus y coloque la base de datos  NON-CDB de regreso a modo READ WRITE.

a) En el servidor de base de datos 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 Production With the Partitioning, 
OLAP, Advanced Analytics and Real Application Testing options

SQL>



b) Cierre la base de datos On-Premise NON-CDB PREM.

SQL> SHUT IMMEDIATE

Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>



c) Por ultimo abra la base de datos On-Premise NON_CDB PREM  en modo read-write.

SQL> STARTUP
ORACLE instance started.

Total System Global Area 1241513984 bytes
Fixed Size		    2923872 bytes
Variable Size		  452985504 bytes
Database Buffers	  771751936 bytes
Redo Buffers		   13852672 bytes
Database mounted.
Database opened.
SQL>





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.