Sei sulla pagina 1di 6

Clonar Base De Datos con RMAN

Necesito una copia exacta de la base de datos Quiero que clonen esta base de datos aqu, all, datos, y otro clon para comparar versiones y otro clon para. Cuntas veces hemos escuchado esas para. solicitudes?, afortunadamente RMAN tiene la habilidad de clonar una base de datos, el requisito: un backup de la base de datos a clonar realizado con RMAN. A continuacin realizaremos un ejemplo de clonacin o duplicacin de una base de datos. Para este ejemplo utilizaremos una base de datos llamada PRUEBADB y la clonaremos con el aremos nombre CLONDB. Requisitos: Debe existir al menos un backup de la base de datos a clonar, este backup debe ser realizado con RMAN. Si nuestra base de datos no se encuentra bajo un rgimen de respaldos tendremos que realizar un backup de esta. Para este ejemplo el ORACLE_HOME es /u01/app/oracle/ Paso 0: Modificar el archivo /etc/oratab y agregar al final la siguiente lnea:
CLONDB:/u01/app/oracle/db:N

Luego, debemos ambientarnos:


[oracle@nodo1 ~]$ . oraenv ORACLE_SID = [oracle] ? PRUEBADB [oracle@nodo1 ~]$

Si no existe un backup, se realizar uno a travs de RMAN. Se crea el directorio /u02/backup


mkdir -p /u02/backup

Es necesario dejar la base de datos en modo ARCHIVELOG:


SQL> SQL> SQL> SQL> shutdown immediate; startup mount; alter database archivelog; hivelog; startup;

Clonar Base De Datos con RMAN Administracin Oracle Blog http://oracle.xgodoy.com/ Jimy Godoy Maureira

Nos conectamos a RMAN:


/u01/app/oracle/db/bin/rman target /

Y ejecutamos el siguiente script:


run { ALLOCATE CHANNEL d1 DEVICE TYPE disk parms 'ENV=(OB2BARLIST=PRUEBADB)'; ALLOCATE CHANNEL d2 DEVICE TYPE disk parms 'ENV=(OB2BARLIST=PRUEBADB)'; ALLOCATE CHANNEL d3 DEVICE TYPE disk parms 'ENV=(OB2BARLIST=PRUEBADB)'; ALLOCATE CHANNEL d4 DEVICE TYPE disk parms 'ENV=(OB2BARLIST=PRUEBADB)'; backup incremental level 0 format '/u02/backup/backup<PRUEBADB_%s:%t:%p>.dbf' database; backup format '/u02/backup/backup<PRUEBADB_%s:%t:%p>.alf' archivelog all; backup format '/u02/backup/backup<PRUEBADB_%s:%t:%p>.ctf' current controlfile; }

Paso 1: Creamos un pfile para extraer los parmetros de inicializacin de la base de datos PRUEBADB:
SQL> create pfile=/u01/app/oracle/db/dbs/initCLONDB.ora from spfile;

Clonar Base De Datos con RMAN Administracin Oracle Blog http://oracle.xgodoy.com/ Jimy Godoy Maureira

Modificamos el pfile generado, para este caso el pfile contiene los siguientes parmetros:
[oracle@nodo1 dbs]$ cat /u01/app/oracle/db/dbs/initCLONDB.ora PRUEBADB.__db_cache_size=188743680 PRUEBADB.__java_pool_size=4194304 PRUEBADB.__large_pool_size=4194304 PRUEBADB.__shared_pool_size=79691776 PRUEBADB.__streams_pool_size=0 *.audit_file_dest=/u01/app/oracle/admin/PRUEBADB/adump *.background_dump_dest=/u0 *.background_dump_dest=/u01/app/oracle/admin/PRUEBADB/bdump *.compatible=10.2.0.1.0 *.control_files=/u02/oradata/PRUEBADB/control01.ctl, /u02/oradata/PRUEBADB/control02.ctl, /u02/oradata/PRUEBADB/control03.ctl *.core_dump_dest=/u01/app/oracle/admin/PRUEBADB/cdump *.db_block_size=8192 *.db_domain= *.db_file_multiblock_read_count=16 *.db_name=PRUEBADB *.db_recovery_file_dest=/u01/app/oracle/flash_recovery_area *.db_recovery_file_dest_size=2147483648 *.dispatchers=(PROTOCOL=TCP) (SERVICE=PRUEBADBXDB) *.job_queue_processes=10 *.open_cursors=300 *.pga_aggregate_target=94371840 *.processes=150 *.remote_login_passwordfile=EXCLUSIVE *.sga_target=285212672 *.undo_management=AUTO *.undo_tablespace=UNDOTBS1 *.undo_tablespace=UNDOTBS1 *.user_dump_dest=/u01/app/oracle/admin/PRUEBADB/udump

Clonar Base De Datos con RMAN Administracin Oracle Blog http://oracle.xgodoy.com/ Jimy Godoy Maureira

Modificamos el archivo initCLONDB.ora cambiando donde referencia PRUEBADB por CLONDB y agregar las siguientes lneas para indicar que los archivos acepten una estructura diferente a como vienen en el backup., luego el archivo initCLONDB.ora debe quedar de la siguiente forma:
[oracle@nodo1 CLONDB]$ cat /u01/app/oracle/db/dbs/initCLONDB.ora CLONDB.__db_cache_size=188743680 CLONDB.__java_pool_size=4194304 CLONDB.__large_pool_size=4194304 CLONDB.__shared_pool_size=79691776 CLONDB.__streams_pool_size=0 *.audit_file_dest=/u01/app/oracle/admin/CLONDB/adump t_file_dest=/u01/app/oracle/admin/CLONDB/adump *.background_dump_dest=/u01/app/oracle/admin/CLONDB/bdump *.compatible=10.2.0.1.0 *.control_files=/u02/oradata/CLONDB/control01.ctl, /u02/oradata/CLONDB/control02.ctl, /u02/oradata/CLONDB/control03.ctl /u02/oradata/CLONDB/control03.ctl *.core_dump_dest=/u01/app/oracle/admin/CLONDB/cdump *.db_block_size=8192 *.db_domain= *.db_file_multiblock_read_count=16 *.db_name=CLONDB *.db_recovery_file_dest=/u01/app/oracle/flash_recovery_area *.db_recovery_file_dest_size=2147483648 *.dispatchers=(PROTOCOL=TCP) (SERVICE=CLONDBXDB) atchers=(PROTOCOL=TCP) *.job_queue_processes=10 *.open_cursors=300 *.pga_aggregate_target=94371840 *.processes=150 *.remote_login_passwordfile=EXCLUSIVE *.sga_target=285212672 *.undo_management=AUTO *.undo_tablespace=UNDOTBS1 *.undo_tablespace=UNDOTBS1 *.user_dump_dest=/u01/app/oracle/admin/CLONDB/udump user_dump_dest=/u01/app/oracle/admin/CLONDB/udump

DB_FILE_NAME_CONVERT=(/u02/oradata/PRUEBADB/,/u02/oradata/CLONDB/) ONVERT=(/u02/oradata/PRUEBADB/,/u02/oradata/CLONDB/) LOG_FILE_NAME_CONVERT=(/u02/oradata/PRUEBADB/,/u02/oradata/CLONDB/) ONVERT=(/u02/oradata/PRUEBADB/,/u02/oradata/CLONDB/)

Seguido, es necesario crear los directorios que utilice el archivo de parmetros:


[oracle@nodo1 [oracle@nodo1 [oracle@nodo1 [oracle@nodo1 [oracle@nodo1 dbs]$ dbs]$ dbs]$ dbs]$ dbs]$ mkdir mkdir mkdir mkdir mkdir -p -p -p -p -p /u01/app/oracle/admin/CLONDB/adump /u01/app/oracle/admin/CLONDB/bdump /u02/oradata/CLONDB/ /u01/app/oracle/admin/CLONDB/cdump /u01/app/oracle/admin/CLONDB/udump

Paso 2: Se crea un archivo de password para la nueva base de datos CLONDB:


orapwd file=/u01/app/oracle/db/dbs/orapwCLONDB password=password entries=10;

Clonar Base De Datos con RMAN Administracin Oracle Blog http://oracle.xgodoy.com/ Jimy Godoy Maureira

Paso 3 Modificar listener.ora y tnsnames.ora para la nueva base de datos:


[oracle@nodo1 admin]$ cat listener.ora # listener.ora Network Configuration File: /u01/app/oracle/db/network/admin/listener.ora # Generated by Oracle configuration tools. SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /u01/app/oracle/db) (PROGRAM = extproc)) (SID_DESC = (SID_NAME = PRUEBADB) (ORACLE_HOME = /u01/app/oracle/db)) (SID_DESC = (SID_NAME = CLONDB) (ORACLE_HOME = /u01/app/oracle/db))) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = nodo1)(PORT = 1521)))) RIPTION [oracle@nodo1 admin]$ cat tnsnames.ora # tnsnames.ora Network Configuration File: /u01/app/oracle/db/network/admin/tnsnames.ora # Generated by Oracle configuration tools. PRUEBADB = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = nodo1)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = PRUEBADB)))

CLONDB = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = nodo1)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = CLONDB)))

EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)) ) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) ) )

Reload el listener
lsnrctl reload

Clonar Base De Datos con RMAN Administracin Oracle Blog http://oracle.xgodoy.com/ Jimy Godoy Maureira

Paso 4 Nos ambientarnos como CLONDB y conectamos va sqlplus:


[oracle@nodo1 admin]$ . oraenv ORACLE_SID = [PRUEBADB] ? CLONDB [oracle@nodo1 admin]$ sqlplus sys/password@CLONDB as sysdba

Luego creamos un SPFILE:


SQL> CREATE SPFILE FROM PFILE=/u01/app/oracle/db/dbs/initCLONDB.ora;

Luego levantamos la base de datos en modo nomount:


SQL> startup nomount force;

Paso 5 Con la base de datos clon montada podemos conectarnos a RMAN, es necesario conectarse a la base de datos original (PRUEBADB) y a la clonada como AUXILIARY:
[oracle@nodo1 admin]$ . oraenv ORACLE_SID = [CLONDB] ? [oracle@nodo1 admin]$ /u01/app/oracle/db/bin/rman TARGET sys/password@PRUEBADB AUXILIARY sys/password@CLONDB Recovery Manager: Release 10.2.0.1.0 - Production on Tue Sep 9 17:09:13 2008 Copyright (c) 1982, 2005, Oracle. All rights reserved. cle. connected to target database: PRUEBADB (DBID=428612040) connected to auxiliary database: CLONDB (not mounted) RMAN>

Paso 6 En RMAN ejecutamos la siguiente instruccin para clonar la base de datos:


RMAN> DUPLICATE TARGET DATABASE TO CLONDB;

Listo, base de datos duplicada! Saludos! Jimy Godoy.

Clonar Base De Datos con RMAN Administracin Oracle Blog http://oracle.xgodoy.com/ Jimy Godoy Maureira

Potrebbero piacerti anche