前言

        这个报错没有从ORA600那个tool中查到。

回顾

环境

 环境是windows 11203 rac环境,非归档数据库

有部分数据文件建到了本地文件系统。目标是将部分数据文件通过switch to copy的形式移动到diskgroup里

流程

srvctl关闭双节点,

启动单节点到mount

想做backup as copy失败,提示必须启动归档

该单节点开启了数据库归档,然后没有open数据库

Mount状态下做backup as copy 与 switch copy均正常

再做alter database open时,报错Ora600 3948

使用rman recover database,也报Ora600 3949

重启实例报错依旧

使用recover database using backup controlfile后

提示开库可能需要resetlogs或noresetlogs

Rman recover database注册了redolog,恢复数据库,有一定回复

Alter database open报需要resetlog或noresetlog

使用noresetlog提示需要使用resetlog

使用resetlog最终打开

最后确认重启多遍均无问题

复盘

我认为是使用copy的数据文件后,必须要对数据文件做一下介质恢复recover。但是当时没有开归档后open数据库。导致介质恢复的日志实际是redo的部分(实例恢复)。假设数据文件的recover必须是介质恢复,当使用using backup controfile后,认为redo为归档,实行了介质恢复。Copy数据文件介质恢复后,方可使用。

对于必须resetlog,分析是使用using backup controfile的副作用。

整个过程实际没有数据丢失。

11-21 00:02