Guía Básica de RMAN (actualizada)
Deja una respuesta
Conexión a RMAN
La forma más simple de conectarse a RMAN es la siguiente (con el usuario oracle):$ rman target / Recovery Manager: Release 10.2.0.1.0 - Production on Wed Mar 8 13:16:22 2006 Copyright (c) 1982, 2005, Oracle. All rights reserved. connected to target database: LCBDPROD (DBID=2582320114) RMAN>Si queremos que nuestras actividades se registren en un archivo log:
$ rman target / log /ruta/archivo.log [append]
Parámetros de configuración de RMAN
RMAN viene configurado con una serie de parámetros predefinidos, mismos que podemos ver con el comando show:RMAN> show all ;
using target database control file instead of recovery catalog RMAN configuration parameters are: CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default CONFIGURE BACKUP OPTIMIZATION OFF; # default CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default CONFIGURE MAXSETSIZE TO UNLIMITED; # default CONFIGURE ENCRYPTION FOR DATABASE OFF; # default CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/oracle/10.2.0/dbs_1/dbs/snapcf_LCBDPROD1.f'; # default
Respaldos incrementales
Un respaldo incremental consta de dos niveles: 0 (respaldo completo de la base de datos y que sirve de base a los respaldos incrementales) y 1 (respaldos incrementales en los que solamente se respaldan los bloques que han cambiado desde el último respaldo). Adicionalmente, es posible “actualizar” el respaldo de nivel 0 con los cambios del respaldo de nivel 1. Un respaldo de este tipo se haría de la siguiente forma:Paso 1. Respaldo completo (nivel 0):
RMAN> backup incremental level 0 tag ‘INC_L0’ database ;Paso 2: Primer respaldo incremental (nivel 1):
RMAN> backup incremental level 1 for recover of copy tag ‘INC_L0’ database ;Paso 3: Aplicar el respaldo incremental al respaldo de nivel 0, es decir, aplicar los cambios en los bloques al respaldo base.
RMAN> recover copy of database with tag ‘INC_L0’ ;Para que el desempeño del respaldo incremental sea óptimo, es necesario habilitar la opción llamada block change tracking, que es un archivo que lleva el registro de los bloques que van cambiado desde el último respaldo. Si no está habilitado, RMAN tiene que leer todos los bloques de la base de datos para determinar cual respaldar, haciendo el respaldo tan caro como un full backup. Para habilitar block change tracking:
SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING ;El archivo de tracking se genera automáticamente en el área de flashback.
Respaldo de los respaldos
Si los respaldos se están haciendo en flashback recovery area, es conveniente respaldar también esta área que se encuentra en disco.RMAN> backup recovery area ;Esto respalda todos los archivos de recuperación en flashback recovery area: full backups, copies, incrementals, respaldos de controlfiles, y archivelogs. No se respaldan block change tracking files, controfiles actuales ni redo logs. El único destino válido para estos respaldos es cinta.
Políticas de retención
Las políticas de retención nos ayudan a determinar qué respaldos todavía son necesarios y cuáles ya no debido a que han quedado obsoletos por un respaldo más reciente. Hay dos tipos de políticas de retención y son mutuamente excluyentes: redundancy y recovery window.- Redundancy: determina cuantas copias de un archivo se necesitan antes de considerar una copia obsoleta. Si la redundancia es 1, cada que se respalde un archivo (copia), todas las copias anteriores son obsoletas. REDUNDANCY=1 es la política de retención por default.
- Recovery Window: determina el tiempo que debe ser retenido un archivo antes de ser obsoleto.
RMAN> configure retention policy to redundancy X ; ó RMAN> configure retention policy to recovery window of X days ;Con nuestra política definida, podemos revisar los respaldos que ya son obsoletos:
RMAN> report obsolete ;Y borrarlos si determinamos que ya no son necesarios:
RMAN> delete obsolete ; <-- borrar="" nos="" pregunta="" queremos="" realmente="" rman="" si=""> delete force noprompt obsolete ; <-- borra="" confirmaci="" n.="" pre="" sin="">Oracle automáticamente borrará respaldos obsoletos si flashback recovery area comienza a tener problemas de espacio.
Configuración de cintas
RMAN no puede escribir directamente a cintas, por lo que es necesario configurar una librería que generalmente es proporcionada por el fabricante de la unidad de respaldo a cinta. En versiones anteriores de RMAN dicha librería se configuraba en $ORACLE_HOME/lib, sin embargo, en 10g Oracle recomienda que se especifique la librería directamente:
RMAN> configure channel device type sbt 2> parms= ‘SBT_LIBRARY=/path/librería’ ;Reporte de operaciones
Podemos usar los comandos LIST y REPORT para generar reportes de actividades realizadas con RMAN:
list backup summary; list backup by datafile; list backup of database; list backup of archivelog all; list backup of controlfile; report obsolete ; report need backup ;Scripts
Archivos de comandos: Un archivo de comandos es un archivo de texto conteniendo comandos RMAN, y que puede ser llamado de la siguiente forma:
RMAN> @/ruta/script.txt ó $ rman target / @/ruta/script.txtComando RUN: El comando RUN agrupa comandos de RMAN para ser ejecutados como uno solo. Si uno de los comandos falla, el resto ya no es ejecutado.
RUN { BACKUP ARCHIVELOG ALL DELETE ALL INPUT; BACKUP INCREMENTAL LEVEL 0 TAG mon_bkup DATABASE; }Casos de recuperación
Se puede ejecutar el comando RESTORE … VALIDATE para confirmar que una operación puede ser ejecutada correctamente. RMAN automáticamente decide qué archivos son necesarios para la recuperación y verifica que sean utilizables.
RMAN> restore database validate ;Caso 1. Recuperación completa de la base de datos cuando se tiene el archivo de control y la base de datos está montada:
RMAN> restore database ; RMAN> recover database ;Caso 2. Se tiene la situación del caso 1 pero se desea recuperar a un punto pasado en el tiempo:
RMAN> run {set until time = ’04-MAR-06 12:00:00’; 2> restore database ; 3> recover database ; 4> }Caso 3. Recuperación de un datafile
Identificar el número de datafile: SQL> select file#, name from v$datafile ; Poner offline el datafile, ya sea desde SQL*Plus o desde RMAN: RMAN> sql ‘alter database datafile 8 offline’ ; Recuperar el datafile: RMAN> run {restore datafile 8 ; 2> recover datafile 8 ; 3> sql ‘alter database datafile 8 online’ ; 4> }Caso 4. Recuperación de un tablespace.
RMAN> run {sql ‘alter tablespace users offline’ ; 2> restore tablespace users ; 3> recover tablespace users ; 4> sql ‘alter tablespace users online’ ; 5> }El comando run es para correr las instrucciones en modo script, pero también pueden ser ejecutadas una por una:
RMAN> sql ‘alter tablespace users offline’ ; RMAN> restore tablespace users ; RMAN> recover tablespace users ; RMAN> sql ‘alter tablespace users online’ ;Caso 5. Recuperación de bloques corruptos RMAN es la herramienta ideal para recuperación de bloques corruptos (ORA-1578). El error nos dice cuál es el bloque corrupto:
ORA-1578: ORACLE data block corrupted (file # 7, block # 1234)Mismos que también podemos consultar en la vista v$database_block_corruption. Para recuperar todos los bloques corruptos:
RMAN> blockrecover corruption list ;O podemos recuperar bloques individuales:
RMAN> blockrecover datafile 7 block 1234[, datafile 10 block 3265, ...] ;-->-->