单节点rac集群无法直接启动crs,因cssd需多数派quorum(如2/2),单节点不满足;且ocr磁盘组未挂载导致crsd启动失败,故crsctl start crs会报crs-4639或ora-15032。

不能直接“强制启动集群”,只能在单节点上重建可控的集群上下文——否则 crsctl start cluster 会卡在等待其他节点心跳,crsctl start crs 会因 OCR/Voting 磁盘不可用而报 CRS-4639 或 ORA-15032/ORA-15017。
为什么 crsctl start crs 在单节点上大概率失败
Oracle RAC 的 Clusterware 启动依赖三个核心前提:本节点 OHASD 进程就绪、OCR 磁盘组能被 ASM 挂载、Voting Disk 可访问且 quorum 可达成。双节点全挂后,Voting Disk 默认需要多数派(2/2),单节点无法满足,CSSD 会拒绝启动;同时 ASM 实例可能因参数文件丢失或磁盘组未 online 而无法拉起,导致 OCR 读取失败。
-
crsctl start crs会尝试启动 OHASD + CSSD + CRS + EVM 全栈,但 CSSD 启动前会检查 Voting Disk quorum —— 此时直接失败,日志里反复出现CRS-4639: Could not contact Oracle High Availability Services - 即使强行用
-f参数,也会留下残留锁或状态不一致,后续crsctl check crs显示CRS-4535: Cannot communicate with Cluster Ready Services - 不要试图先
crsctl start has再等自动恢复:OHASD 启动后若检测不到合法集群配置,会主动退出或降级为 standalone 模式,不再触发 CRSD
必须先绕过 Voting Disk quorum 检查
这是单节点启动的前提动作,否则所有启动命令都会被 CSSD 拦截。操作目标是让本节点以“单节点仲裁模式”启动 CSSD,而非等待另一节点。
- 确认当前 Voting Disk 位置:
crsctl query css votedisk(若已无法执行,查$GRID_HOME/cdata/<cluster_name>/</cluster_name>下最近的backup00.ocr或 OCR 备份路径) - 临时修改 Voting Disk 模式:用 root 执行
crsctl delete css votedisk(仅删除注册,不删物理文件),再用crsctl add css votedisk <path_to_voting_disk> -force</path_to_voting_disk>强制重注册为单节点可用路径 - 更稳妥的做法(尤其 Veritas 环境):修改
/etc/oracle/olr.loc中的olrconfig_loc指向本地副本,并设置环境变量ORACLE_OCM_CONFIG_DIR=/tmp避免 OCM 初始化失败 - 关键验证:执行
crsctl query css status应返回node active, quorum required: 1,而非默认的quorum required: 2
ASM 实例必须手动 mount OCR 磁盘组才能继续
Grid Infrastructure 启动流程中,CRSD 依赖 OCR 内容加载资源定义。如果 ASM 实例没起来、或 OCR 磁盘组没 online,crsctl start cluster 会在 ora.crsd 启动阶段 hang 住或报 LRM-00109 / ORA-15032。
- 切到
grid用户,用sqlplus / as sysasm连接空闲实例 - 执行
startup nomount→alter diskgroup OCRMOUNT MOUNT(替换OCRMOUNT为实际 OCR 所在磁盘组名,常见为+OCR或+GRID) - 确认挂载成功:
select name,state,type from v$asm_diskgroup where state='MOUNTED'; - 此时再运行
crsctl start cluster -n <this_node></this_node>,它会跳过远程节点等待,只启动本节点 CRSD,并从刚 mount 的 OCR 中读取资源配置
数据库实例启动前必须确认资源注册完整
即使 CRS 启动成功,srvctl start database 仍可能失败:因为 OCR 中记录的数据库资源依赖监听器、VIP、ASM 实例等,而这些资源在单节点下可能状态异常或未完全初始化。
- 先查资源状态:
crsctl stat res -t | grep -E "(ora\.asm|ora\.listener|ora\.<db_name>)"</db_name> - 若
ora.asm显示INTERMEDIATE或OFFLINE,需手工启动:srvctl start asm -n <node_name></node_name> - 若监听器未 online,手工启动:
srvctl start listener -n <node_name></node_name> - 最后再启数据库:
srvctl start database -d <db_unique_name> -o mount</db_unique_name>(先 mount,确认控制文件可读后再alter database open)
真正麻烦的不是命令本身,而是 OCR 和 Voting Disk 的状态耦合性——它们不像普通文件那样能靠重启解决,必须按依赖顺序逐层解开。任何一步跳过验证,后续问题会更隐蔽,比如数据库看似 open 了,但归档无法写入、RMAN 备份报 ORA-19504。动手前务必确认 OCR 备份可用,且有至少一次成功的 ocrconfig -showbackup 输出。











