Monday, March 25, 2013

Recovering database from ORA-01207


One of our database crashed due to filer crash. When we tried to start the database back, we got following errors
1ORA-01122: database file 43 failed verification check
2ORA-01110: data file 43: '/u07/oradata/orcl/test_idx_4m001.dbf'
3ORA-01207: file is more recent than control file - old control file
4ORA-1122 signalled during: ALTER DATABASE OPEN /* db agent *//* {1:43923:2704} */...
Searching for above errors, lead to posts where people were recommending recovery from backup controlfile and opening database with resetlogs.
This is not correct approach as none of archive/redo log files were lost and its issue of missing update in control file.
Correct solution would be to recreate controlfile and recover database. I am documenting steps used for recovering database
1. Mount database and take controlfile backup which will be used to recreate controlfile
1sqlplus / as sysdba
2startup mount
3alter database backup controlfile to trace as /home/oracle/backup_cntrl.sql';
2. Make a copy of this file and edit it so as to keep “create controlfile” with noresetlogs option
3. Shutdown the database and take cold backup (Always take backup of existing db before recovery)
4. Rename/remove the existing control files(can check control_files parameter from init.ora file)
5. If this is RAC, set cluster_database=false and start only one instance with startup nomount
6. Run the script to create controlfile
7. Issue “recover database”
8. Open database now
“Alter database open;”
Hope this helps!!!!!!!

No comments: