ITPub博客

首页 > 数据库 > Oracle > Windows RAC 1节点实例重启案例分析

Windows RAC 1节点实例重启案例分析

原创 Oracle 作者:龙山游龙 时间:2026-09-03 16:06:42 0 删除 编辑

1、故障描述

某日7点32,某核心数据库1节点发生重启,重启完成后pdb未自动启动到open,导致部分客户端会话直连报错,后经由用户手动启动pdb到open后故障恢复。以下内容为本次故障排查原因之明细。

2、根因分析

(1)、检查服务器重启情况

可以确定服务器在当日并没有重启。

(2)、检查集群重启情况

由上图可见1节点监听运行时间为248天,可知集群软件未发生重启,由此可排除脑裂原因,即私网心跳没有问题。

(3)、检查数据库实例重启情况

发现1节点当日发生过重启,由此可着重排查1节点的数据库日志。

(4)、排查数据库日志

可见在7点32时发生IPC通讯问题,紧接着35分实例重启。罪魁祸首是LMS相关进程,该进程主要负责缓存块的跨节点传输,属于rac的重要系统进程。“Receiver is waiting for a latch, dumping latch state for ospid 20808 [ORACLE.EXE (LMS1)] 20808”可见存在闩锁等待,需要进一步分析LMS进程的trc日志和历史等待事件。

(5)、分析 trace 日志

07:23‑07:24:msg pool 消息池 10 秒翻倍,未处理 mbuf 从 6k→20k→47k,消息大量堆积;Pending SendQ 队列积压。LMS 进程处理速度跟不上消息生成速度。

07:24‑07:32:消息池持续吃紧,LMS2 进程出现 kghalo SGA堆内存分配阻塞、大量latch free闩锁竞争抢消息池内存;LMS 后台进程自身处理能力进一步下降,消息堆积雪上加霜。

07:32:47:LMS1 进程私网 socket 报 10054 (WSAECONNRESET),通信连接强制关闭。LMS3 进程同样报 10054。集群消息收发彻底瘫痪。

(6)、分析等待事件

等待事件中存在大量gc等待,与alert日志反映情况一致。

(7)、检查数据库版本及补丁情况

由从此可知当前数据库版本为12.1.0.1.0,且未应用任何补丁,12.1.0.1 是 12cR1 的初始版本,稳定性差,大量已知 bug,Oracle 官方不建议生产使用。

(8)、mos 资料匹配

由于12.1.0.1版本数据库非稳定版本,官方在16年停止其维护,官网相关较少,无法找到同版本故障报告,目前仅找到12.2版本相似故障的报告如图

3、解决方案

该故障发生时,数据库单节点会自动重启,目前重启后PDB无法自动拉起到open,会影响部分直连业务。12.1.0.1版本不支持pdb save state,需要手动创建触发器来实现PDB自动拉起,命令如下:

create trigger open_pdb after startup on database
begin
execute immediate 'alter pluggable database PDBNAME open';
end;
/

鉴于该版本数据库软件的不稳定情况,从源头解决该问题需要将数据库版本原地升级19.31或迁移至linux系统的19.31版本。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30310891/viewspace-3181485/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论
传统商业、开源和国产据库领域十从业经验,TB级高并发数据库的管理经验。对于数据库内部原理、体系结构,数据页/块结构原理有着深刻认识;对于数据库新特性、分布式高可用架构和性能调优有着丰富的的实战经验。擅长故障诊断以及数据库异常打开及数据灾难挽救。

注册时间:2015-06-28

  • 博文量
    178
  • 访问量
    334678