ORA-00214 and Control File Mismatch

Posted in: Technical Track

One of the many reasons a clean Oracle database shutdown should always be a ‘must have’ ingredient of a server reboot SOP, is ORA-214.

The scenario goes like this:

The instance was in nomount stage and was unable to mount the database.

Checked the uptime, and found that the server was rebooted some 5 minutes ago, and the instance tried to come up automatically but failed to mount the database.

Checked the alert log and found the following error:

ORA-214 signaled during: ALTER DATABASE   MOUNT…

Made a quick searched about ORA-00214 and it was about mismatched control files. It was probably due to the fact that control files got out of sync as the not-so-graceful reboot of the server was done without first cleanly shutting down the database.

This is what doc says:

ORA-00214: control file “string” version string inconsistent with file “string” version string.

Cause: An inconsistent set of control files, datafiles/logfiles, and redo files was used.

Action: Use a consistent set of control files, datafiles/logfiles, and redo log files. That is, all the files must be for the same database and from the same time period.

checked the locations of control files:

SQL> select instance_name,status from v$instance;

————-            ————-
ORCL                STARTED

SQL> show parameter control_files

—-        —-    —-
control_files    string    /u01/app/oracle/oradata/ORCL/control01.ctl, /u01/app/oracle/oradata/ORCL/control02.ctl,/data/oradata/ORCL/control03.ctl

Checked which control files are different. Here having odd numbers of control files is a life saver, because we have a good chance of finding the even number of control files that match and can determine which one is the one gone awry.

[oracle@mytest ORCL]$ diff /u01/app/oracle/oradata/ORCL/control01.ctl  /u01/app/oracle/oradata/ORCL/control02.ctl

[oracle@mytest ORCL]$ diff /u01/app/oracle/oradata/ORCL/control01.ctl /data/oradata/ORCL/control03.ctl
Binary files /u01/app/oracle/oradata/ORCL/control01.ctl and /data/oradata/ORCL/control03.ctl differ

[oracle@mytest ORCL]$ diff /u01/app/oracle/oradata/ORCL/control02.ctl /data/oradata/ORCL/control03.ctl
Binary files /u01/app/oracle/oradata/ORCL/control02.ctl and /data/oradata/ORCL/control03.ctl differ

Confirmed yes, the control03.ctl is the bad one.
Shutdown the instance.
Replace the bad control03.ctl with the good copy from either control01.ctl or control02.ctl, and then start the instance.

It should be all good.

Interested in working with Fahd? Schedule a tech call.

About the Author

I am in love with Oracle blogging since 2007. The blogging coupled with extensive participation in Oracle forums, plus Oracle related speaking engagements, various Oracle certifications, teaching, and working in the trenches with Oracle technologies enabled me to get Oracle ACE award. I was the first ever Pakistani to get that award. From Oracle Open World SF to Foresight 20:20 Perth, I have been expressing my love for Exadata. These days for the last some years, I am loving the data at Pythian, and proudly writing their log buffer carnivals.

1 Comment. Leave new

Bernard Polarski
January 12, 2011 8:35 am

interresting reading. Thanks for sharing.


Leave a Reply

Your email address will not be published. Required fields are marked *