今天上午,单位的一个系统数据库出现问题,启动报错ora-00214.
IBM pc server / windows 2003 / oracle 10.2.0.3
在网上查找到关于ora-00214 的错误
cause: An ORA-00214 is issued whenever Oracle detects an inconsistency between two
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 "init.ora&
quot; file for this instance (or config.ora in an ifile configuration).
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).
fix:
The solution consists in opening the database with a single good copy
of the control file and then shutting the database down and copying
that version of the control file onto the other mirrored copies.
That will cause the next startup to succeed. The steps to be followed
are:
1. If the database is still up, do a shutdown abort now.
2. Edit the init.ora file for this instance (or config.ora in an ifile
configuration).
Find the CONTROL_FILES parameter and modify it to include
just ONE copy of the control file that you have reasons to
believe is up-to-date. For example, if you only have two
mirrored copies X and Y of the control file:
CONTROL_FILES = (X, Y)
and you know you have accidentally overwritten X with an old
copy, make
CONTROL_FILES = (Y)
If you are not sure about it, choose any one of the control file
copies and remove or comment out all the other copies from the
CONTROL_FILES parameter.
3. Start up the database in restricted mode.
STARTUP RESTRICT
If the database comes up fine, move on to Step 4.
If instead you get ORA-1122, ORA-1110, and ORA-1207, go back to
Step 2 and make the CONTROL_FILES parameter point to another one
of the mirrored copies. If you have already tried each and
every one of the mirrored copies unsuccessfully, you must create
a new control file for the database. See the Solution Reference
to PR entry 1012929.6 ("How to Recreate the Control File".
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. Try issuing a RECOVER DATABASE command and applying the
logs you are prompted for. You may have to resort to the online
logs to complete media recovery. For further details, see the
Solution Reference to PR entry 1012943.6 on ORA-1113. Once the
datafile is recovered, issue an ALTER DATABASE OPEN.
4. Shut the database down (normal or immediate).
5. Make all copies of the control file consistent.
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 (or config.ora
in an ifile configuration).
6. Restore the CONTROL_FILES parameter to its original value.
Edit the init.ora file for this instance (or config.ora in an ifile
configuration) to make the CONTROL_FILES parameter include
all mirrored copies of the control file again.
7. Start up the database.
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 "init.ora&
quot; file for this instance (or config.ora in an ifile configuration).
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).
fix:
The solution consists in opening the database with a single good copy
of the control file and then shutting the database down and copying
that version of the control file onto the other mirrored copies.
That will cause the next startup to succeed. The steps to be followed
are:
1. If the database is still up, do a shutdown abort now.
2. Edit the init.ora file for this instance (or config.ora in an ifile
configuration).
Find the CONTROL_FILES parameter and modify it to include
just ONE copy of the control file that you have reasons to
believe is up-to-date. For example, if you only have two
mirrored copies X and Y of the control file:
CONTROL_FILES = (X, Y)
and you know you have accidentally overwritten X with an old
copy, make
CONTROL_FILES = (Y)
If you are not sure about it, choose any one of the control file
copies and remove or comment out all the other copies from the
CONTROL_FILES parameter.
3. Start up the database in restricted mode.
STARTUP RESTRICT
If the database comes up fine, move on to Step 4.
If instead you get ORA-1122, ORA-1110, and ORA-1207, go back to
Step 2 and make the CONTROL_FILES parameter point to another one
of the mirrored copies. If you have already tried each and
every one of the mirrored copies unsuccessfully, you must create
a new control file for the database. See the Solution Reference
to PR entry 1012929.6 ("How to Recreate the Control File".
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. Try issuing a RECOVER DATABASE command and applying the
logs you are prompted for. You may have to resort to the online
logs to complete media recovery. For further details, see the
Solution Reference to PR entry 1012943.6 on ORA-1113. Once the
datafile is recovered, issue an ALTER DATABASE OPEN.
4. Shut the database down (normal or immediate).
5. Make all copies of the control file consistent.
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 (or config.ora
in an ifile configuration).
6. Restore the CONTROL_FILES parameter to its original value.
Edit the init.ora file for this instance (or config.ora in an ifile
configuration) to make the CONTROL_FILES parameter include
all mirrored copies of the control file again.
7. Start up the database.
简而言之,出现ora-00214的错误就是controlfile 的镜像出现了不一致造成的。
我查看三个controlfile 的修改时间都是完全一样,于是按照第二步修改了启动pfile 的controlfile 参数,只保留一个controlfile 的路径;
重新启动,没想到却报了ORA-00600: internal error code, arguments: [kccpb_sanity_check_2],[],[],[] 的错误
由此可以断定,是因为控制文件损坏造成的。
解决方法.....
重建控制文件
startup nomount;
create controlfile reuse databse '' DB-NAME'' noresetlogs archivelog
。。。。。
recover database ;
alter databse open;
解决了该问题。