一、问题描述及配置
主备集群搭建成功后,主备库启动脚本中START_MODE=mount,
备库的lsn号大于等于备库,N_OPN打开次数主库大于备库。
假如搭建主备集群后,备库首先OPEN一下后引发的问题如下图:
启动脚本中START_MODE=open
3、启动集群后发现,如下图:
此时会发现主备双库都处于mount状态,正常应该是主库open,备库mount。此时皆为mount,Flsn号备库大于主库。N_OPEN次数备库大于主库。Monitor查询N_OPEN次数来源于v$database视图,如下:
此时无论是手动SWITCHOVER转移还是其他手段都无法识别整个集群,如果此时执行SWITCHOVER会产生组分裂,如下图:
通过日志分析发现报错如下:
Mail通讯异常,-6007,其实正常应该是主库发送消息给备库,但是次数集群误认为备库为主库,通过备库发送给主库消息,所以报错-6007失败,通讯异常(这边容易误导网络可能端口不通)。
二、解决方案:
修改启动脚本START_MODE=MOUNT,重新对主备双库进行备份还原,按照正常启停顺序进行重启。
此时重启完之后你会发现除了FLSN、n_OPEN一致以外,status集群状态都是mount,集群还是不正确,因为上次一操作在主库会生成DMWATCHER.CTL守护控制文件,控制文件会记录最早一次集群的状态信息。如下图:
此时需要删除dmwatcher文件或者改为其他名字。在重启集群即可解决此问题。
三、主备启停顺序如下:
启动是主备主备
主数据->备数据->主守护->备守护
关闭是备主主备
备守护->主守护->主数据->备数据