一、CTSS介绍

CTSS是Oracle集群软件的一部分,如果发现OS时间同步有效或者中断,那么CTSS以observer观察者模式运行。
如果发现集群中的任何节点都没有时间同步服务,或者集群中所有节点都配置了时间同步服务,那么CTSS变为activ活跃模式,并接管集群时间管理。

当节点加入到集群,如果CTSS为活跃状态,那么它会拿着新节点与集群中的节点时间做比对。如果两个时间有差异,且时间差异小于阈值时间(24小时),那么CTSS会执行时间同步,将新加入的节点时间同步为加入集群的时间。

Oracle集群启动时,CTSS处于活跃模式,节点之间的时间差异大于阈值时间限制(24小时),那么CTSS会在alert.log中生成日志,退出然后Oracle集群软件启动失败。你必须手动调整所有集群中节点的时间差异处于阈值之内,这样集群软件启动成功,CTSS掌管集群中所有节点时间同步。

CTSS以集群中第一个启动的节点的时间作为基准,集群中的其他节点时钟与该基准时间偶尔产生差异,产生差异的原因有很多。这种情况发生时,CTSS执行时间同步,加速或者减慢节点上的系统时间,直到它们与参考的基准时间同步。这种时间同步方式,CTSS不会向后调整时间,保证了系统时间的单调增加,保证数据库中业务数据不出现时间回逆问题。CTSS定期向alert日志中写入告警信息,包含了问题节点与参考时钟执行调整的频率。

二、调整CTSS运行模式

1、运行模式为active

若想将CTSS调整为活跃模式,你必须在所有节点停止并且注释掉原有时间同步服务(Vendor time sync software)的配置。当CTSS侦测到上述操作后,变为活跃模式掌管集群时间同步。

@all nodes
# mv /etc/ntp.conf  /etc/ntp.conf.bak

在master节点查看ctss日志也可以看到ctss模式转换 (日志位置 /log//ctssd/octssd.log)
2018-04-10 15:01:14.246: [    CTSS][2541729536]ctsselect_determine_role: Vendor time synchronization software is not detected on any n
ode in the cluster. Switched to active role.  

* 如何确定集群主节点(master node)
查看该日志ORACLE_HOME/log/nodename/cssd/ocssd.log,其中master括号内的号就是主节点,该集群中主节点为第1节点。
2018-04-10 15:21:12.524: [    CSSD][2102335232]clssgmQueueGrockEvent: groupName(CLSN.ONSPROC.MASTER) count(2) master(1) event(8), inca
rn 9, mbrc 0, to member 2, events 0xa0, state 0x0

2、运行模式为observer观察模式

如果想将CTSS调整为观察者observer模式,需要如下操作:
、配置/etc/ntp.conf @all nodes
加入远程时间服务器IP,并将原有的注释掉
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 10.0.0.11 perfer
#server 0.rhel.pool.ntp.org iburst
#server 1.rhel.pool.ntp.org iburst
#server 2.rhel.pool.ntp.org iburst
#server 3.rhel.pool.ntp.org iburst

、crsctl check ctss 命令检查确保CTSS处于观察者模式 @all nodes
su - grid 
$ crsctl check ctss 
CRS-4700: The Cluster Time Synchronization Service is in Observer mode.

另外,在master节点查看ctss日志也可以看到ctss模式转换 (日志位置 /log//ctssd/octssd.log)
2018-04-09 18:00:43.627: [    CTSS][2541729536]ctss_check_vendor_sw: Ctssd is switching to observer role

、集群所有节点上启动ntpd服务,并设置开机启动
service ntpd start
chkconfig ntpd on 

、使用 cluvf comp clocksync -n all 命令验证时间同步服务正在运行
su - grid
$ cluvfy comp clocksync -n all

这步可能出现 PRVF-5436 : The NTP daemon running on one or more nodes lacks the slewing option "-x"错误。
“-x”用于阻止ntp向后调整时钟,向后则意味着时间回逆,可能导致数据库、集群问题。

所有节点的/etc/sysconfig/ntpd中加入“-x”即可
OPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid -g"

然后重启ntpd服务
service ntpd restart


附日志记录
$ cluvfy comp clocksync -n all


验证 各集群节点上的时钟同步 

正在检查是否在所有节点上安装了集群件...
集群件的安装检查通过

正在检查 CTSS 资源是否在所有节点上运行...
CTSS 资源检查通过

正在查询所有节点上时间偏移量的 CTSS...
时间偏移量的 CTSS 查询通过

检查 CTSS 状态已启动...
CTSS 处于观察程序状态。使用 NTP 切换到时钟同步检查

正在使用网络时间协议 (NTP) 启动时钟同步检查...

NTP 配置文件检查开始...
NTP 配置文件检查通过

正在检查守护程序的活动性...
"ntpd" 的活动性检查已通过
针对 NTP 守护程序或服务是否活动的检查在所有节点上均已通过

NTP 守护程序快速定向选项检查已通过

快速定向选项的 NTP 引导程序的引导时间配置检查已通过

NTP 公用时间服务器检查开始...
公用 NTP 时间服务器检查通过

与 NTP 时间服务器的时钟时间偏移量检查开始...
时钟时间偏移量检查通过

使用网络时间协议 (NTP) 进行时钟同步检查通过

Oracle 集群时间同步服务检查已通过

各集群节点上的时钟同步 的验证成功。


参考 

https://docs.oracle.com/cd/E11882_01/rac.112/e41959/admin.htm#CWADD92080
http://blog.itpub.net/23135684/viewspace-759693/






09-03 14:25