crsctl stop crs 是唯一安全停止单节点 Oracle Clusterware 的标准命令,它按依赖顺序停止本节点所有 CRS 资源(如 ora.cssd、ora.asm 等),不干扰其他节点;而 crsctl stop cluster 会强制关闭整个集群。
crsctl stop cluster 会停掉整个集群,不是单节点服务
很多人以为 crsctl stop cluster 可以只停当前节点的 oracle clusterware,其实它会触发整个集群的 shutdown 流程——只要 ocr 和 voting disk 可访问,其他节点也会被强制驱逐或关闭。这不是“停单一节点”,而是“停整个集群”。真要只停本节点,必须绕过集群级命令。
停止单节点 CRS 的正确方式:用 crsctl stop crs
crsctl stop crs 是唯一安全、标准的单节点停止操作。它会按依赖顺序依次停掉本节点所有 CRS 资源(ora.cssd、ora.diskmon、ora.ctssd 等),不触及其他节点。但要注意:
- 执行前确保该节点上没有运行关键业务资源(如 RAC 数据库实例),否则会连带 shutdown
- 如果
ora.asm正在运行且被数据库实例依赖,crsctl stop crs会失败并报错CRS-2501: Resource 'ora.asm' is still running - 在 GI 12c+ 中,若启用了 Flex ASM,还需确认本节点不是唯一 ASM client 所在节点,否则可能卡在
ora.cluster_interconnect.haip停止阶段
为什么不能用 crsctl stop resource ora.cssd 强制停核心进程
单独停 ora.cssd 看似精准,实则危险。CSSD 是集群同步服务,一旦被 kill,节点会立即失去心跳,触发 evict —— 其他节点会在 60 秒内将该节点踢出集群,产生 OCR 损坏风险。常见错误现象包括:
-
CRS-4639: Could not contact Oracle High Availability Services(HAIP 已断,但 CSSD 进程还在僵死) - 重启后
crsctl check cluster显示CRS-4537: Cluster Ready Services is online,但crsctl stat res -t中大量资源状态为OFFLINE - Voting Disk 出现 “misscount exceeded” 日志,需手动
crsctl replace votedisk恢复
停 CRS 后 ASM 实例是否自动关闭
不一定。GI 12.2+ 默认启用 ora.asm 的 AUTO_START=always,但它的启动/停止由 ora.cssd 控制。所以:crsctl stop crs 会停 ora.cssd → 进而停 ora.asm;但如果之前手动用 srvctl stop asm 关过 ASM,且没清掉依赖标记,crsctl stop crs 可能跳过它。验证方法很简单:
ps -ef | grep pmon\+ASM
如果还有进程,说明 ASM 没被正常清理,大概率是资源依赖链断裂或 ora.asm 被设成了 AUTO_START=restore。这时候别硬 kill,先查:
crsctl stat res ora.asm -p | grep AUTO_START-
crsctl stat dep sys.ora.asm(看是否还依赖已停的ora.cssd)
依赖关系不是静态配置,是运行时动态构建的,稍有不一致就容易卡住。










