Oracle RAC集群时间不一致怎么修?配置NTP服务同步时间
Oracle RAC集群时间不一致怎么修?配置NTP服务同步时间

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈
先说一个核心结论:处理Oracle RAC集群的时间同步问题,最忌讳的就是“头痛医头,脚痛医脚”。手动执行ntpdate强行对齐,或者放任部分节点开着ntpd、部分节点关着——这些做法,恰恰是时间差越滚越大的根源。问题的本质在于,只要有一个节点的ntpd在运行且未按Oracle的规则配置,整个集群的ctssd就会自动退居observer mode,彻底丧失自适应同步能力。
检查 ctssd 是不是已经掉进 observer mode
动手调整任何配置之前,第一步永远是先诊断。你得先确认集群的时间同步机制是否已经“罢工”了。
- 执行命令
crsctl check ctss。如果返回结果是CTSS is in observer mode,那就意味着CTSS已经放弃了控制权,正处在“围观”状态——它以为NTP在干活,但实际情况往往是NTP自身也并不可靠。 - 同时,别忘了在所有节点上运行
date命令对比一下时间。差值超过±500毫秒就已经属于高风险;一旦超过1秒,ORA-00600 [kgxgncv1]这类内部错误,甚至实例拒绝启动的情况都可能发生。 - 最后,看一眼日志确认一下:
tail -20 $GRID_HOME/log/`hostname`/ctssd/ctssd.log。如果看到Switching to observer mode或者Failed to communicate with reference node这类信息,诊断就基本坐实了。
禁用 NTP 前必须清干净残留
很多修复尝试之所以失败,问题就出在“清理不彻底”。Oracle的判断逻辑非常死板:只要它发现/etc/ntp.conf这个文件存在,就认为NTP服务应该被启用,于是CTSS就必须退居二线。所以,清理工作必须做到位。
- 停服务:
systemctl stop ntpd(或者service ntpd stop)。 - 关自启:
systemctl disable ntpd,防止重启后服务自动拉起。 - 删配置:
rm -f /etc/ntp.conf。这里要特别注意,必须是删除(rm),而不是移动或重命名(mv)。因为即便文件被移走了,只要还在原路径,某些检查机制仍可能认为它存在。 - 删PID文件:
rm -f /var/run/ntpd.pid,清理掉可能的进程锁文件。 - 确认无残留:最后用
ps -ef | grep ntp检查一下,确保没有ntpd主进程还在运行(只剩下grep自身的进程可以忽略)。
重启 ctssd 并验证 active 状态
清理完NTP的痕迹之后,CTSS并不会自动切换回active模式,需要手动触发一下。
- 执行重启:
crsctl stop res ora.ctssd -init && crsctl start res ora.ctssd -init。 - 等待2到3分钟,让服务稳定下来,然后再次运行
crsctl check ctss。正常情况下,这时应该返回CTSS is in Active mode,并且会显示一个毫秒级的offset(例如Offset (in msec): 3)。 - 持续观察:建议用
watch -n 10 'crsctl check ctss'命令观察10分钟,确认offset的波动稳定在±10毫秒以内,没有出现大幅跳变。 - 如果状态依然显示为observer,那就要警惕了。这通常意味着某个节点漏删了
/etc/ntp.conf,或者环境中使用了chronyd(同样需要停用并删除/etc/chrony.conf)。
非要共存 NTP 和 CTSS?那得按 Oracle 规则硬配
有些生产环境,比如金融行业,出于合规要求必须对接统一的中心化NTP服务器。这种情况下,可以让CTSS保持在observer模式,但前提是NTP的配置必须严格遵守Oracle的规则,否则时间漂移照样会发生。
- 在
/etc/ntp.conf配置文件中,必须包含这两行:tinker stepout 0和disable kernel。 - 在
/etc/sysconfig/ntpd文件中,OPTIONS参数里必须带上-x(例如OPTIONS="-x -u ntp:ntp"),这个选项的作用是禁止时间的大步跳变。 - 绝对禁止使用
ntpdate或chronyc makestep这类命令进行手动强制校时。它们会造成瞬间超过128秒的时间跳变,会直接导致节点被CTSS“踢出群聊”。 - 验证NTP连通性与状态:运行
ntpq -p,在输出中,目标server的行首应该有*(表示主用)或+(表示备用),并且offset值应长期稳定在±5毫秒内。如果频繁出现disp(离散度)大于100,或者reach值为0,那很可能意味着UDP 123端口被防火墙拦截了。
说到底,这类问题的修复,难点从来不在具体的操作命令上,而在于所有节点配置的绝对一致性。少一个-x参数,多一行未被注释的server配置,或者某个节点忘记删除ntp.conf文件,整个集群的时间信任链就会断裂。修复完成后,千万别只看一次检查结果就掉以轻心,至少持续监控crsctl check ctss的输出半小时以上,确保状态真正稳定下来。
相关攻略
Oracle RAC单块损坏修复:首选RMAN BLOCKRECOVER的精准手术 遇到Oracle RAC环境报出ORA-01578这类数据块损坏错误,先别急着动“大手术”——也就是立刻还原整个数据文件。更精准高效的做法,是优先使用RMAN的BLOCKRECOVER命令。它就像一场针对性的微创手术
Oracle AWR报告深度解读:避开四个经典分析误区 AWR报告生成失败主因是快照不存在或权限不足;CPU time占比高未必异常,需结合DB Time Elapsed比值及绝对值分析;物理读高不等于缺索引,应查Buffer Hit Ratio和执行计划变化;SQL未共享常因大小写、绑定变量类型等
Oracle视图如何提高跨库查询效率:利用DBLINK与视图封装 说到跨库查询,很多朋友的第一反应就是创建DBLINK。但实际操作后,往往会发现一个令人困惑的现象:明明已经建好了链路,查询速度却依然慢得让人难以接受。这背后的症结,通常不在于DBLINK本身,而在于查询的执行方式没有优化到位。 DBL
PL SQL批量查数据不能只用普通LOOP,因逐行FETCH引发高频上下文切换和引擎通信,性能极差;应使用BULK COLLECT配合显式集合类型一次性加载数据,再用FORALL批量DML提升效率。 PL SQL里批量查数据,为什么不能只用普通LOOP? 原因其实很直接:逐行 fetch 的操作,本
Druid连接池为什么比Hikari更适配Oracle监控需求 说到监控Oracle数据库的连接池,很多开发者可能会发现,事情没那么简单。Oracle的官方JDBC驱动在暴露连接状态、会话级指标(比如SQL执行耗时、等待事件)方面,远不如MySQL那样“友好”。这时候,连接池的选择就变得至关重要了。
热门专题
热门推荐
一、财务系统更换:一场不容有失的“心脏手术” 如果把企业比作一个生命体,那么财务系统就是它的“心脏”。这颗“心脏”一旦老化,更换就成了必须面对的课题。但这绝非一次简单的软件升级,而是一场精密、复杂、牵一发而动全身的“外科手术”。数据显示,超过70%的ERP(企业资源计划)项目实施未能完全达到预期,问
在企业数字化转型的浪潮中,模拟人工点击软件:从效率工具到智能伙伴 企业数字化转型的路上,绕不开一个话题:如何把那些重复、枯燥的电脑操作交给机器?模拟人工点击软件,正是因此而成为了提升效率、降低成本的得力助手。那么,市面上的这类软件到底有哪些?答案其实很清晰。它们大致可以归为三类:基础按键脚本、传统R
一、核心结论:AI智能体是通往AGI的必经之路 时间来到2026年,AI智能体这个词儿,早就跳出了PPT和实验室的范畴。它不再是飘在天上的技术概念,而是实实在在地成了驱动全球数字化转型的引擎。和那些只能一问一答的传统对话式AI不同,如今的AI智能体(Agent)本事可大多了:它们能自己规划任务步骤、
一、核心结论:AI智能体交互的“桥梁”是行动层 在AI智能体的标准架构里,它与外部系统打交道,关键靠的是“行动层”。可以这么理解:感知层是Agent的五官,决策层是它的大脑,而行动层,就是那双真正去执行和操作的手。这一层专门负责把大脑产出的抽象指令,“翻译”成外部系统能懂的语言,无论是调用一个API
一、核心结论:AI人设是智能体的“灵魂” 在构建AI应用时,一个核心问题摆在我们面前:如何写好AI智能体的人设描述?这个问题的答案,直接决定了智能体输出的专业度与用户端的信任感。业界实践表明,一个优秀的人设描述,离不开一个叫做RBGT的模型框架,它涵盖了角色、背景、目标和语气四个黄金维度。有研究数据





