必须先执行crsctl check ctss确认ctss是否退为observer模式;若是,需彻底清理所有节点的ntp/chrony配置及服务(rm -f /etc/ntp.conf /etc/chrony.conf)、停用并禁启服务、删pid文件,再重启ctssd并观察10分钟确保offset稳定在±10ms内。

Oracle 安装(尤其是 RAC)阶段报“本地节点与远程节点时间不同步”,根本原因不是时间差本身,而是 ctssd 服务已退入 observer mode,失去集群内主动同步能力——此时 Oracle 安装程序检测到节点间时间差超出容忍阈值(11g/12c 默认 ±20 秒,19c 更严),直接中止安装流程。
crsctl check ctss 显示 observer mode 怎么办
这是必须最先确认的状态。别急着调时间,先在所有节点执行:
-
crsctl check ctss—— 若返回CTSS is in observer mode,说明 CTSS 已放弃控制权,正“看着”外部时间服务(但很可能没在干活) - 立刻用
date -u +%s.%N在各节点各跑 3 次,取平均后算最大差值:超过500ms就高风险;超1s安装必然失败 - 查日志:
tail -20 $GRID_HOME/log/`hostname`/ctssd/ctssd.log,重点搜Switching to observer mode或Failed to communicate with reference node
/etc/ntp.conf 或 /etc/chrony.conf 存在就等于 NTP 启用
Oracle 的判断逻辑极死板:只要任一节点的 /etc/ntp.conf 或 /etc/chrony.conf 文件存在(哪怕内容为空、或只是 mv 重命名),ctssd 就强制让权,进入 observer mode。这不是配置问题,是文件存在性判断。
- 停服务:
systemctl stop chronyd ntpd(两个都停) - 禁自启:
systemctl disable chronyd ntpd - 删配置:
rm -f /etc/ntp.conf /etc/chrony.conf(mv不行,必须rm) - 删 PID:
rm -f /var/run/chronyd.pid /var/run/ntpd.pid - 确认无残留:
ps -ef | grep -E "(chronyd|ntpd)",只应剩grep自身进程
清理后 ctssd 不会自动切回 active mode
清完 NTP 配置 ≠ CTSS 自动恢复。必须人工重启并观察收敛性:
- 执行:
crsctl stop res ora.ctssd -init && crsctl start res ora.ctssd -init - 等 2–3 分钟,再跑
crsctl check ctss:正常应返回CTSS is in Active mode和类似Offset (in msec): 7的数值 - 用
watch -n 10 'crsctl check ctss'持续观察 10 分钟,确保 offset 波动始终稳定在±10ms内,无跳变 - 若仍显示
observer,90% 是某节点漏删了/etc/chrony.conf(尤其 CentOS 7/8 默认用 chronyd)
真正容易被忽略的是:即使所有节点都删了配置、停了服务,只要有一个节点的 chronyd 进程残留、或 /etc/chrony.conf 被遗漏、或 ctssd 未显式重启,observer mode 就不会退出——安装程序看到的永远是“时间不可控”,而不是“时间差多少”。











