ORA-00214
Tried to startup or mount a database, we got ORA-00214.
SQL> startup
ORACLE instance started.
...
ORA-00214: control file
'/u01/app/oracle/fast_recovery_area/ORCLCDB/control02.ctl' version 2286
inconsistent with file '/u01/app/oracle/oradata/ORCLCDB/control01.ctl' version
2248
Let's see its status.
SQL> select status from v$instance;
STATUS
------------
STARTED
What does STARTED means? We can tell what state of database currently is by some means. It's at NOMOUNT now.
We tried to mount the database.
SQL> alter database mount;
alter database mount
*
ERROR at line 1:
ORA-00214: control file
'/u01/app/oracle/fast_recovery_area/ORCLCDB/control02.ctl' version 2286
inconsistent with file '/u01/app/oracle/oradata/ORCLCDB/control01.ctl' version
2248
OK, we saw the same ORA-00214 error message again.
In fact, ORA-00214 means that the progresses among multiplexed control files are different, you should make them consistent before mounting the database.
The phenomenon might be resulted from some incorrect operations by DBA. For example, accidentally restoring an older copy of control file to the destination.
Solutions
In this case, we should copy the newest control file and overwrite the old ones.
1. Backup All Control Files
We copied both files to another place in case that we mistake one for another, or any other irreversible incidents.
[oracle@test ~]$ cp -p /u01/app/oracle/oradata/ORCLCDB/control01.ctl /home/oracle/
[oracle@test ~]$ cp -p /u01/app/oracle/fast_recovery_area/ORCLCDB/control02.ctl /home/oracle/
2. Copy Newest Control File
In this case, we copied the newest control file with version 2286 and overwrite the old one with version 2248.
[oracle@test ~]$ cp -p /u01/app/oracle/fast_recovery_area/ORCLCDB/control02.ctl /u01/app/oracle/oradata/ORCLCDB/control01.ctl
If you have a more reliable backup, you may also consider to restore control file to the destination we specified in SPFILE.
3. Open Database
Since we have made control files consistent, we can open the database now. Here we take two steps to open the database from NOMOUNT.
SQL> alter database mount;
Database altered.
SQL> alter database open;
Database altered.
SQL> select status from v$instance;
STATUS
------------
OPEN
The database is back.