昨天,一兄弟电话求助,有一套医院HIS数据库无法启动,RAC环境,无备份,尝试过重建控制文件操作,但失败。 远程连接后,情况如下: 1.两节点RAC,Oracle11.2.0.1版本,Linux操作系统 2.recover database时提示需使用backup controlfile 3.rman list backupset无输出 由于没有记录具体的操作,这里主要碰到的异常做一下描述 1.重启数据库,在日志中发现另一节点没有被关闭,首先关闭另一节点 2.由于控制文件已被错误重建,并且,沟通后认为丢失一部分数据是可以接受的,因此,决定重新创建控制文件,在创建控制文件时,存在一个知识点: RAC环境重建控制文件报错: ORA-12720: operation requires database is in EXCLUSIVE mode 这里需要修改参数文件: alter system set cluster_database=false scope=spfile; 3.重建控制文件后进行恢复操作 增加隐含参数: alter system set "_allow_resetlogs_corruption"=true scope=spfile; recover database using backup controlfile until cancel; alter database open resetlogs; 报错 ORA-00600: internal error code, arguments: [2662] 这个错误以前碰到过,需要使用event调整SCN 首先,再增加一个隐含参数: alter system set "_allow_error_simulation"=true scope=spfile; 重启重建控制文件并恢复后 alter session set events '10015 trace name ADJUST_SCN level 10'; alter database open; 4.经过上一步操作,SCN已经OK了,但仍然报错 ORA-00600: internal error code, arguments: [4194] 4000开头的错误,改UNDO为手动管理模式,修改初始化参数 undo_management='MANUAL' 完成启动。 总结: 1.这个例子,其实开始控制文件没有丢失,应该先尝试进行恢复,不知道之前是不是遇到了错误,导致选择了重建控制文件的方法。不过,这里应该指出的是,好不要一上来重建控制文件。 2.备份!备份!备份! 感觉恢复数据库,像伤寒论里面说的,观其脉证,知犯何逆,随证治之。