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

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)

Leave a Reply