我们的生产系统使用Oracle集群软件实现了OGG的高可用。当集群中的一个实例宕机,OGG会abend后自动重新启动。严格来说这个高可用设计也是相对的,因为它避免不了节点宕机时OGG的进程意外中断。但是在利用vip和OGG相互关联后可以做到OGG意外中断后30秒内自动重启并且继续工作。
在高可用配置中有一个需要注意的参数:TRANLOGOPTIONS altarchivelogdest。该参数使用不当的后果是:实例宕机导致OGG一直abend,直到实例恢复后OGG才能恢复。设想一下,如果该实例所在的主机升级打补丁,或者更换硬件等耗时操作,OGG就要一直等下去,完全失去了高可用的意义。
下面来看一个案例:
1. 双节点RAC的thread 2正常shutdown,导致OGG异常中断。由于找不到thread 2的默认归档路径无法启动。