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 redo log then clear the redo log 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 reset logs;

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