Oracle Data Guard 12c en Arquitectura “Multitenant”: Comportamiento de PDBs (Parte III)

Por César Aguilar, Joel Pérez & Skant Gupta
Publicado en Junio 2017


Continuando con la secuencia de artículos Oracle Data Guard 12c en Arquitectura “Multitenant”: Comportamiento de PDBs, finalizaremos la serie analizando que sucede en el Data Guard “DG” cuando borramos y cuando hacemos un “unplug”de una PDB en el CDB primario.

Plantearemos los siguientes objetivos y escenarios:

Escenario 1: Borrar la PDB1 en el CDB1 primario con “DG” configurado.

Escenario 2: Unplug la PDB2 del CDB1 primario con “DG” configurado.

Herramienta de Uso: SQL*Plus

Nuestro entorno de prueba:

  1. El CDB1 primario con “DG” configurado que tiene cuatro pluggables: PDB1, PDB2, PDB_SERA y PDB_FINA.
  2. El CDB1 standby que forma parte del “DG”.

Escenario 1: Borrarla PDB1 del CDB1 primario.

Ingresamos al CDB1 del “DG”.

[oracle@rfcg ~]$ export ORACLE_SID=CDB1
[oracle@rfcg ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Sat Apr 8 11:42:57 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>select name, cdb from v$database;

NAME      CDB
--------- ---
CDB1      YES

SQL>select database_role from v$database;

DATABASE_ROLE
----------------
PRIMARY

Listamos las PDBs del CDB1 primario.

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
3 PDB1                           READ WRITE NO
         4 PDB2                           READ WRITE NO
         5 PDB_SERA                       READ WRITE NO
         6 PDB_FINA                       READ WRITE NO

Procedemos a borrar la PDB1.

SQL> alter pluggable database pdb1 close;

Pluggable database altered.

SQL>drop pluggable database pdb1 including datafiles;

Pluggable database dropped.

Verificamos que se eliminó la PDB1.

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         4 PDB2                           READ WRITE NO
         5 PDB_SERA                       READ WRITE NO
         6 PDB_FINA                       READ WRITE NO

Ingresamos al servidor standby del “DG” en el que tenemos el CDB1 standby.

[oracle@rfcg2 ~]$ export ORACLE_SID=CDB1
[oracle@rfcg2 ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Sat Apr 8 11:49:182017
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>select status, instance_namefromv$instance;

STATUS       INSTANCE_NAME
------------ ----------------
MOUNTED      cdb1

SQL>select database_role from v$database;

DATABASE_ROLE
----------------
PHYSICAL STANDBY

Verificamos al listar las PDBs de nuestro servidor standby que ya no existe la PDB1 formando parte de la solución “DG”.

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       MOUNTED
         4 PDB2                           MOUNTED
         5 PDB_SERA                       MOUNTED
6 PDB_FINA                       MOUNTED

Al borrar la PDB1 en el CDB1 primario con la opción “including datafiles” los datafiles fueron borrados en los servidores: Primario y “Standby”

Escenario 2: “Unplug” la PDB2 del CDB1 primario.

Procedemos a desconectar la PDB2 del CDB1 primario.

[oracle@rfcg ~]$ export ORACLE_SID=CDB1
[oracle@rfcg ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Sat Apr 8 11:53:36 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> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
4 PDB2                           READ WRITE NO
         5 PDB_SERA                       READ WRITE NO
         6 PDB_FINA                       READ WRITE NO


SQL> alter pluggable database PDB2 close immediate;

Pluggable database altered.

SQL> alter pluggable database PDB2 UNPLUG INTO '/home/oracle/pdb2.xml';

Pluggable database altered.

Listamos las PDBs, como podemos observar la PDB2 está en modo “MOUNTED”.

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
4 PDB2                           MOUNTED
         5 PDB_SERA                       READ WRITE NO
         6 PDB_FINA                       READ WRITE NO

Ingresaremos al CDB1standby para demostrar que permanecen los datafiles de la PDB2.

[oracle@rfcg2 ~]$ export ORACLE_SID=CDB1
[oracle@rfcg2 ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Sat Apr 8 11:59:352017
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>select status, instance_name from v$instance;

STATUS       INSTANCE_NAME
------------ ----------------
MOUNTED      cdb1

SQL>select database_role fromv $database;

DATABASE_ROLE
----------------
PHYSICAL STANDBY

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       MOUNTED
4 PDB2                           MOUNTED
         5 PDB_SERA                       MOUNTED
         6 PDB_FINA                       MOUNTED

SQL> alter session set container = pdb2;

Session altered.

SQL>select name, status ,enabled from v$datafile;

NAME                                                 STATUS   ENABLED
----------------------------------------------------------------- --------

/u01/app/oracle/oradata/CDB1/datafile/pdb2/pdb2_system.dbfSYSTEM  READ WRITE

/u01/app/oracle/oradata/CDB1/datafile/pdb2/pdb2_sysaux.dbfRECOVER UNKNOWN

/u01/app/oracle/oradata/CDB1/datafile/o1_mf_usersdbfRECOVER UNKNOWN

Al realizar el “unplug” de la PDB2 en el CDB1 primario, los datafiles de la PDB2 se mantienen en el CDB1 primario y en el standby similar a la operación de borrar una PDB con la opción de “keep datafiles”.

Los datafiles de una PDB que ha sido “unplugged” van estar presentes ya que deberían ser copiados a un destino en el que se realizara el “plug”, estos podrían ser eliminados posteriormente si no van hacer utilizados borrando la PDB que ha sido “unplugged”.

Conclusión:

En esta serie de artículos se analizaron diferentes comportamientos de las PDBs en una solución DG, se pudo apreciar que bajo la arquitectura multitenant de Oracle 12c las PDBs asociadas al CDB primario tienen distintas conductas dentro del DG dependiendo de la forma que son creadas, conectadas, borradas y desconectadas.


César Aguilar es un DBA (OCP12c, OCP/OCA 11g, Oracle Database12c CertifiedImplementationSpecialist) con experiencia en Data Guard y otras soluciones de alta disponibilidad. Actualmente se encuentra radicado en Ecuador y trabaja para la compañía Refundation ConsultingGroup “http://www.refundation.com” como consultor DBA.

Joel Pérez es un experto DBA (Oracle ACE Director, MaximumAvailability OCM, OCM Cloud Admin. & OCM12c/11g) con más de 16 años de experiencia real en el mundo de tecnología Oracle, especializado en diseño e implementación de soluciones de: Cloud, Alta disponibilidad, Recuperación contra desastres, Upgrades, Replicación y toda área relacionada con bases de datos Oracle. Joel se desempeñacomo "Chief Technologist & MAA, HA Architect" para www.Enmotech.com YunheEnmo (Beijing) Technology Co. Ltd. Beijing, China. Perfil OCM Joel Pérez: http://education.oracle.com/education/otn/JoelPerez.htm.

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.

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.