miércoles, 24 de noviembre de 2010

Respaldos con RMAN - Parte II

En la entrada anterior (Parte I) platicamos un poco de los componentes basicos de RMAN para poder hacer un respaldo.
En esta entrada vamos a configurar un esquema de Catalogo para recuperacion, asi como conectarnos a el y hacer un respaldo de nuestra base de datos.

Conectarnos a RMAN
Existen varias maneras de conectarnos a RMAN, aqui hay varias, la que vamos a utilizar es la tercera, ya nos vamos a estar conectando a un esquema de catalogo de recuperacion.
  • rman TARGET /                       # Autorización via OS
  • rman TARGET SYS@prod NOCATALOG      # RMAN pregunta por el password de SYS de la BD prod
  • rman TARGET / CATALOG rco@catdb     # RMAN pregunta por el password de rco de la BD catdb
Configuracion del esquema de Catalogo de Recuperacion
Este esquema lo vamos a crear en una instancia distinta a la que queremos respaldar, en este caso creamos previamente la BD va a llevar el nombre de catdb y el esquema de rco.
  1. En la BD catdb, nos conectamos via SQL*Plus y vamos a crear un tablespace llamado "catalogo_recup"
    CREATE TABLESPACE "catalogo_recup"
    DATAFILE ' /mount/u01/oracle/PROD/data/catalogo_recup01.dbf'
    SIZE 100M
    EXTENT MANAGEMENT LOCAL
    SEGMENT SPACE MANAGEMENT AUTO
    /
  2. Todavia en catdb, vamos a crear el esquema rco, asi como definir el tablespace defualt, asignarle una cuota indefinida y por ultimo asignarle el rol de RECOVERY_CATALOG_OWNER
    CREATE USER rco IDENTIFIED BY rco
    DEFAULT TABLESPACE catalogo_recup
    TEMPORARY TABLESPACE temp
    QUOTA UNLIMITED ON catalogo_recup
    /
    GRANT RECOVERY_CATALOG_OWNER TO rco
    /
  3. Una vez que creamos el esquema rco, nos salimos del ambiente de SQL*Plus y nos vamos a conectar con el cliente de RMAN al esquema que acabamos de crear, mencionando que este es un catalogo y vamos a crear el catalogo en este esquema.
    rman catalog rco/rco@catdb
    Recovery Manager: Release 10.2.0.4.0 - Production on Wed Nov 24 06:07:39 2010
    Copyright (c) 1982, 2007, Oracle.  All rights reserved.

    connected to recovery catalog database

    RMAN> create catalog;

    recovery catalog created

    RMAN> exit
  4. Algo que es importante saber, cuando registramos dos o mas BDs en el catalogo, es necesario que cada una de estas tengan un identificador unico, este es manejado por Oracle, y es el DBID, que lo podemos encontrar en la vista de v$database
    prod >select DBID from v$database;

          DBID
    ----------
     949818943
    Si quieres registrar otra base de datos que tenga el mismo DBID, lo vas a tener que hacer en otro catalogo o vas a tener que cambiar el DBID de la base de datos con la utileria de Oracle $ORACLE_HOME/bin/nid (DBNEWID), que esto lo veremos en otra entrada, pero por lo pronto puedes ir a la documentacion oficial de como utilizar esta.
  5. Lo ultimo que nos falta de hacer es registrar la base de datos prod en el catalogo que acabamos de crear, esto lo hacemos desde el cliente de rman, conectandonos a la BD que queremos respaldar y al catalogo que vamos a utilizar.

    rman target system/system_password@prod catalog rco/rco@catdb

    RMAN> register database;
    Una vez que esta registrada la BD prod, podemor correr el comando report schema, para verificar que el registro se llevo a cabo.
    RMAN> report schema;


    Report of database schema for database with db_unique_name prod

    List of Permanent Datafiles
    ===========================
    File Size(MB) Tablespace           RB segs Datafile Name
    ---- -------- -------------------- ------- ------------------------
    1    500      SYSTEM               ***     /mount/u01/oracle/prod/data/system.dbf
    2    800      UNDOTBS1             ***     /mount/u01/oracle/prod/data/undotbs1.dbf
    3    475      SYSAUX               ***     /mount/u01/oracle/prod/data/sysaux.dbf
    4    100      USERS                ***     /mount/u01/oracle/prod/data/users01.dbf

    List of Temporary Files
    =======================
    File Size(MB) Tablespace           Maxsize(MB) Tempfile Name
    ---- -------- -------------------- ----------- --------------------
    1    5000     TEMP                 5000        /mount/u01/oracle/prod/data/temp01.dbf
Respaldando nuestra base de Datos
Una vez configurando nuestro catalog y registrando nuestra BD en el catalogo, existen varias maneras de hacer un respaldo, pero a continuacion es un ejemplo de un respaldo incremental nivel 0, a su vez respaldando el controlfile, los archivelogs y el spfile.
rman target system/system_password@prod catalog rco/rco@catdb
Recovery Manager: Release 11.2.0.2.0 - Production on Wed Nov 24 23:30:21 2010

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

connected to target database: prod (DBID=949818943)
connected to recovery catalog database
RMAN> RUN
2> {
3> ALLOCATE CHANNEL CH1 DEVICE TYPE DISK
4>  FORMAT '/mount/copy01/prod/oracle/prod/incr/%d_HOT_%M%D%Y_%p_%s';
5>  BACKUP AS COMPRESSED BACKUPSET
6>  INCREMENTAL LEVEL = 0
7>  DATABASE TAG prod_HOTINCR_1124_2321;
8>  BACKUP FORMAT '/mount/copy01/prod/oracle/prod/control/%d_%M_%D_%Y_%t.ctl'
9>  CURRENT CONTROLFILE
10>  TAG prod_CONTROLFILE_1124_2321;
11>  BACKUP AS COMPRESSED BACKUPSET ARCHIVELOG ALL TAG prod_ARCH_1124_2321 DELETE INPUT;
12>  BACKUP SPFILE;
13> }

released channel: ORA_DISK_1
allocated channel: CH1
channel CH1: SID=151 device type=DISK

Starting backup at 24-NOV-10
channel CH1: starting compressed incremental level 0 datafile backup set
channel CH1: specifying datafile(s) in backup set
input datafile file number=00002 name=/mount/u01/oracle/prod/data/undotbs1.dbf
input datafile file number=00001 name=/mount/u01/oracle/prod/data/system.dbf
input datafile file number=00003 name=/mount/u01/oracle/prod/data/sysaux.dbf
input datafile file number=00004 name=/mount/u01/oracle/prod/data/users01.dbf
channel CH1: starting piece 1 at 24-NOV-10
channel CH1: finished piece 1 at 24-NOV-10
piece handle=/mount/copy01/prod/oracle/prod/incr/prod_HOT_11242010_1_10 tag=prod_HOTINCR_1124_2321 comment=NONE
channel CH1: backup set complete, elapsed time: 00:02:35
channel CH1: starting compressed incremental level 0 datafile backup set
channel CH1: specifying datafile(s) in backup set
including current control file in backup set
including current SPFILE in backup set
channel CH1: starting piece 1 at 24-NOV-10
channel CH1: finished piece 1 at 24-NOV-10
piece handle=/mount/copy01/prod/oracle/prod/incr/prod_HOT_11242010_1_11 tag=prod_HOTINCR_1124_2321 comment=NONE
channel CH1: backup set complete, elapsed time: 00:00:01
Finished backup at 24-NOV-10

Starting backup at 24-NOV-10
channel CH1: starting full datafile backup set
channel CH1: specifying datafile(s) in backup set
including current control file in backup set
channel CH1: starting piece 1 at 24-NOV-10
channel CH1: finished piece 1 at 24-NOV-10
piece handle=/mount/copy01/prod/oracle/prod/control/prod_11_24_2010_735952466.ctl tag=prod_CONTROLFILE_1124_2321 comment=NONE
channel CH1: backup set complete, elapsed time: 00:00:01
Finished backup at 24-NOV-10

Starting backup at 24-NOV-10
current log archived
channel CH1: starting compressed archived log backup set
channel CH1: specifying archived log(s) in backup set
input archived log thread=1 sequence=250 RECID=487 STAMP=735952469
channel CH1: starting piece 1 at 24-NOV-10
channel CH1: finished piece 1 at 24-NOV-10
piece handle=/mount/copy01/prod/oracle/prod/incr/prod_HOT_11242010_1_13 tag=prod_ARCH_1124_2321 comment=NONE
channel CH1: backup set complete, elapsed time: 00:00:01
channel CH1: deleting archived log(s)
archived log file name=/mount/arch01/oracle/DBADG/prod_250_1_735160286.dbf RECID=487 STAMP=735952469
Finished backup at 24-NOV-10

Starting backup at 24-NOV-10
channel CH1: starting full datafile backup set
channel CH1: specifying datafile(s) in backup set
including current SPFILE in backup set
channel CH1: starting piece 1 at 24-NOV-10
channel CH1: finished piece 1 at 24-NOV-10
piece handle=/mount/copy01/prod/oracle/prod/incr/prod_HOT_11242010_1_14 tag=TAG20101124T231431 comment=NONE
channel CH1: backup set complete, elapsed time: 00:00:01
Finished backup at 24-NOV-10
released channel: CH1

RMAN> exit
Recovery Manager complete.
Conclusión
RMAN es una herramienta que ha evolucionado a traves de las versiones de Oracle, y que hoy en dia es una manera recomendable de tener un punto de respaldo de nuestras BDs, asi como ayudarnos para cuando tenemos un bloque corrupto y hasta verificar si el respaldo sirve o no. Te recomiendo que pruebes RMAN lo antes posible y le saques todo el jugo que se pueda.