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.

[[email protected] ORCL]$ diff /u01/app/oracle/oradata/ORCL/control01.ctl  /u01/app/oracle/oradata/ORCL/control02.ctl

[[email protected] 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

[[email protected] 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.



Want to talk with an expert? Schedule a call with our team to get the conversation started.

About the Author

I have been in love with Oracle blogging since 2007. This 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 has enabled me to receive the 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. For the last few years, I am loving the data at Pythian, and proudly writing their log buffer carnivals.

2 Comments. Leave new

Bernard Polarski
January 12, 2011 8:35 am

interresting reading. Thanks for sharing.


I saw similar error in my DB’s alert log, But when I did sql statement to query control files, I only got control01.ctl, and control02.ctl. And yes, they are different when I differed. What should I do? Release one to other and restart the DB?



Leave a Reply

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