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

Start typing and press Enter to search