[ 2015-08-02 ]

Duplicación al mismo tiempo de una PDB y un tablespaces en otra 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 otras partes de esta serie de artículos.  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  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
PDB and Tablespace - pluggable database prmpdb01 tablespace prmpdb02:pdb02_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 pluggable database prmpdb01 
                             tablespace prmpdb02:pdb02_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 y el tablespace PDB02_TBS2 del PBD prmpdb02. RMAN duplica la PDB prmpdb01 con todos  los tablespaces y la PDB prmpdb02  solo con el tablespace especificado. En otras palabras, RMAN ignora los otros tablespaces creados en la PDB duplicada prmpdb02. 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