Oracle10g: Poner la base de datos en modo archivelog y hacer backups con rman

Oracle10g: Posar la base de dades en mode archivelog i fer backups amb rman il_masacratore 18 June, 2010 - 11:46

La manera archivelog d'una base de dades Oracle protegeix contra la pèrdua de dades quan es produeix una fallada en el medi físic i és el primer pas per poder fer còpies de seguretat (en calent!!) Amb rman. Per posar la base de dades en mode archivelog (sense utilitzar la flash recovery àrea) hem de fer bàsicament dues coses, afegir dos paràmetres nous al fitxer de configuració, reiniciar la base de dades i canviar la manera treball a archivelog.

Com posar la base de dades Oracle 10g en mode archivelog

  1. Editem el init.ora per afegir els següents paràmetres
    *.log_archive_dest='/ejemplo/backup/'
    *.log_archive_format='SID_%r_%t_%s'
     
  2. Reiniciem la base de dades perquè agafi els canvis i ens assegurem.
    SQL> shutdown immediate
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> startup mount pfile='/exemple/pfile/init.ora
    ORACLE instance started.
     
    Total System Global Area  272629760 bytes
    Fixed Size                   788472 bytes
    Variable Size             103806984 bytes
    Database Buffers          167772160 bytes
    Redo Buffers                 262144 bytes
    Database mounted.
    SQL> alter database archivelog;
    Database altered.
    SQL> alter database open;
    Database altered.
    SQL> create spfile;
    SQL> shutdown immediate;
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> startup

Backups amb RMAN
 
Un cop tenim la base de dades funcionant en mode archivelog ja podem plantejar fer els backups amb rman. Per fer-los n'hi ha prou amb editar un script on básicamnte fem la còpia i mantenim archives sobre la base de tots còpies volem mantenir i cada quan executarem l'script. Només hem de tenir cura i dimensionar correctament el nombre de còpies i archivelog que mantell en base a l'espai disponible al disc. Per saber quant espai necessitarem podem aplicar la següent formula, suposant que la còpia sigui diària:

Espai necessari = (num_backups_rman_mantinguts*tamany_backups_rman)+(media_num_redos_al_dia)*(dias_mantinguts).
 

Passos per començar a fer backups:

  1. Editem l'script de sistema per al llançament (/ exemple / scripts / rman.sh):
    #!/bin/bash
    export ORACLE_HOME=/opt/oracle/product/10.2/db_1/
    export ORACLE_SID=SID
    /opt/oracle/product/10.2/db_1/bin/rman @/ejemplo/scripts/rman.sql > /backup/scripts/rman.log
     
  2. Script sql que llançarem amb el sh anterior (/ exemple / scripts / rman.sql). No cal comentar perquè és molt fàcil llegir el que està fent en cada pas. Veureu també on s'indica la caducitat dels backups i els archives.

    connect target root/password@SID
    run {
    CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 3 DAYS;

    CONFIGURE CONTROLFILE AUTOBACKUP ON;
    CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/exemple/backup/%F';

    CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/exemplo/backup/%d_%Y%M%D%U';
    CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO COMPRESSED BACKUPSET;
    CONFIGURE MAXSETSIZE TO 8000M;

            backup database
            include current controlfile
            plus archivelog;

    CROSSCHECK BACKUP completed before 'sysdate - 4';       
    DELETE NOPROMPT OBSOLETE;                               
    DELETE NOPROMPT ARCHIVELOG UNTIL TIME "SYSDATE - 4";
    delete noprompt expired backup;
    delete noprompt expired archivelog all;
    report schema;
    }
    exit;
     

  3. Programem la tasca (crontab?) I llest!!
     

Per a més informació sobre els archive redo logs aquí.