实验环境
搭建平台:VMware Workstation
OS:RHEL 6.10
Grid&DB:Oracle 11.2.0.4
问题描述
实例被踢出时,查看alert日志发现了许多的“IPC send timeout” (IPC 发送超时)错误。原因如下:
在RAC环境中,数据库的进程(比如 lmon、lmd 和 lms )会不断地和其他实例的进程通信。lmd0 进程负责管理 enqueue,而 lms 进程负责管理数据块资源并传输数据块以支持 Cache Fusion。如果这些进程中的一个或多个受阻、死循环或异常繁忙,都可能导致“IPC send timeout”错误。
lmon、lms 和 lmd 进程报告“IPC send timeout”错误的另一个原因是网络问题或服务器资源(CPU 和内存)问题。这些进程可能无法获得 CPU 运行调度或这些进程发送的网络数据包丢失。涉及 lmon、lmd 和 lms 进程的通信问题导致实例被踢出。
因此此报错通常伴随数据库性能问题!
alert日志的报错信息如下:
......
IPC Send timeout detected.Sender: ospid 1587
Receiver: inst 6 binc 738274875 ospid 29098
......
如果某实例被踢出,除了alert日志中的“IPC Send timeout detected”的报错还可能涉及到如 ora-29740 和脑裂“Waiting for clusterware split-brain resolution”。
解决办法
这里提供几种方案来排查(解决方法和ora-29740的解决方案一致,详见 http://blog.itpub.net/69992972/viewspace-2789808/):
1) 检查网络,比如 UDP 错误或 IP 数据包丢失或故障错误
2) 检查网络配置,确保所有节点上的所有网络配置均设置正确。例如,所有节点上 MTU 的大小必须相同,并且如果使用巨帧,交换机也能够支持大小为 9000 的 MTU
3) 检查服务器是否存在 CPU 负载问题或可用内存不足
4) 检查数据库在实例被踢出之前是否正处于挂起状态或存在严重的性能问题
5) 检查 CHM (Cluster Health Monitor) 输出,查看服务器是否存在 CPU 或内存负载问题、网络问题或者 lmd 或 lms 进程出现死循环
6) 使用 OSWatcher 来进行监控
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69992972/viewspace-2789814/ ,如需转载,请注明出处,否则将追究法律责任。