模拟断电oracle数据不一致,服务器异常断电,导致oracle控制文件版本不一致,报错ora-00214解决记录...

本文介绍了一次Oracle数据库因控制文件不一致导致无法启动的问题及解决方案。通过使用不同启动模式及手动复制控制文件的方法,成功解决了数据库启动问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

控制文件介绍:

每一个oracle都至少会生成一个控制文件,一个数据库可以拥有多个控制文件,但是一个控制文件只能属于一个数据库。

控制文件内部除了存放数据库名及其创建日期,数据文件,日志文件等相关信息,在系统运行的过程中还会存放系统更改号,检查点信息及归档的当前状态等信息。

出于安全考虑,数据库会自动创建2到3个控制文件,每个控制文件记录相同的信息,这个可以确保在数据库运行时,某个控制文件损坏,oracle会自动使用另一个控制文件,当所有控制文件损坏时,数据库将无法工作。

注:通过 v$controlfile 可以查看oracle的控制文件信息。

select name from v$controlfile

本次问题发生情况:服务器异常断电,启动后,oracle无法连接,使用plsql连接报错ora12514监听出现问题,进一步检查后发现是控制文件不一致,导致数据库无法启动。

解决步骤:

cmd窗体运行以下语句

1.使用nolog模式,DBA登录

sqlplus /nolog

sqlplus / as sysdba

2.先关闭数据库

shutdown immediate

3.使用nomount模式登录

startup nomount

4.拷贝其中一个控制文件到另外一个地方,完成替换

host copy D:\app\Administrator\oradata\orcl\control01.ctl D:\app\Administrator\flash_recovery_area\orcl\control02.ctl

5.手动启动到mount模式

alter database mount;

6.手动启动到open模式

alter database open;

注:本次解决问题的关键在于搞清楚数据库不同的启动模式的区别。

直接使用startup命令启动数据库,数据库会自动按次序执行nomount,mount,open模式打开数据库,这样就会生成新的控制文件,

因为服务器异常断电后,原有的控制文件不一致,所以就会导致数据库启动不了

因此先以nomount模式启动:只会创建实例,不加载数据库,也不会打开任何数据文件然后使用host copy命令复制其中一个控制文件到另外一个控制文件的地方,

再启动到mount,open模式,问题解决。

2017年11月8日17:16:01

原文:http://www.cnblogs.com/-txf-/p/7805106.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值