前言
这个报错没有从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的副作用。
整个过程实际没有数据丢失。