crsctl stat res -t卡住时,先执行crsctl check crs确认CRS是否存活:若返回CRS-4639则OHAS未启动,若返回CRS-4638则需排查私网通信、OCR/Voting Disk可达性及ASM状态。
crsctl stat res -t 在节点上卡住,先看 CRS 是否活着
如果 crsctl stat res -t 在某个节点(比如节点2)长时间无响应,不是命令本身坏了,而是它在等集群服务返回资源状态——而这个等待可能永远等不到。首要动作是验证 crs 进程是否真正在运行:crsctl check crs。若返回 crs-4639: could not contact oracle high availability services,说明 ohas 根本没起来,crsctl 就会挂起;若返回 crs-4638,说明 crs 在线,但节点间通信或资源同步可能中断。
网络心跳不通时,crsctl 会假死,别硬等
Oracle RAC 的 crsctl 命令严重依赖 CSSD(Cluster Synchronization Services Daemon)的跨节点心跳。一旦私网通信异常(如交换机丢包、网卡故障、oifcfg 配置错用公网接口),CSSD 就无法确认其他节点存活,crsctl stat res -t 会卡在内部 RPC 等待中,表现为“无输出、不报错、不退出”。这时:
- 不要反复重试该命令,它不会自己恢复
- 立刻检查私网连通性:
ping -I - 确认
oifcfg getif输出中私网接口标记为cluster_interconnect - 查
$GRID_HOME/log/<hostname>/cssd/ocssd.log</hostname>,搜索"missed heartbeat"或"reboot"
OCR/Voting Disk 不可访问也会让 crsctl 挂起
当 OCR 或 Voting Disk 所在磁盘组不可用(如 ASM 实例未启动、磁盘路径丢失、权限错误),CRS 启动后无法读取集群元数据,crsctl 的多数操作(包括 stat res)会阻塞在 OCR 访问层。验证方式:
- 运行
ocrcheck—— 若超时或报PROT-602错误,OCR 访问失败 - 运行
crsctl query css votedisk—— 若返回空或报CRS-4679,Voting Disk 不可达 - 检查 ASM 实例状态:
crsctl stat res -t | grep asm,确认ora.asm是 ONLINE - 若 ASM 没起来,先尝试
srvctl start asm -n <hostname></hostname>,再观察
别在卡住时强行 kill -9 crsctl,可能破坏 OCR 锁
曾有 DBA 在 crsctl stat res -t 卡住 10 分钟后直接 kill -9 进程,结果导致 OCR 文件锁残留,后续 crsctl stop crs 失败,必须重启节点。真正安全的做法是:
- 先确认是 CRS 进程级挂起(
ps -ef | grep crs查看是否有crsd.bin或ocssd.bin异常占用 CPU 或处于 D 状态) - 若只是客户端命令卡住,Ctrl+C 中断即可,不影响后台服务
- 若整个 CRS 无响应,以 root 执行
crsctl stop crs -f再crsctl start crs—— 这个重启动作本身是原子的,不会损坏 OCR











