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
- Editem el init.ora per afegir els següents paràmetres
*.log_archive_dest='/ejemplo/backup/'
*.log_archive_format='SID_%r_%t_%s'
- 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:
- 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
- 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;
- Programem la tasca (crontab?) I llest!!
Per a més informació sobre els archive redo logs aquí.