Redo log corruption

What is a Redo log corruption?

In the Oracle RDBMS environment, redo logs comprise files in a proprietary format which log a history of all changes made to the database. Each redo log file consists of redo records. A redo record, also called a redo entry, holds a group of change vectors, each of which describes or represents a change made to a single block in the database.

Whenever Oracle throws the following error, it means that Redo is corrupted.

Error

ORA-16038: log 2 sequence# 6032 cannot be archived

ORA-00354: corrupt redo log block header

ORA-00312: online log 2 thread 1: ‘/data1/oradata/ibatap12/redo02.log’

Solution:-

1)  Find the Corrupted group# from V$log;

Select group# from v$log;

2) Clear the archived group(corrupted).

alter database clear logfile group group#;

3)If could not clear archived redolog then clear the redolog without archiving using(clear unarchived )

alter database clear unarchived  logfile group group#;

4) If  step 2 & 3 is not possible then perform incomplete recovery

recover database until time ‘2023-01-21:22:59:04’

alter database open resetlogs;

Oracle Recovery with  _allow_resetlogs_corruption

Recovery of a database using the undocumented parameter _allow_resetlogs_corruption should be regarded as a last-ditch, emergency recovery scenario only, and should not be attempted until all other avenues of recovery have been exhausted.

Essentially, using _allow_resetlogs_corruption forces the opening of the datafiles even if their SCNs do not match up; then, on the next checkpoint, the old SCN values are overwritten. This could leave the database in an unknown state as far as concurrency.

 

 

Recent Posts