Oracle集群时间同步

约定不等于承诺〃 2022-05-21 04:11 352阅读 0赞

在RAC中集群的时间应该是保持同步的,否则可能导致很多问题,比如:依赖于时间的应用会造成数据的错误,各种日志打印的顺序紊乱,这将会影响问题的诊断,严重的可能会导致集群宕机或者重新启动集群时节点无法加入集群。

在11gR2前,集群的时间是由NTP同步的,而在11gR2后,Oracle引入了CTSS组件,如果系统没有配置NTP,则由CTSS来同步集群时间。

NTP和CTSS是可以共存的,且NTP的优先级要高于CTSS,也就是说如果系统中同时有NTP和CTSS,集群的时间是由NTP同步的,CTSS会处于观望(Observer)模式,只有当集群关闭所有的NTP服务,CTSS才会处于激活(Active)模式。

以下是集群时间同步的两种模式:

1)NTP同步模式

70

70 1

节点1的octssd.log中记录发现ntp服务,ctss服务会自动切换到观望模式。

70 2

70 3

节点2的octssd.log中也会记录发现ntp服务,ctss服务为观望模式,并且同步时间的主节点是节点1。

2)CTSS同步模式

70 4

70 5

节点1的octssd.log中记录没有发现ntp服务,ctss服务为激活模式。

70 6

70 7

节点2的octssd.log中记录没有发现ntp服务,ctss服务为激活模式,同步时间的主节点是节点1,并且会告诉你集群的时间有差异,但是因为差异过小,无需调整。

70 8

虽然集群时间不一致,但是这种情况下校验结果是通过的,而且略微的差异范围内集群也会自动同步回来。

如果在我们生产系统中碰到集群时间不一致会导致什么结果,我们的排查思路是怎么样的,以下是模拟集群时间不一致的场景。

更改节点2的时间后在ASM和DB的alert日志中产生了以下的告警信息

  1. Warning: VKTM detected a time drift.
  2. Time drifts can result in an unexpected behavior such as time-outs. Please check trace
  3. file for more details.
  4. oracle@com2:/opt/oracle/diag/rdbms/orcl/orcl2/trace>more orcl2_vktm_34715.trc
  5. Trace file /opt/oracle/diag/rdbms/orcl/orcl2/trace/orcl2_vktm_34715.trc
  6. Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
  7. With the Partitioning, Real Application Clusters, OLAP, Data Mining
  8. and Real Application Testing options
  9. ORACLE_HOME = /opt/oracle/products/11.2.0
  10. System name: Linux
  11. Node name: com2
  12. Release: 3.10.0-693.11.1.el7.x86_64
  13. Version: #1 SMP Fri Oct 27 05:39:05 EDT 2017
  14. Machine: x86_64
  15. Instance name: orcl2
  16. Redo thread mounted by this instance: 0 <none>
  17. Oracle process number: 4
  18. Unix process pid: 34715, image: oracle@com2 (VKTM)
  19. *** 2018-06-08 20:01:39.824
  20. *** SESSION ID:(921.1) 2018-06-08 20:01:39.824
  21. *** CLIENT ID:() 2018-06-08 20:01:39.824
  22. *** SERVICE NAME:() 2018-06-08 20:01:39.824
  23. *** MODULE NAME:() 2018-06-08 20:01:39.824
  24. *** ACTION NAME:() 2018-06-08 20:01:39.824
  25. kstmmainvktm: succeeded in setting elevated priority
  26. highres_enabled
  27. *** 2018-06-08 20:01:39.824
  28. VKTM running at (1)millisec precision with DBRM quantum (100)ms
  29. [Start] HighResTick = 1528459299824585
  30. kstmrmtickcnt = 0 : ksudbrmseccnt[0] = 1528459299
  31. *** 2018-06-10 20:04:00.000
  32. kstmchkdrift (kstmhighrestimecntkeeper:highres): Time jumped forward by
  33. (172844812599)usec at (1528632240000738) whereas (1000000) is allowed

VKTM进程发现系统时间变了,alert日志会产生相应的告警信息,从产生的trace文件中可知,系统向前推进了172844812599微秒,也即为48小时(也就是我们模拟更改的时间),而允许的差异范围为1秒。

70 9

70 10

节点2的octssd.log中和ctss状态都记录了偏移的时间,而且校验也是失败的,校验结果是需要同步节点2的时间,此时因为集群时间差异较大,同步服务往往是无法做到的,只有手工同步才能修复。

70 11

在没有同步时间之前,重启节点2是无法正常启动的,从以下命令可知是在ctss这一步有问题,通过重新更改正确时间后,集群才能正常启动。

70 12

| 作者简介

管海涛·沃趣科技高级数据库技术专家

熟悉Oracle数据库内部机制,丰富的数据库及RAC集群层故障诊断、性能调优、OWI、数据库备份恢复及迁移经验。

发表评论

表情:
评论列表 (有 0 条评论,352人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Linux:时间同步

    集群时间同步 如果服务器在公网环境(能连接外网),可以不采用集群时间同步,因为服务器会定期和公网时间进行校准; 如果服务器在内网环境,必须要配置集群时间同步,否则时间

    相关 hadoop 时间NTP同步

    1. 时区一致。 要保证设置主机时间准确,每台机器时区必须一致。实验中我们需要同步网络时间, 因此要首先选择一样的时区。先确保时区一样,否则同步以后时

    相关 时间同步

    集群之间在执行任务的时候需要时间同步,分两种情况: 如果集群连接了外网,那么每个节点都可以和外网进行时间同步,不需要处理 如果集群没连接外网,需要配置集群中一台节

    相关 Oracle时间同步

    在RAC中集群的时间应该是保持同步的,否则可能导致很多问题,比如:依赖于时间的应用会造成数据的错误,各种日志打印的顺序紊乱,这将会影响问题的诊断,严重的可能会导致集群宕机或者重