Oracle 11G R2 RAC在Red Hat 7.4上的NTP服务配置问题

作者简介:王伟,从2014年开始从事oracle运维工作,服务于电信,政府,医院等单位,擅长数据库安装,数据迁移,故障处理,ogg配置等

 

概述

近期在一个客户现场搭建了一套运行在Red Hat 7.4上的Oracle 11G R2 RAC(4节点),业务在应用测试阶段出现了1次2节点被驱逐的问题,通过一系列的检查和分析,最终确认是NTP服务配置不正确导致的节点驱逐问题。

问题描述

平台环境

操作系统:Red Hat 7.4

数据库版本:Oracle 11.2.0.4.190416 RAC (4节点)

报错信息

问题说明

从上面的报错可以看出是私有网络异常导致的节点驱逐,这也是一个很常见的节点驱逐报错。

  • 从主机层面/var/log/message上查看没有错误的硬件信息输出。
  • 从OSW上的oswprvtnet中可以看到2节点和4节点在问题时间段有很大的延迟出现
  • 在1和3节点手动ping 2和4节点的priv IP,都没有问题,time都在1ms以下,属于正常的现象。
  • 找网络工程师查看私有网络是否有延迟问题,经过排除没有任何问题。
  • 由于4台数据库服务器采用的时间同步方式是ntp服务,检查ntp服务状态都是actived的,没有问题,但是使用date命令检查主机时间时,却发现2节点和4节点都比正确的时间慢了将近20分钟,这就有问题了。

问题分析

检查NTP服务状态是否正常

使用systemctl 检查ntp服务状态是active (running)

使用cluvfy命令检查NTP服务

可以看出NTP服务检查失败,集群启动默认的CTSS进程进行时间同步校验。

分析NTP问题

这个问题就奇怪了,明明NTP服务是actived的状态,而且NTP 配置文件 “/etc/ntp.conf” 在所有节点上可用,检查ntp配置文件/etc/sysconfig/ntpd,也已经从默认值OPTIONS=”-g”修改成OPTIONS=”-x -g”,但是在使用命令$ cluvfy comp clocksync -n all –verbose检查时为什么会失败呢?

通过MOS文档《Linux:CVU NTP Prerequisite check fails with PRVF-7590, PRVG-1024 and PRVF-5415 (Doc ID 2126223.1)》分析可以看出:If /var/run/ntpd.pid does not exist on the server, the CVU command fails. This is due to unpublished bug 19427746 which has been fixed in Oracle 12.2.(意思是:如果服务器上不存在/var/run/ntpd.pid,则CVU命令失败。这是由于未发布的错误BUG 19427746,该错误已在Oracle 12.2中修复。)

处理建议

启用CTSS

  •  Configure CTSSD to start master mode so that ntp is no longer used.

  • 或者Configure NTPD service to start with a pidfile so that CVU properly detects NTP service to be running. To do so, edit /etc/sysconfig/ntpd and modify the below line

说明:我们采用第2种方式进行修改,把/etc/sysconfig/ntpd从默认值OPTIONS=”-g”修改成OPTIONS=”-x -p /var/run/ntpd.pid”。

重启NTP服务器使之生效

使用命令$ cluvfy comp clocksync -n all –verbose检查,NTP检查校验成功。

总结

  • 在Red Hat 6上配置NTP时,配置文件/etc/sysconfig/ntpd的默认值就是:OPTIONS=”-u ntp:ntp -p /var/run/ntpd.pid -g”,我们只需要再加上一个”-X”就行,所以不会出现配置了NTP而没有进行时间同步的问题。
  • 到了Red Hat 7时,配置文件/etc/sysconfig/ntpd的默认值变成了OPTIONS=”-g”,我们就习惯性的添加一个”-x”,以为这样就没有问题了,其实不然,反而因为没有使用pidfile文件配置NTP来启动,触发了未发布的bug 19427746,导致NTP假同步

结束语

此次节点驱逐问题,主要是RedHat7上的NTP配置文件/etc/sysconfig/ntpd默认值变了,修改时未添加pidfile文件,启动NTP服务后触发未发布的bug 19427746(此BUG在12.2中修复完成),造成一种NTP服务已启动但是时间未同步的假象,处理方式是按照Redhat6上的配置信息进行配置。

题外话,其实从Red Hat 7开始,默认使用chrony进行时间同步,但是因为现在几乎100%的生产环境都使用了NTP服务器,成熟且稳定,故操作系统就算升级到Redhat7,依然还是用ntp服务进行时间同步。

切记,chrony服务和NTP服务不可同时运行。一个启动,另外一个就需要disable。

未经允许不得转载:Oracle一体机用户组 » Oracle 11G R2 RAC在Red Hat 7.4上的NTP服务配置问题

相关推荐