[ 2015-08-02 ]

Duplicación de una CDB omitiendo tablespaces de una PDB

En el siguiente ejemplo estamos trabajando inicialmente como base de datos origen con la CDB llamada “prmcdb”  que será duplicada en la CDB llamada “dupcdb” como ocurre en otra parte de esta serie de artículo. A continuación podemos ver nuestra base de datos CDB origen:  prmcdb.
[oracle@oel62-ora12c-prm ~]$ export ORACLE_SID=prmcdb
[oracle@oel62-ora12c-prm ~]$ sqlplus / as  sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Mon Apr 14 09:51:44 2014
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> alter pluggable database all open;
Pluggable database altered.

SQL> select name, open_mode from v$pdbs;
NAME                            OPEN_MODE
----------------------------- --------------------
PDB$SEED                  READ ONLY
PRMPDB01                  READ WRITE
PRMPDB02                  READ WRITE
SQL> select con_id, tablespace_name from cdb_tablespaces order by  1,2;
 
  CON_ID TABLESPACE_NAME
-------- ------------------------------
       1 SYSAUX
       1 SYSTEM
       1 TEMP
       1 UNDOTBS1
       1 USERS
       2 SYSAUX
       2 SYSTEM
       2 TEMP
       3 PDB01_TBS1
       3 PDB01_TBS2
       3 SYSAUX
 
  CON_ID TABLESPACE_NAME
-------- ------------------------------
       3 SYSTEM
       3 TEMP
       3 USERS
       4 PDB02_TBS1
       4 PDB02_TBS2
       4 SYSAUX
       4 SYSTEM
       4 TEMP
       4 USERS
       5 SYSAUX
       5 SYSTEM
 
  CON_ID TABLESPACE_NAME
-------- ------------------------------
       5 TEMP
       5 USERS
 
24 rows selected.
 
SQL> select name from v$datafile;
 
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/prmcdb/system01.dbf
/u01/app/oracle/oradata/prmcdb/sysaux01.dbf
/u01/app/oracle/oradata/prmcdb/undotbs01.dbf
/u01/app/oracle/oradata/prmcdb/pdbseed/system01.dbf
/u01/app/oracle/oradata/prmcdb/users01.dbf
/u01/app/oracle/oradata/prmcdb/pdbseed/sysaux01.dbf
/u01/app/oracle/oradata/prmcdb/prmpdb01/system01.dbf
/u01/app/oracle/oradata/prmcdb/prmpdb01/sysaux01.dbf
/u01/app/oracle/oradata/prmcdb/prmpdb01/prmpdb01_users01.dbf
/u01/app/oracle/oradata/prmcdb/prmpdb02/system01.dbf
/u01/app/oracle/oradata/prmcdb/prmpdb02/sysaux01.dbf
/u01/app/oracle/oradata/prmcdb/prmpdb02/prmpdb02_users01.dbf
/u01/app/oracle/oradata/prmcdb/prmpdb03/system01.dbf
/u01/app/oracle/oradata/prmcdb/prmpdb03/sysaux01.dbf
/u01/app/oracle/oradata/prmcdb/prmpdb03/prmpdb03_users01.dbf
/u01/app/oracle/oradata/prmcdb/prmpdb01/pdb01_tbs1.dbf
/u01/app/oracle/oradata/prmcdb/prmpdb01/pdb01_tbs2.dbf
/u01/app/oracle/oradata/prmcdb/prmpdb02/pdb02_tbs1.dbf
/u01/app/oracle/oradata/prmcdb/prmpdb02/pdb02_tbs2.dbf
 
19 rows selected.

Como puede observarse en la salida,  nuestra CDB origen (prmcdb) tiene dos PDBs:  prmpdb01 and prmpdb02. También, tiene creados  los tablespaces PDB01_TBS1, PDB01_TBS2 en la PDB prmpdb01 y los tablespaces PDB02_TBS1, PDB02_TBS2  en  la PDB prmpdb02. Si usted no ha creado esos tablespaces en las PDBs, puede utilizar los scripts de creación del caso 8 en la parte IX de esta serie de artículos

En este caso duplicamos la PDB prmpdb01 y el tablespace PDB02_TBS2 del PDB prmpdb02 . Usamos el comando duplicate de RMAN con las siguientes opciones:

Opción de duplicación
Skip Tablespace - skip tablespace prmpdb01:pdb01_tbs2 
Tipo de duplicación
Active Database Duplication
Método de duplicación
Pull-Based
Tipo de backup utilizado
BACKUPSETS   (default)
Número de “Target Channels”
1   (default)
Número de “Auxiliary Channels”
1  (default)

El comando duplicate de RMAN en este caso quedará de la siguiente manera:
duplicate database to dupcdb skip tablespace prmpdb01:pdb01_tbs2 
 from active database 
  spfile 
    parameter_value_convert  ='prmcdb','dupcdb' 
   set db_file_name_convert  ='prmcdb','dupcdb'
   set log_file_name_convert ='prmcdb','dupcdb';

Descripción del código:

Como puede verse en el código, RMAN duplicará  la PDB prmpdb01  ignorando el tablespace PDB01_TBS2. Con este comando duplicate, RMAN duplica todos las PDBs incluida prmpdb01 , pero ignora el tablespace PDB01_TBS02 de la  PDB prmpdb01 . Los canales target y auxiliary  no son asignados de manera explícita en este código. RMAN asigna solamente un channel  default para target  y  otro para auxiliary   (ORA_ DISK_1 and ORA_AUX_DISK_1).  La cantidad de target y auxiliary channels  es la misma, esto significa que en este caso RMAN utilizara el método Pull-Based para la duplicación. También utilizamos para este caso los parámetros  parameter_value_convert  y  db{log}_file_name_convert en el comando duplicate. El uso de estos parámetros está explicado en la primera parte (parte 1) de esta serie de artículos. 

En la salida podemos observar un procedimiento normal de duplicación  como siempre  fue  en versiones anteriores.
Veamos este código en acción:

No hay comentarios:

Publicar un comentario