ORA-01207: file is more recent than control file – old control file
Error Message:
SQL> alter database open;
ORA-00283: recovery session canceled due to errors
ORA-01122: database file 1 failed verification check
ORA-01110: data file 1: '/oradb/app/oracle/oradata/ORCL/system01.dbf’
ORA-01207: file is more recent than control file – old control file
SOLUTION :
1) Dump controlfile to trace
SQL> alter database backup controlfile to trace as '/tmp/control_reco.sql';
2) startup database nomount
SQL> startup nomount
3) create the control file
Copy the script to create control file from trace file
SQL> CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/oradb/app/oracle/oradata/ORCL/redo01.log' SIZE 50M,
GROUP 2 '/oradb/app/oracle/oradata/ORCL/redo02.log' SIZE 50M,
GROUP 3 '/oradb/app/oracle/oradata/ORCL/redo03.log' SIZE 50M
DATAFILE
'/app/oracle/oradata/rac10g/system01.dbf',
'/app/oracle/oradata/rac10g/undotbs01.dbf',
'/app/oracle/oradata/rac10g/sysaux01.dbf',
'/app/oracle/oradata/rac10g/users01.dbf'
CHARACTER SET AL32UTF8
;
Control file created.
4) recover database using backup controlfile
SQL> recover database using backup controlfile;
ORA-00279: change 460683 generated at 08/18/2018 13:36:21 needed for thread 1
ORA-00289: suggestion :
/oradb/app/oracle/flash_recovery_area/ORCL/archivelog/2018_08_17/ORCL_mf_1_33_%u_.arc
ORA-00280: change 460683 for thread 1 is in sequence #33
Give the CURRENT redo log file to apply (get from v$logfile)
SQL> set lines 150
SQL> col "REDOLOG_FILE_NAME" for a70
SQL> SELECT a.GROUP#, a.ARCHIVED, a.STATUS, b.MEMBER AS "REDOLOG_FILE_NAME" FROM v$log a JOIN v$logfile b ON a.Group#=b.Group#
ORDER BY a.GROUP#;
GROUP# ARC STATUS REDOLOG_FILE_NAME
---------- --- ---------------- ----------------------------------------------------------------------
1 NO CURRENT /oradb/app/oracle/oradata/ORCL/redo01.log
2 NO INACTIVE /oradb/app/oracle/oradata/ORCL/redo02.log
3 NO INACTIVE /oradb/app/oracle/oradata/ORCL/redo03.log
Here, group 1 is CURRENT. So use it for the recovery
/oradb/app/oracle/oradata/ORCL/redo01.log
Log applied.
Media recovery complete.
5) open the database
SQL> alter database open resetlogs;
Database altered.