Email: service@parnassusdata.com 7 x 24 online support!
Oracle ORA-00214: On Database Startup Or Shutdown ORA-00214: 控制文件 '''' 版本 与文件 '''' 版本 不一致
如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!
诗檀软件专业数据库修复团队
服务热线 : 13764045638 QQ号:47079569 邮箱:service@parnassusdata.com
ORA-00214: 控制文件 '''' 版本 与文件 '''' 版本 不一致
适用于:
Oracle Database – Enterprise Edition – 版本8.0.3.0 到 11.2.0.4 [Release 8.0.3 到 11.2]
本文信息适用于任何平台。
症状
启动mount 失败显示以下错误:
ORA-00214: control file <name> version <num> inconsistent with file <name>
在数据库在运行时显示以下错误:
ORA-01171: datafile %s going offline due to error advancing checkpoint
ora-01115: IO error reading block from file %s (block # %s)
ORA-01110 datafile %s: %d
原因
每当Oracle检测到控制文件两个镜像副本间的不一致性,发生ORA-00214。
控制文件的所有副本必须有相同内部序列号来启动数据库或在正常或immediate模式下关闭它。如果数据库在运行且文件头的checkpoint 无法被提前,则数据文件会被脱机。
可能收到ORA-00214的典型场景包括:
1. 你从备份中还原了控制文件,但忘记为该实例将其复制到”init.ora”文件中”CONTROL_FILES”参数中列出的控制文件的所有镜像副本(或在一个ifile配置中的config.ora)。
- 当数据库启动并运行时,你已将控制文件的一个或多个副本移动到另一个位置。
- 你意外使用一个旧的副本覆盖了控制文件的副本之一。
- 当控制文件的镜像副本被更新时,数据库或系统崩溃。导致它们不同步。
- 你在还原一个数据库备份,其在数据库启动并运行时被错误创建(”fuzzy” backup)。
解决方案
解决方法包含使用控制文件的单个好副本打开数据库,然后关闭数据库并将该版本的控制文件复制到其他镜像副本。
这会导致下一个启动成功。要遵循的步骤有:
1. 如果数据库仍启动,立即进行shutdown abort。
2. 为该实例编辑init.ora 文件(或一个ifile配置中的config.ora)。
找出CONTROL_FILES 参数并更改它仅包括你认为已更新的控制文件的一个副本。例如,如果你只有控制文件的两个镜像副本X 和Y :
CONTROL_FILES = (X, Y)
且你知道用旧的副本意外覆盖了X,进行
CONTROL_FILES = (Y)
如果你不确定,选择任一控制文件副本并删除或注释CONTROL_FILES参数的所有其他副本。
3. 在restricted 模式启动数据库。
STARTUP RESTRICT
如果数据库正常启动了,进入第4步。
如果你得到了ORA-1122,ORA-1110,和ORA-1207,回到第2步并使CONTROL_FILES参数指向镜像副本的另一个。如果你已经尝试了每个且每一个镜像副本不成功,你必须为数据库创建一个新的控制文件,参见 How to Recreate a Controlfile (Doc ID 735106.1)
如果你得到ORA-1113和ORA-1110 指向数据文件之一,这表示你选择的控制文件的副本没问题,但被引用的数据文件必须在数据库能被打开之前恢复。尝试发出RECOVER DATABASE 命令并应用系统提示的日志。你可能要采取联机日志来完成媒体恢复。详情参见Common Causes and Solutions on ORA-1113 Error Found in Backup & Recovery (Doc ID 183367.1)。一旦数据文件被恢复,发出ALTER DATABASE OPEN。
4. 关闭数据库(normal 或 immediate)。
5. 使控制文件的所有副本一致。
复制你刚用于使数据库up到其他副本的控制文件的好的镜像副本,如最初列在init.ora 文件的CONTROL_FILES 参数中(或一个ifile配置中的config.ora)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. 将CONTROL_FILES 参数还原到其原始值。
为该实例编辑init.ora文件(或一个ifile配置中的config.ora)使CONTROL_FILES 参数再次包括控制文件的所有镜像副本。
7. 启动数据库。
参考
NOTE:735106.1 – How to Recreate a Controlfile
NOTE:183367.1 – Common Causes and Solutions on ORA-1113 Error Found in Backup & Recovery