我近日遇到一例因控制文件损坏导致ORACLE数据库不能启动的例子,完成数据库修复后我把恢复过程总结如下:

     客户的计算机ORACLE应用程序不能启动,提示一个ORACLE错误,打开系统查看Oracle的日志文件wnybALRT.log文件中有 ora-00204的错误,初步判断是由于控制文件损坏引起的ORACLE启动故障。作为恢复数据,我首先对ORACLE进行了全库冷备份,以防止修复数据库时造成新的破坏,在备份文件过程中我使用SVRMGRL工具先连接到ORACLE实例然后关闭ORACLE数据库,等待关闭完成后拷贝整个ORADATA目录到另一个磁盘目录,在拷贝过程中系统提示文件control03.ctl的循环冗余效验出错(如下图),这更加验证了我的判断。

 

Oracle控制文件恢复_第1张图片

 

Oracle的控制文件是一个非常小的(在兆字节范围内的)二进制文件,而它所含有数据库结构的信息。系统总共有三个控制文件分别是control01.ctlcontrol02.ctlcontrol03.ctl,这三个文件的内容完全相同、互为备份,所以我删除坏文件control03.ctl,然后拷贝control02.ctlcontrol03.ctl文件,再进入SVRMGRL模式使用startup命令启动数据库,从而解决了因控制文件损坏引起的ORACLE不能启动故障。

注:oracle 关闭、启动命令

SVRMGRL>connect internal/oracle

SVRMGRL>shutdown immediate

SVRMGRL>startup