Backup oracle flash recovery area

La flash recovery area permette di ripristinare i dati del vostro db oracle anche a pochi minuti prima dell”‘incidente”.

Tuttavia, se non gestita correttaemente, quest’area continua a crescere fino ad raggiungere il limite massimo (configurato nell’impostazioni del db).

In questo caso potreste avere errori del tipo:

ORA-16038: log 1 sequence# 230 cannot be archived
ORA-19809: limit exceeded for recovery files
ORA-00312: online log 1 thread 1: ‘/oradata/…/redo01.log’

Per risolvere questo problema potete seguire la seguente procedura che utilizza sqlplus e rman.

$ sqlplus sys as sysdba

avviate la vostra istanza oracle

SQL> startup mount;

se fosse già aperta chiudetela con

SQL> shutdown immediate;

dopo aver avviato l’istanza controllate quale sia la dimensione attuale della flashbackarea

SQL> show parameter db_recovery_file_dest_size

a questo punto dovrete aumentare leggermente le dimensioni della flashbackarea con il seguente comando

SQL> alter system set db_recovery_file_dest_size=25G scope=BOTH;

A questo punto chiudete e riavviate l’istanza.

SQL> shutdown immediate;
SQL> startup open;

Quindi passiamo a RMAN.

$ rman target /

Dove lanceremo il seguente script:

run {
backup database;
backup (archivelog all delete input);
} allocate channel for maintenance device type disk;
delete obsolete device type disk;

Il seguente script di occupa di fare il backup dei file del database, poi dell’archive log. E dopo, quando questa operazione si è conclusa con successo, la flash recovery area viene ripulita. Ed infine, rimuove i backup obsoleti in accordo con le politiche di gestione dei backup di rman.

Quindi avviando questo script con una certa frequenza non incorreremo più nell’errore sopracitato.

powered by IMHO 1.3

Leave a Reply