You are on page 1of 24

Ms all del backup y recuperacin

Claudio Javier Denega 26 de febrero de 2008

Clonacin de bases de datos

Clonacin de bases de datos


Es una de las tareas ms habituales de un DBA Utilizada para refresco de bases de test o desarrollo Mtodos posibles:
Clonacin lgica
Export / Import Herramientas de la aplicacin

Clonacin fsica
Manual RMAN

Clonacin lgica
Ventajas
Conceptualmente sencilla Se puede hacer parcialmente a nivel esquema o solamente algunas tablas Se puede hacer en caliente (*) Independiente de la estructura fsica Multiplataforma

Desventajas
Mtodo lento con bases de datos grandes en volumen o cantidad de objetos Requiere crear una base de datos destino

Clonacin fsica
Ventajas
Mtodo relativamente rpido con grandes volmenes No afecta a la performance la cantidad de objetos de la base origen No requiere crear una base de datos destino, basta con crear una instancia

Desventajas
Se clona la base completa, no pudiendo discriminar los objetos a clonar Es dependiente de la estructura fsica y de la plataforma Solamente se puede hacer en caliente si la base origen se encuentra en ARCHIVELOG (*)

Clonacin fsica manual vs. RMAN


Manual
Conceptualmente ms sencilla Propensa a errores

RMAN
Mejor performance
Paralelismo No necesita leer bloques vacos

Clonacin lgica
Mtodo:
1. 2. 3. 4. 5.

Crear una nueva base de datos o eliminar el/los esquemas a importar Crear los usuarios a utilizar Exportar los datos de la base de datos origen Crear los tablespaces en la base destino Importar los datos

Clonacin fsica manual


Mtodo:
Copiar los datafiles en la ubicacin destino (si se hace en caliente usar ALTER TABLESPACE . BEGIN BACKUP;) 2. Generar la definicin del controlfile a trace 3. Modificar la definicin del controlfile cambiando por el nombre de la base destino y la nueva ubicacin para cada datafile y redo log online 4. Crear y levantar la instancia en modo NOMOUNT y luego ejecutar el script anteriormente editado
1.

Clonacin con RMAN


Mtodo:
1. 2. 3. 4.

5.

Hacer un backup de la base origen si no existe uno. Crear y levantar instancia destino en NOMOUNT Crear un script de duplicacin de RMAN, cambiando la ubicacin de los datafiles segn sea necesario Conectarse con RMAN a ambas instancias. La principal ser la TARGET y la destino ser la AUXILIARY Ejecutar script

RMAN: 1. Backup origen


[oracle@oel4 ~]$ export ORACLE_SID=DBA [oracle@oel4 ~]$ rman target / Recovery Manager: Release 9.2.0.4.0 - Production Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved. connected to target database: DBA (DBID=1093640045) RMAN> BACKUP FORMAT '/u03/backup/DBA/df_%d_%s_%p' DATABASE TAG='Para_clonar'; Starting backup at 21-FEB-08 allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=11 devtype=DISK channel ORA_DISK_1: starting full datafile backupset channel ORA_DISK_1: specifying datafile(s) in backupset input datafile fno=00002 name=/u02/oradata/DBA/undotbs01.dbf : : input datafile fno=00006 name=/u01/oradata/DBA/querydata01.dbf channel ORA_DISK_1: starting piece 1 at 21-FEB-08 channel ORA_DISK_1: finished piece 1 at 21-FEB-08 piece handle=/u03/backup/DBA/df_DBA_4_1 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:35 Finished backup at 21-FEB-08

RMAN: 2. Crear instancia


Crear estructura de directorios admin Crear estructura de directorios de datos Crear copia de SPFILE de la instancia de origen como PFILE Editar PFILE adecundolo para la base destino Crear SPFILE para destino en base al PFILE editado Levantar la instancia en modo NOMOUNT

RMAN: 3. Creacin de Script


Generar SET NEWNAME en base origen (*)
1 SELECT 2 'SET NEWNAME FOR DATAFILE ' || file# || ' TO ''' || REPLACE(name,'/oradata/DBA/','/oradata/clon/') || ''';' script 3 FROM 4* v$datafile SQL> / SCRIPT -----------------------------------------------------------------------------SET NEWNAME FOR DATAFILE 1 TO '/u01/oradata/clon/system01.dbf'; SET NEWNAME FOR DATAFILE 2 TO '/u02/oradata/clon/undotbs01.dbf'; SET NEWNAME FOR DATAFILE 3 TO '/u03/oradata/clon/users01.dbf'; SET NEWNAME FOR DATAFILE 4 TO '/u03/oradata/clon/indx01.dbf'; SET NEWNAME FOR DATAFILE 5 TO '/u02/oradata/clon/sample01.dbf'; SET NEWNAME FOR DATAFILE 6 TO '/u01/oradata/clon/querydata01.dbf'; SET NEWNAME FOR DATAFILE 7 TO '/u02/oradata/clon/example01.dbf'; 7 rows selected.

RMAN: 3. Creacin de Script (cont)


Editar el resto del script
RUN { SET NEWNAME FOR DATAFILE 1 TO '/u01/oradata/clon/system01.dbf'; SET NEWNAME FOR DATAFILE 2 TO '/u02/oradata/clon/undotbs01.dbf'; SET NEWNAME FOR DATAFILE 3 TO '/u03/oradata/clon/users01.dbf'; SET NEWNAME FOR DATAFILE 4 TO '/u03/oradata/clon/indx01.dbf'; SET NEWNAME FOR DATAFILE 5 TO '/u02/oradata/clon/sample01.dbf'; SET NEWNAME FOR DATAFILE 6 TO '/u01/oradata/clon/querydata01.dbf'; SET NEWNAME FOR DATAFILE 7 TO '/u02/oradata/clon/example01.dbf'; DUPLICATE TARGET DATABASE TO clon LOGFILE GROUP 1 ('/u02/oradata/clon/redo01.log') SIZE 50M, GROUP 2 ('/u02/oradata/clon/redo02.log') SIZE 50M, GROUP 3 ('/u02/oradata/clon/redo03.log') SIZE 50M; }

RMAN: 4. Conexin con RMAN


La conexin TARGET debe ser para la base origen La conexin AUXILIARY debe para ser la base destino
[oracle@oel4 pfile]$ export ORACLE_SID=clon [oracle@oel4 pfile]$ rman target sys/oracle@DBA auxiliary / Recovery Manager: Release 9.2.0.4.0 - Production Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.

connected to target database: DBA (DBID=1093640045) connected to auxiliary database (not started) RMAN>

RMAN: 5. Ejecutar Script


[oracle@oel4 pfile]$ export ORACLE_SID=clon [oracle@oel4 pfile]$ rman target sys/oracle@DBA auxiliary / Recovery Manager: Release 9.2.0.4.0 - Production Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved. connected to target database: DBA (DBID=1093640045) connected to auxiliary database (not started) RMAN> 2> { 3> 4> 5> 6> 7> 8> 9> 10> 11> 12> 13> 14> RUN SET NEWNAME FOR DATAFILE 1 TO '/u01/oradata/clon/system01.dbf'; SET NEWNAME FOR DATAFILE 2 TO '/u02/oradata/clon/undotbs01.dbf'; SET NEWNAME FOR DATAFILE 3 TO '/u03/oradata/clon/users01.dbf'; SET NEWNAME FOR DATAFILE 4 TO '/u03/oradata/clon/indx01.dbf'; SET NEWNAME FOR DATAFILE 5 TO '/u02/oradata/clon/sample01.dbf'; SET NEWNAME FOR DATAFILE 6 TO '/u01/oradata/clon/querydata01.dbf'; SET NEWNAME FOR DATAFILE 7 TO '/u02/oradata/clon/example01.dbf'; DUPLICATE TARGET DATABASE TO clon LOGFILE GROUP 1 ('/u02/oradata/clon/redo01.log') SIZE 50M, GROUP 2 ('/u02/oradata/clon/redo02.log') SIZE 50M, GROUP 3 ('/u02/oradata/clon/redo03.log') SIZE 50M;}

Mover datafiles (casi) en caliente

Mover datafiles (casi) en caliente


Caractersticas
Se reduce muchsimo el downtime Requiere que la base se encuentre en modo ARCHIVELOG Se puede hacer en forma manual o con RMAN

Mover datafiles: mtodo manual


Procedimiento:
1. 2. 3. 4. 5. 6. 7.

Poner el tablespace en modo backup Copiar con un comando del sistema operativo el archivo a su destino (copiar, no mover!!!) Sacar el tablespace del modo backup Poner el tablespace OFFLINE Renombrar en el controlfile la ubicacin del datafile a la nueva ubicacin Aplicar redo al datafile Poner el tablespace ONLINE

Mover datafiles: mtodo manual


1
SQL> ALTER TABLESPACE users BEGIN BACKUP; Tablespace altered. SQL> !cp /u03/oradata/clon/users01.dbf /u02/oradata/clon/users01.dbf SQL> ALTER TABLESPACE users END BACKUP; Tablespace altered. SQL> ALTER TABLESPACE users OFFLINE; Tablespace altered. SQL> ALTER DATABASE RENAME FILE '/u03/oradata/clon/users01.dbf' TO '/u02/oradata/clon/users01.dbf'; Database altered. SQL> RECOVER DATAFILE 3; Media recovery complete. SQL> ALTER TABLESPACE USERS ONLINE; Tablespace altered.

2 3

Mover datafiles: mtodo RMAN


Procedimiento:
1. 2. 3. 4. 5.

Hacer una copia del datafile a la ubicacin destino Poner el datafile offline Renombrar en el controlfile la ubicacin del datafile a la nueva ubicacin Aplicar redo al datafile Poner el datafile ONLINE

Mover datafiles: mtodo manual


RMAN> copy datafile 3 to '/u03/oradata/DBA/users01.dbf'; Starting copy at 21-FEB-08 allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=15 devtype=DISK channel ORA_DISK_1: copied datafile 3 output filename=/u03/oradata/DBA/users01.dbf recid=3 stamp=647299933 Finished copy at 21-FEB-08 RMAN> sql 'alter database datafile 3 offline';

2
sql statement: alter database datafile 3 offline RMAN> run { switch datafile 3 to datafilecopy '/u03/oradata/DBA/users01.dbf';}

3
datafile 3 switched to datafile copy input datafilecopy recid=3 stamp=647299933 filename=/u03/oradata/DBA/users01.dbf

Mover datafiles: mtodo manual (cont.)


RMAN> recover datafile 3; Starting recover at 21-FEB-08 using channel ORA_DISK_1

starting media recovery media recovery complete Finished recover at 21-FEB-08 RMAN> sql 'alter database datafile 3 online';

5
sql statement: alter database datafile 3 online RMAN> report schema; Report of database schema File K-bytes Tablespace ---- ---------- -------------------1 204800 SYSTEM 2 204800 UNDOTBS 3 5120 USERS 4 5120 INDX

RB segs ------*** *** *** ***

Datafile Name ------------------/u01/oradata/DBA/system01.dbf /u02/oradata/DBA/undotbs01.dbf /u03/oradata/DBA/users01.dbf /u03/oradata/DBA/indx01.dbf

Preguntas

Fin de la presentacin

GRACIAS
Claudio Javier Denega cdenega@proydesa.org

You might also like