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
[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
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
----------------------------- --------------------
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:
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