6f429244e498457b8400e72e4af683b0 Alberto Blog: RMAN Backup Strategies - Part 2

martedì 28 giugno 2011

RMAN Backup Strategies - Part 2

Una volta conclusi i backup è possibile verificare nel catalog se quest'ultimi sono effettivamente presenti e il loro stato. Collegandosi al catalog si può lanciare:
LIST BACKUP RECOVERABLE;

List of Backup Sets
===================

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
258096  Full    8.44G      DISK        00:04:33     27-JUN-11    
        BP Key: 258107   Status: AVAILABLE  Compressed: NO  Tag: TAG20110627T160014
        Piece Name: \\xxx.yyy.zzz.100\BACKUP\RMAN\****\******20110627
  List of Datafiles in backup set 258096
  File LV Type Ckp SCN    Ckp Time  Name
  ---- -- ---- ---------- --------- ----
  16      Full 7250999543 27-JUN-11 E:\*****\*****\*****\*****LARGE_3.DBF
  22      Full 7250999543 27-JUN-11 E:\*****\*****\*****\*****LARGE_9.DBF
  28      Full 7250999543 27-JUN-11 E:\*****\*****\*****\*****_15.DBF
  34      Full 7250999543 27-JUN-11 E:\*****\*****\*****\*****_21.DBF
  38      Full 7250999543 27-JUN-11 E:\*****\*****\*****\*****_LARGE_25.DBF
.............................

Ovviamente nel mio caso mi farà vedere solo l'ultimo backup eseguito come ho specificato nella retention policy. Tuttavia ogni sera mi faccio mandare un messaggio di posta per ogni DB con la situazione nel catalog per le varie istanze, se si tratta di ambienti Windows utilizzo blat con questo script:

rman target abc/abc@***T rcvcat qqqq/vvvv@*****DB log c:\rman_abc.log @c:\rmanset.rman
blat c:\rman_abc.log -to alberto.frosi -subject "RMAN Report DB"

se sono server Solaris utilizzo il classico mailx:

su - oracle -c "rman target / rcvcat 123/123@*****DB \
cmdfile=/oracle/app/oracle/product/bckonline.rcv > /DataDomain/*****/*******.log"
mailx -s "RMAN Report DB - `uname -n` " alberto.frosi@xxxxx.com < /DataDomain/*****/*******.log

Ho creato inoltre,seguendo un post di Arup Nanda,  dei report che mi consentono in qualsiasi momento di verificare tutti i backup nel catalog lanciando un semplice script che mi restituisce questo output:

DB Name  Start Time         End Time           Status   Time Tak Output Size     Type     BackupType
-------- ------------------ ------------------ -------- -------- -------- -------- ----------
ABC     21-06-2011 16:00   21-06-2011 16:35   COMPLETE 00:34:54    54.57G       DISK     DB FULL
ABC     21-06-2011 17:00   21-06-2011 17:00   COMPLETE 00:00:23   117.12M       DISK     ARCHIVELOG
ABC     21-06-2011 21:00   21-06-2011 21:01   COMPLETE 00:01:02   753.00M       DISK     ARCHIVELOG
ABC     22-06-2011 01:00   22-06-2011 01:02   COMPLETE 00:01:33   735.54M       DISK     ARCHIVELOG
...........
ABC     27-06-2011 13:00   27-06-2011 13:01   COMPLETE 00:01:28  1009.84M       DISK     ARCHIVELOG
ABC     27-06-2011 16:00   27-06-2011 16:34   COMPLETE 00:34:37    54.64G       DISK     DB FULL
ABC     27-06-2011 16:58   27-06-2011 17:14   FAILED   00:15:53     0.00K        DB FULL
. Operation            Input                Status            
. -------------------- -------------------- --------------------
. .                    DB FULL              FAILED            
.  Level  Status   Operation            Object Type      
.  ------ -------- -------------------- --------------------
.  >      COMPLETE RMAN                 .                
.  ->     COMPLETE BACKUP VALIDATE      DB FULL          
.  ->     FAILED   BACKUP VALIDATE      DB FULL          
ABC     27-06-2011 17:00   27-06-2011 17:00   COMPLETE 00:00:31   112.46M       DISK     ARCHIVELOG
ABC     27-06-2011 21:00   27-06-2011 21:01   COMPLETE 00:00:49   686.41M       DISK     ARCHIVELOG
ABC     28-06-2011 01:00   28-06-2011 01:01   COMPLETE 00:01:41   662.65M       DISK     ARCHIVELOG
ABC     28-06-2011 04:00   28-06-2011 05:05   COMPLETE 01:05:38    53.88G       DISK     DB FULL
ABC     28-06-2011 05:00   28-06-2011 05:01   COMPLETE 00:01:14   721.03M       DISK     ARCHIVELOG
ABC     28-06-2011 09:00   28-06-2011 09:01   COMPLETE 00:01:04   646.32M       DISK     ARCHIVELOG
XYZ 21-06-2011 13:00   21-06-2011 13:36   COMPLETE 00:36:02   152.66G       DISK     DB INCR
XYZ 21-06-2011 19:00   21-06-2011 19:38   COMPLETE 00:38:00   150.91G       DISK     DB INCR
XYZ 22-06-2011 04:00   22-06-2011 04:44   COMPLETE 00:44:06   156.19G       DISK     DB INCR
........
XYZ 27-06-2011 19:00   27-06-2011 19:39   COMPLETE 00:39:23   150.91G       DISK     DB INCR
XYZ 28-06-2011 04:00   28-06-2011 04:43   COMPLETE 00:43:41   156.94G       DISK     DB INCR


In questo output è possibile avere la situazione completa di tutto il catalog.

Prima di effettuare i backup per essere sicuri,  si può eseguire un check sulla consistenza per verificare se il db è corrotto a livello fisico e/o logico e per confermare che tutti i datafiles esistono e sono nelle posizioni corrette.

RMAN con questo comando non produce ulteriori set di backup, ma legge piuttosto i file specificati nella loro interezza, per determinare se possono essere sottoposti a backup e non sono danneggiati.
Se la convalida di backup scopre blocchi corrotti,  aggiorna RMAN la vista V_$DATABASE_BLOCK_CORRUPTION con le righe che descrivono la corruzione.

BACKUP VALIDATE
DATABASE
ARCHIVELOG ALL;


e/o

BACKUP VALIDATE
CHECK LOGICAL
DATABASE
ARCHIVELOG ALL;

Starting backup at 27-JUN-11
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00046 name=/XXXX/aaaaaa1.dbf
input datafile fno=00035 name=/XXXX/aaaaaa2.dbf
input datafile fno=00036 name=/XXXX/aaaaaa3.dbf
input datafile fno=00029 name=/XXXX/aaaaaa4.dbf
......


E' possibile inoltre verificare se un backupset eseguito con RMAN sia andato a buon fine ed
è possibile quindi eseguirne il ripristino:

RMAN> LIST BACKUP SUMMARY;

 List of Backups
===============
Key     TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag
------- -- -- - ----------- --------------- ------- ------- ---------- ---
428019  B  0  A DISK        28-JUN-11       1       1       NO         TAG20110628T040007
428020  B  0  A DISK        28-JUN-11       1       1       NO         TAG20110628T040007
428021  B  0  A DISK        28-JUN-11       1       1       NO         TAG20110628T040007
428022  B  0  A DISK        28-JUN-11       1       1       NO         TAG20110628T040007
428023  B  0  A DISK        28-JUN-11       1       1       NO         TAG20110628T040007


RMAN> VALIDATE BACKUPSET 428022,428023;

allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=183 devtype=DISK
channel ORA_DISK_1: starting validation of datafile backupset
channel ORA_DISK_1: reading from backup piece /DataDomain/*****/******_72194_754978164_1.dbf
channel ORA_DISK_1: restored backup piece 1
piece handle=/DataDomain/*****/*****_72194_754978164_1.dbf tag=TAG20110628T040007
channel ORA_DISK_1: validation complete, elapsed time: 00:04:37
channel ORA_DISK_1: starting validation of datafile backupset
channel ORA_DISK_1: reading from backup piece /DataDomain/******/********_72196_754978766_1.dbf
channel ORA_DISK_1: restored backup piece 1
piece handle=/DataDomain/*****/*****_72196_754978766_1.dbf tag=TAG20110628T040007
channel ORA_DISK_1: validation complete, elapsed time: 00:04:07



Un'altra idea è quella di adottare una politica di Long-Term Backup ossia di tenere almeno un backup consistente mensile. Questo andrebbe contro la mia retention policy ma c'è un workaround.
E' possibile eseguire questo, specificando l'opzione KEEP nel comando BACKUP. Sì puo inoltre specificare di eseguire il backup anche con  l'opzione LOGS oppure NOLOGS.
Nel mio caso essendo un backup mensile ma soprattutto consistente sceglierò NOLOGS.

RMAN> SHUTDOWN IMMEDIATE;
RMAN> STARTUP MOUNT;
RMAN> BACKUP DATABASE KEEP FOREVER NOLOGS TAG 'Backup Mensile';


Una volta eseguito cambio il TAG per farlo "uscire" dalla retention policy e farlo diventare permanente.

RMAN> CHANGE BACKUP TAG 'Backup Mensile' UNAVAILABLE;
RMAN> SQL 'ALTER DATABASE OPEN';


A questo punto mi sembra di avere eseguito una panoramica completa di tutte o quasi le
funzionalità di RMAN più usate.

Nessun commento:

Posta un commento