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.