一个mount -a引发的ora-600案例分析

来源:这里教程网 时间:2026-03-03 19:34:53 作者:

一、故障描述

某次,用户某套数据库在 2023 2 15 早上 9 46 分后应用报无法连接数据库,数据库 Alert 日志明显出现 ORA-00600 ORA- 27300 ORA- 27301 ORA-27302 等报错信息,详细日志如下:

同时,我们同步检查了该节点集群 ASM 实例和 CSS 服务,均出现异常,导致业务不可用,日志如下:

二、根因分析

经过紧急分析,通过告警日志错误关键字,我们在 MOS 匹配到类似场景: ORA-00600 [ksm_mga_pseg_cbk_attach:map_null] reported by database when issuing NFS mount causing /dev/shm/ to become unavailable on Redhat 7 servers (Doc ID 2703432.1) ,同样是在 19.6 数据库版本上命中该报错,如下:

而在该场景中,这个问题是由 mount -a 操作导致 fstab 刷新,引起操作系统重新装载内存段 /dev/shm 。新的装载会删除 Oracle 正在使用的内存段,并将其替换为新的空内存段,从而会对正在运行业务的 Oracle 造成灾难性的影响。如下:

为了证实是否因为 mount -a 导致,我们与用户进行了深入交流,并在相关数据库服务器上排查故障时间段执行过的操作的审计记录。如下:

shell> pvcreate /dev/mapper/mpathq

shell> vgcreate vgarch /dev/mapper/mpathq

shell> lvcreate -l 76794 -n lvarch vgarch

shell> mkfs.xfs /dev/vgarch/lvarch

shell> mkdir /int_arch

shell> vim /etc/fstab

/dev/vgarch/lvarch    /int_arch    xfs     defaults    0 0

shell> mount a

至此,我们获取到了关键的 “证据”,故障时间段之前,确实有人创建了逻辑卷并计划用于日志归档,由于执行了 mount -a ,也就引发了此次故障。其实回过头来讲,将挂载信息写入 fstab 文件并没有问题,关键在于用户可以选择手动挂载归档文件系统,这样可以降低出故障的风险,当然这是后话了。

三、解决方案

当然,如果还是想正常执行 mount -a ,以下也提供几种方法进行规避。

1 、进行 mount -a 操作前关闭数据库实例

2 、注销 fstab /dev/shm 的挂载操作

3 、将 fstab 中的 /deb/shm 移出。

相关推荐