Troubleshooting Slow Standby Failover

一、背景

备库为 3 节点 的11.2.0.4的RAC 。本次操作在 12 节点取消 MRP,并执行 finish force ,activate触发 failover。

Activate会触发备库所有 thread 均需关闭。

二、各节点 alert log

11 节点:

12 节点:

13 节点:

三、分析

切换期间,11、12 节点均在等待 13 节点的 thread 关闭,而 13 节点的 thread 关闭过程耗时接近 5 分钟;13 节点 arch 进程持续出现的等待事件 Wait on stby instance close 也印证了这一点。

ASH 分析显示,在 20:43—20:50 期间,活跃会话基本仅为 13 节点的 CKPT,整体等待链大致如下:

四、CKPT 的 TOP 信息

只有一个进程在满负荷运作,由 ps 输出可见,该进程正是 CKPT。问题时间段一直持续着CPU 100%

五、结论

初步判断 CKPT 很可能处于 CPU spin 状态(大概率是 bug),但由于所有 trace 中均未抓取到 CKPT 的 call stack,无法确认其在此期间究竟在做什么,也无法通过堆栈去搜查具体问题。

六、建议下次复现问题时

或者

七、规避方案(如果不需要分析 bug)

建议在 cancel MRP 之前,先将非 MRP 所在实例关闭(保留 MRP 所在实例继续 apply,其余两个实例以 shutdown abort 方式关闭),而非仅依赖 thread close;待 failover 完成后再重新启动这两个实例。

此条目发表在Oracle, Oracle troubleshooting分类目录。将固定链接加入收藏夹。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注