In development environment, it is very common scenario that we have multiple databases in a single machine by using VMware (i.e, each VMware contains one database). Again those machines doesn't have consistant power backup. Therefore we have to face power failure or VMware hang-up. So, we are forced to restart the machine while databases are still up & running. After restarting the machine, we have mostly got he following error:
ORA-00333: redo log read error block count .
Here are the steps to overcome the error
SQL> startup
ORACLE instance started.
Total System Global Area ***** bytes
Fixed Size ***** bytes
Variable Size ***** bytes
Database Buffers ***** bytes
Redo Buffers ***** bytes
Database mounted.
ORA-00333: redo log read error block *Number* count *Number*
Step 1: As the Db is in mount mode, We can query v$log & v$logfile to identify the status of log file group and their member.
SQL> select l.status, member from v$logfile inner join v$log l using (group#);
STATUS MEMBER
------------- --------------------------------------
CURRENT /oracle/fast_recovery_area/redo01.log
INACTIVE /oracle/fast_recovery_area/redo02.log
INACTIVE /oracle/fast_recovery_area/redo03.log
Step 2: Recover the database using ackup controlfile.
SQL> recover database using backup controlfile;
ORA-00279: change generated at needed for thread 1
ORA-00289: suggestion : /oracle/fast_recovery_area/archivelog/o1_mf_1_634_%u_.arc
ORA-00280: change for thread 1 is in sequence #
Specify log: {=suggested | filename | AUTO | CANCEL}
Step3: Give 'CURRENT' log file member along with location as input. If it does not work give other log file members along with location in input prompt. In our case we give
/oracle/fast_recovery_area/redo01.log
Log applied.
Media recovery complete.
Step 4: Open the database with reset logfile
SQL> alter database open resetlogs;
Database altered.