一、背景
某客户计划对oracle数据库11.2.0.4.0版本集群重启,重启过程中发现cssd服务一直处于STARTING状态,重启主机也无法解决问题。
二、排查步骤
启动crs时,数据库集群日志如下:
根据数据库集群日志检查对应的ocssd日志:
根据报错大概看出:集群无法将优先值设置为4;无法启动real time模式。
MOS查找后大致匹配文章 Linux: GI OCSSD Fails to Start After cgroups Setting Change (Doc ID 1577784.1)
如下:
检查操作系统相关配置和服务:
发现该文档《Linux: GI OCSSD Fails to Start After cgroups Setting Change (Doc ID 1577784.1)》的解决方案不适用,根据次文章查询的系统配置没有问题。
继续查询相关资料:
reahat官方关于CPU的相关设置说明 How to configure a RHEL 7 or RHEL 8 system to be able to run programs requiring Real-Time Scheduling
当CPUAccounting参数enabled时,将不能创建real-time进程。排查system.conf配置文件发现并没有开启CPUAccounting参数
检查操作系统CPU Accounting、CPUQuots等:
find /etc/systemd/system.conf /etc/systemd/system /usr/lib/systemd -type f | xargs grep -e CPUAccounting -e CPUWeight -e StartupCPUWeight -e CPUShares -e StartupCPUShares -e CPUQuota
发现在titanagent.service服务文件中发现配置了CPUQuota=50%,CPUQuota参数会隐性开启CPUAccounting
禁用titanagent.service后,重启主机,集群启动正常:
三、总结
titanagent.service这个服务里面配置了CPUQuota=50%,CPUQuota参数会隐性开启CPUAccounting,CPUAccounting会导致不能创建real-time进程,crs启动需要real-time进程,所以导致crs无法正常启动。titanagent.service是一个安全加固服务,可将里面CPUQuota=50%配置去掉,以免下次重启仍然报错。
四、参考文档
1.GI OCSSD Fails to Start After cgroups Setting Change (Doc ID 1577784.1)
2. 11.2.0.4 RAC CSSD服务无法启动故障 unable to set priority to 4_ITPUB博客
11.2.0.4 RAC CSSD服务无法启动故障 unable to set priority to 4
3. Oracle 12c RAC CSSD进程无法启动real time模式 - 墨天轮
Oracle 12c RAC CSSD进程无法启动real time模式