ORA-00354: corrupt redo log block header

Posted: 02/10/2012 in Oracle Database
Etiquetas:

Olá pessoal, tudo bom ?

Hoje vou postar uma situação que aconteceu durante um atendimento a um cliente durante uma restauração do backup RMAN, isso mesmo, não basta ter backup, o que vale mesmo é um restore válido como dizia meu amigo Bruno Murassaki.

Logo após a resutaração, banco de dados quase pronto para ser liberado para o cliente fui verificar o alert.log como parte da rotina. E para minha surpresa, várias entradas apontando para possiveis problemas de archivamento.

Errors in file /oracle/app/oracle/diag/rdbms/target/trace/target_arc2_7645.trc;
ORA-00354: corrupt redo log block header
ORA-00353: log corruption near block 939 change 83047523485 time 09/12/2012 22:33:54
ORA-00312: online log 15 thread 1: ‘+DATA/target/onlinelog/group_15.278.793109619’
ARC2: All Archive destinations made inactive due to error 354
ARC2: Clossing local archive destination LOG_ARCHIVE_DEST1: ‘/oracle/app/oracle/product/11gR2/dbs/arch1_451_793109613.dbf”  (error 354)  (target)
ARCH: Archival stopped, error occurred. Will continue retrying
ORACLE Instance test1 – Archival Error

A partir do alert.log, temos que o o grupo de redo log 15 estava marcado como corrompido. Proximo passo foi verificar o status do grupo de redo log 15 na v$log, e lá encontramos o grupo como INACTIVE e também nao tinha sido realizado o ARCHIVE dele.

GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS
———- ———- ———- ———- ———- ———- — ————–
5          1      44342   26214400        512          1 NO  CURRENT
6          1      44343   26214400        512          1 YES INACTIVE
7          1      44344   26214400        512          1 YES INACTIVE
8          1      44345   26214400        512          1 YES INACTIVE
9          1      44346   26214400        512          1 YES INACTIVE
10          1      44347   26214400        512          1 YES INACTIVE
11          1      44348   26214400        512          1 YES INACTIVE
12          1      44349   26214400        512          1 YES INACTIVE
13          1      44339   26214400        512          1 YES INACTIVE
14          1      44340   26214400        512          1 YES INACTIVE
        15          1      44341   26214400        512          1 NO  INACTIVE      

Resolução:

SQL> ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 15;
Database altered.
Neste mesmo momento no alert.log aparecia
ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 15
WARNING! CLEARING REDO LOG WHICH HAS NOT BEEN ARCHIVED. BACKUPS TAKEN
    BEFORE 09/12/2012 22:33:58 (CHANGE 83047525487) CANNOT BE USED FOR RECOVERY.
Clearing online log 15 of thread 1 sequence number 451
Completed: ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 15

Com isso,  banco de dados funcinando normalmente e sem entradas no alert.log.
É importante lembrar também que assim como mostrado no alert.log, os backups realizados antes da alteração 83047525487  nao poderão ser usados para RECOVERY, ou seja, é muito importante que um backup FULL seja realizado imediatante após esta operação.
Um grande abraço e até lá !

Deixe um comentário