对联机日志的损坏要根据日志状态进行分析,联机日志一般会有Current、Active和Inactive三种状态。Inactive状态不会造成数据丢失。而Active和Current状态的日志一般会造成数据的丢失。根据v$log.status判断受损日志的状态。
a.如果是Inactive状态的日志损坏,把该组日志drop就可以。因为每个thread至少要有两组日志,所以在删除前要先添加一组。
b.如果是ACTIVE/CURRENT状态,则要进行一下操作:
1.关闭所有实例
2.在受损实例上,启动到mount状态;
3.用recover database until cancel模拟一次不完全恢复
4.执行alter database open resetlogs命令
5.实例启动成功后,启动其他实例
6.对数据库进行一次全备
整理自《大话RAC》张晓明著 P306-P312