Oracle 10g R2 RAC 报 OCSS is not ready. Received status 3 from CSS 错误分析与解决
在Oracle 10g R2 RAC环境中,集群服务组件之间的通信故障可能导致节点无法加入集群或集群服务异常。其中,"OCSS is not ready. Received status 3 from CSS" 是一个常见的错误信息,通常与Oracle Cluster Synchronization Services (OCSS) 和 Cluster Ready Services (CRS) 组件的交互问题相关。本文将深入分析该错误的成因,并提供详细的排查步骤和解决方案。
一、错误背景与影响
Oracle Clusterware是RAC环境的基础,负责管理集群资源、节点成员关系和集群同步。OCSS负责集群节点的同步和资源管理,而CSS则提供底层集群服务支持。当OCSS无法从CSS获取就绪状态时,会导致集群服务无法正常启动或节点被驱逐出集群。
错误 "OCSS is not ready. Received status 3 from CSS" 表明OCSS向CSS请求状态信息时收到了非预期的响应(状态码3通常表示服务不可用或未就绪)。这可能导致以下后果:
- 节点无法加入现有集群
- 集群服务频繁重启
- 数据库实例无法启动
- 集群整体可用性下降
二、错误原因分析
导致该错误的常见原因包括以下几个方面:
1. 网络配置问题
RAC环境对网络延迟和稳定性要求极高。私有网络(用于节点间通信)的配置错误或性能问题是最常见的诱因:
- 私有网卡绑定失败或链路中断
- IP地址冲突或子网掩码配置错误
- 防火墙阻止了节点间的必要通信端口
- 网络延迟过高或不稳定
2. 集群资源竞争或死锁
OCSS和CSS依赖共享资源(如OCR和Voting Disk)进行协调。如果这些资源出现竞争或死锁,会导致服务状态异常:
- OCR或Voting Disk存储空间不足
- 存储设备故障或I/O性能瓶颈
- 集群服务进程异常终止导致资源未释放
3. 操作系统资源限制
操作系统级别的资源限制可能影响集群服务的正常运行:
- 共享内存段不足或权限配置错误
- 信号量数量限制过低
- 进程数或文件句柄数达到上限
4. Oracle Clusterware配置错误
Clusterware的配置文件损坏或参数设置不当也可能导致该错误:
- OCR或Voting Disk路径配置错误
- 集群节点列表不一致
- 服务启动顺序配置错误
三、详细排查步骤
步骤1:检查集群服务状态
首先通过crsctl命令检查集群服务的运行状态,确定哪些服务出现异常:
# 检查集群服务状态 crsctl check crs # 检查OCSS服务状态 crsctl check css # 检查所有资源状态 crs_stat -t
重点关注OCSS和CRS服务的状态,如果显示"OFFLINE"或"UNKNOWN",说明相关服务未正常启动。
步骤2:查看日志文件定位具体错误
Oracle Clusterware的日志文件提供了详细的错误信息,是排查问题的关键依据:
- OCR日志:$ORA_CRS_HOME/log/
- CRS日志:$ORA_CRS_HOME/log/
- 集群就绪服务日志:$ORA_CRS_HOME/log/
在ocssd.log中搜索"status 3"或相关错误关键词,查看错误发生的时间点和上下文信息。例如:
grep "status 3" $ORA_CRS_HOME/log/`hostname`/cssd/ocssd.log
步骤3:验证网络配置
检查私有网络的连通性和配置:
# 检查私有网卡状态 ifconfig -a | grep -A 5 <private_interface> # 测试节点间私有网络通信 ping -I <private_ip> <other_node_private_ip> # 检查防火墙规则 iptables -L -n # 或使用firewalld firewall-cmd --list-all
确保私有网卡处于UP状态,节点间可以互相ping通,且防火墙未阻止集群通信端口(默认情况下,RAC使用UDP端口42424和TCP端口6100-6200)。
步骤4:检查操作系统资源
验证共享内存和信号量等资源是否满足Clusterware的要求:
# 检查共享内存段 ipcs -m # 检查信号量 ipcs -s # 检查系统资源限制 ulimit -a
对于Oracle 10g R2,建议的共享内存参数如下:
- shmmax:至少4294967295字节(4GB)
- shmmni:4096
- shmall:2097152
信号量参数建议:
- semmsl:250
- semmns:32000
- semopm:100
- semmni:128
步骤5:验证OCR和Voting Disk状态
OCR和Voting Disk是Clusterware的核心组件,需确保其可用性和完整性:
# 检查OCR状态 ocrcheck # 检查Voting Disk状态 crsctl query css votedisk # 检查OCR备份 ocrconfig -showbackup
如果OCR或Voting Disk出现故障,可能需要从备份恢复。确保存储设备有足够的空间,并且I/O性能正常。
四、解决方案
方案1:修复网络配置问题
如果发现网络配置错误,按以下步骤修复:
- 修正私有网卡的IP地址、子网掩码和网关配置
- 确保网卡绑定正确(如使用bonding技术提高可靠性)
- 关闭不必要的防火墙规则或开放集群通信端口
- 优化网络性能,减少延迟和丢包
示例:配置私有网卡绑定(以RedHat为例)
# 编辑网卡配置文件 vi /etc/sysconfig/network-scripts/ifcfg-bond0 DEVICE=bond0 BOOTPROTO=static IPADDR=<private_ip> NETMASK=<netmask> ONBOOT=yes TYPE=Ethernet BONDING_OPTS="mode=1 miimon=100" # 配置物理网卡 vi /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE=eth1 BOOTPROTO=none ONBOOT=yes MASTER=bond0 SLAVE=yes # 重启网络服务 service network restart
方案2:解决资源竞争或死锁
如果是资源竞争导致的错误:
- 清理异常的共享内存段和信号量
- 检查并扩展OCR和Voting Disk的存储空间
- 更换故障的存储设备或优化I/O性能
- 重启集群服务以释放被占用的资源
清理共享内存和信号量的命令:
# 清理共享内存段 ipcrm -m <shmid> # 清理信号量 ipcrm -s <semid>
注意:在执行这些操作前,确保没有重要的进程在使用这些资源。
方案3:调整操作系统资源限制
根据Oracle 10g R2的要求,调整系统资源参数:
编辑/etc/sysctl.conf文件,添加或修改以下参数:
kernel.shmmax = 4294967295 kernel.shmmni = 4096 kernel.shmall = 2097152 kernel.sem = 250 32000 100 128 fs.file-max = 65536 net.ipv4.ip_local_port_range = 1024 65000
使配置生效:
sysctl -p
同时,检查/etc/security/limits.conf文件,确保oracle用户的资源限制足够:
oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536
方案4:修复Clusterware配置
如果是配置错误导致的故障:
- 检查OCR和Voting Disk的路径配置是否正确
- 确保所有节点的集群配置一致
- 重新配置集群服务(必要时)
示例:重新配置OCR(谨慎操作,建议在Oracle支持下进行)
# 停止集群服务 crsctl stop crs # 重新配置OCR(需要根据实际情况修改) ocrconfig -repair -add <new_ocr_location> # 启动集群服务 crsctl start crs
五、预防措施
为避免类似问题再次发生,建议采取以下预防措施:
- 定期检查网络设备和链路的可靠性,监控网络延迟和丢包率
- 实施存储设备的冗余配置,定期进行OCR和Voting Disk的备份
- 监控系统资源使用情况,及时调整操作系统参数
- 制定完善的集群维护计划,避免在业务高峰期进行可能影响集群的操作
- 定期更新操作系统和Oracle补丁,修复已知的问题和漏洞
六、总结
"OCSS is not ready. Received status 3 from CSS" 错误通常与网络配置、资源竞争或Clusterware配置问题相关。通过系统的排查步骤,从服务状态、日志分析、网络验证到资源检查,可以逐步定位并解决问题。在实际操作中,应根据具体情况选择合适的解决方案,并在实施前做好数据备份和风险评估。通过有效的预防和监控措施,可以降低此类故障的发生概率,保障RAC环境的稳定运行。