ORA-29702 错误本质是CSS集群同步服务中断,需优先检查ocssd.log、私网连通性、MTU一致性、UDP 12345端口、反向DNS及IPC残留资源,而非修改数据库参数或重启实例。
ora-29702 错误在 oracle 12c rac 中不是“实例启动失败”的表象,而是集群状态同步已断裂的明确信号——lmon 进程检测到无法与 ocssd 通信后主动中止实例,必须从集群栈底层修复,不能只查数据库日志或反复重启实例。
确认是集群栈失联而非数据库配置错误
看到 ORA-29702: error occurred in Cluster Group Service operation 就去改 init.ora 或重跑 srvctl start database 是典型误判。该错误本质是数据库进程(尤其是 lmon)无法调用 Cluster Synchronization Services(CSS),和数据库参数、控制文件路径、归档模式等完全无关。
- 立刻检查
$GRID_HOME/log/,搜索/cssd/ocssd.log ERROR、timeout、failed to connect—— 这才是第一手线索 - 运行
crsctl check cluster -all,若输出含CRS-4537: Cannot communicate with Cluster Ready Services或某节点显示offline,说明 CSS 层已不可用 - 别信
ps -ef | grep ocssd看到进程就安心:用ps -o pid,etime,comm -C ocssd.bin查看进程存活时长,若etime ,说明ocssd正在崩溃重启循环
验证私网连通性与网络配置一致性
RAC 节点间心跳依赖专用私网(非 public 或 vip 接口),任何丢包、MTU 不一致或 UDP 端口阻塞都会直接触发 lmon 判定 CSS 失联。
- 用实际私网接口测试连通性:
ping -I eth1,不能只用-c 5 olsnodes -s或ifconfig看接口 up - 检查 MTU 是否统一:
ip link show eth1 | grep mtu,常见坑是交换机端口 MTU=9000 而主机设为 1500,导致大包被静默丢弃 - 确认 UDP 端口 12345(默认 CSS 通信端口)未被防火墙拦截:
iptables -L -n | grep 12345;如用 firewalld,需放行udp:12345 - 不要跳过反向 DNS 检查:
nslookup必须返回对应私网 IP,且所有节点解析结果一致 —— Oracle 12c 默认启用 strict checking
强制清理残留 IPC 资源避免状态卡死
当节点异常重启或 crsctl stop crs 中断后,shm、sem、msg 可能滞留,导致新启动的 ocssd 或 crsd 初始化失败,进而让资源长期卡在 INTERMEDIATE 状态。
- 先定位本节点 SID 相关资源:
ipcs -a | grep $(echo $ORACLE_SID | tr '[:lower:]' '[:upper:]')(注意大小写匹配) - 逐个清理:
ipcrm -m、ipcrm -s、ipcrm -Q—— 仅清理匹配 SID 的条目,勿用ipcs -ma全清 - 执行后必须再跑一次
ipcs -a | grep -i "oracle\|,确保输出为空;否则 CRS 启动时仍会因 IPC 冲突回退到" INTERMEDIATE - 清理完别急着
crsctl start crs:先手动启动ocssd验证:$GRID_HOME/bin/crsctl start resource ora.cssd -init,观察ocssd.log是否出现Cluster ready
跳过 OCR 写入失败引发的状态冻结
OCR 不可写(如权限错误、磁盘满、ASM diskgroup offline)会导致 CRS 无法更新资源状态,即使 ocssd 和网络都正常,资源也会卡在 INTERMEDIATE 并反复报 ORA-29702。
- 快速验证 OCR 可写性:
ocrcheck -local(单节点)或ocrcheck(集群模式),关注Status of ocr是否为healthy,以及Device/File Name对应路径是否可写 - 检查 OCR 所在 ASM diskgroup:
asmcmd lsdg | grep -E "(NAME|STATE|USABLE_FILE_MB)",确认STATE=ONLINE且USABLE_FILE_MB > 0 - 若 OCR 文件系统满,清理
$GRID_HOME/log/下过期的/client/ crflog_*.log,勿删crsd.log或ocssd.log - 切忌用
crsctl delete res强删卡住资源:这只会移除 OCR 注册项,但底层 ASM 数据、归档路径、监听配置全丢失,重建时极易错配参数
最易被忽略的是:Oracle 12c 默认启用 _css_skip_network_check 隐藏参数做快速网络探测,一旦私网抖动超过阈值(默认 1 秒),ocssd 会直接放弃重试并标记节点失效 —— 这类问题不会在日志里写明“network timeout”,只体现为反复的 css heartbeat timeout 和 lmon 中止。排查时必须把抓包(tcpdump -i eth1 udp port 12345)和 ocssd.log 时间戳对齐看。











