Wednesday, April 2, 2008

ORA-00214: Controlfile Version Inconsistent on Startup or Shutdown

Problem Description:
ORA-00214: control file {name} version {num} inconsistent with file {name}.

Cause of The Problem:
Oracle detects an inconsistency between the mirrored copies of the control file.

All copies of the control file must have the same internal sequence number for oracle to start up the database or shut it down in normal or immediate mode.

If the database is running and the checkpoint in the file header could not be advanced the datafile will be taken offline.

Typical scenarios in which you may receive an ORA-00214 include:

1. You have restored the control file from backup, but forgot to copy it onto all of the mirrored copies of the control file as listed in the "CONTROL_FILES" parameter in the initialization parameter.

2. You have moved one or more copies of the control file to a different location while the database was up and running.

3. You accidentally overwrote one of the copies of the control file with an old copy.

4. The database or the system crashed while the mirrored copies of the control file were being updated, causing them to be out of sync.

5. You are restoring a database backup that was improperly taken with the database up and running ("fuzzy" backup).

Solution of the Problem:
To fix the error start your database with single copy of the control file and then shut the database down and then copy the version of good copy of control file onto the other mirror copies.


Step 01)
If database is still up do a shutdown abort.

Step 02)
If you use pfile then edit the CONTROL_FILES parameter from init.ora and modify it to include just one copy of control file.

If you use spfile then after issuing startup nomount use show control_files to see existing controlfiles inside spfile and then you can use ALTER SYSTEM SET CONTROL_FILES=file_name; in order to point just one copy of control file.

Step 03)
Start the database in restricted mode. startup restrict
If it is fine go to step 04.

If instead you get ORA-1122, ORA-1110, and ORA-1207, go back to step 2 and try with another control file.

If you have already tried each and every one of the mirrored copies unsuccessfully, you must create a new control file for the database.

If you get ORA-1113 and ORA-1110 pointing to one of the datafiles, it means the copy of the control file you picked is good, but the referenced datafile must be recovered before the database can be opened.Then RECOVER DATBASE, apply the log it prompt and ALTER DATABASE OPEN.

Step 04) Shut the database down.
SQL>shutown

Step 05)
Copy the good mirrored copy of the control file that you just used to bring the database up onto all other copies, as originally listed in the CONTROL_FILES parameter of your init.ora file.

Step 06) Edit the init.ora file's CONTROL_FILES parameter to include all mirror copy again.

Step 07) Start the database.

Related Documents:
What you will do if spfile lost Look at Solution of The problem Section
How to solve problem of inconsistent control file.
How to re-create Control file

8 comments:

Anonymous said...

It is useful. Thanks. Please make steps more clear. Like edit control file parameters from init.ora. How it can be done ??

Moiz said...

Hi,

We have the same issue.

Database starts with one of the control file copy. However, we have not started it in RESTRICT mode.

Then we made copies of the control file, try to start and again recieve ora-214.

Can you provide any guidline on what are we missing?

Moiz

Arju said...

@Anonymous just open the pfile of the database and then you will see the location of controlfile under control_files parameter.

Arju said...

@Moiz, copy the good control file and then paste it to all locations that is defined by the parameter control_files.

Anonymous said...

Hi Arju,

We have the same problem.
We followed your procedure and it's now possible to start the database in restrict mode.
Now I have a doubt. Those are my control_files:
+A/confdb/controlfile/current.260.680635713,
+C/confdb/controlfile/current.260.680635715,
+D/confdb/controlfile/current.260.680635715

How can I copy the first one over the others?

Arju said...

Yes, if your database is shut down or at least in nomount stage.

Arju said...

Your control files are in ASM file system. So you need to invoke "asmcmd" utility in order to copy between them.

Anonymous said...

how can i copy control files my control file location is F:\oracleDB\product\10.2.0\oradata\sununga\control01.ctl and F:\oracleDB\product\10.2.0\oradata\sununga\control02.ctl and F:\oracleDB\product\10.2.0\oradata\sununga\control03.ctl