当前位置: 首页
数据库
Oracle RAC集群时间不一致怎么修?配置NTP服务同步时间

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

热心网友 时间:2026-04-28
转载

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 0disable kernel
  • /etc/sysconfig/ntpd文件中,OPTIONS参数里必须带上-x(例如OPTIONS="-x -u ntp:ntp"),这个选项的作用是禁止时间的大步跳变。
  • 绝对禁止使用ntpdatechronyc makestep这类命令进行手动强制校时。它们会造成瞬间超过128秒的时间跳变,会直接导致节点被CTSS“踢出群聊”。
  • 验证NTP连通性与状态:运行ntpq -p,在输出中,目标server的行首应该有*(表示主用)或+(表示备用),并且offset值应长期稳定在±5毫秒内。如果频繁出现disp(离散度)大于100,或者reach值为0,那很可能意味着UDP 123端口被防火墙拦截了。

说到底,这类问题的修复,难点从来不在具体的操作命令上,而在于所有节点配置的绝对一致性。少一个-x参数,多一行未被注释的server配置,或者某个节点忘记删除ntp.conf文件,整个集群的时间信任链就会断裂。修复完成后,千万别只看一次检查结果就掉以轻心,至少持续监控crsctl check ctss的输出半小时以上,确保状态真正稳定下来。

来源:https://www.php.cn/faq/2382557.html

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
SQL视图数据不一致如何排查_检查物理表锁与事务隔离

SQL视图数据不一致如何排查_检查物理表锁与事务隔离

视图数据与物理表不一致?先别慌,按这四步走 排查视图数据与物理表不一致的问题,核心在于理清四个常见原因:事务隔离级别的差异、视图中非确定性函数的影响、底层物理表的锁阻塞,以及表结构变更后视图元数据未刷新。系统性地检查隔离级别设置、视图定义、锁状态和对象依赖关系,是解决问题的关键。 视图查出来的数据和

时间:2026-04-28 22:31
如何利用SQL子查询实现列转行操作_嵌套CASE WHEN逻辑分析

如何利用SQL子查询实现列转行操作_嵌套CASE WHEN逻辑分析

如何利用SQL子查询实现列转行操作:嵌套CASE WHEN逻辑分析 子查询里不能直接用CASE WHEN做列转行?先搞清执行顺序 很多朋友一看到“列转行”,下意识就想用CASE WHEN去解决。但这里有个根本性的误区:CASE WHEN本身并不改变行数,它只是在每一行内部做条件判断和值映射。真正的“

时间:2026-04-28 22:31
SQL如何判断记录是否为重复项_使用ROW_NUMBER标记录状态

SQL如何判断记录是否为重复项_使用ROW_NUMBER标记录状态

SQL重复记录识别:ROW_NUMBER()的正确打开方式 先明确一个核心概念:ROW_NUMBER() 这个窗口函数,它本身并不具备“判断重复”的能力。它的本职工作,是按你设定的规则给每一行编个号。真正用来识别重复的,其实是“按特定字段分组后,组内编号大于1”这套组合逻辑。所以,问题的关键从来不是

时间:2026-04-28 22:31
SQL如何根据聚合结果反向筛选记录_利用存在性子查询

SQL如何根据聚合结果反向筛选记录_利用存在性子查询

EXISTS子查询:先分组聚合再筛选原始记录的最稳妥方式 用 EXISTS 做聚合后反向筛选,比 HA VING 更灵活 开门见山,先说一个核心结论:当你需要“先按某列分组、算出聚合值(比如平均值、最大值),然后再找出满足该聚合条件的原始记录”时,EXISTS 子查询往往是那个最稳妥、最不会出错的选

时间:2026-04-28 22:31
SQL怎么进行批量字符串的修整清洗_利用TRIM与REGEXP组合

SQL怎么进行批量字符串的修整清洗_利用TRIM与REGEXP组合

SQL字符串批量清洗:TRIM的局限与正则表达式的实战指南 TRIM 只能去首尾,别指望它删中间空格或特殊符号 一提到字符串清洗,很多人的第一反应就是TRIM()。但实际操作后往往会发现,事情没那么简单。比如,TRIM( hello world )确实能去掉首尾空格,得到 hello world

时间:2026-04-28 22:31
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 日榜
  • 周榜
  • 月榜
热门教程
更多
  • 游戏攻略
  • 安卓教程
  • 苹果教程
  • 电脑教程