crsctl start crs 仅触发启动流程,不保证服务稳定运行或自启;需检查 crsctl check crs 全online、OCR日志无错误、三个关键进程存在,并配置系统级自启服务。
crsctl start crs 执行后服务没起来,可能根本没生效
这个命令只是触发一次 crs(cluster ready services)启动流程,不等于服务已稳定运行或加入系统自启。常见错误是执行完 crsctl start crs 就以为集群“跑起来了”,结果 2 分钟后 crsctl check crs 显示 crs-4638: oracle high availability services is online,但 crs-4535: cannot communicate with cluster ready services 紧随其后——说明 ohas 层虽启,但 crs 层实际未就绪。
真正要确认是否生效,得看三件事:
- 执行
crsctl check crs,输出必须全为online,不能只扫一眼第一行 - 检查
/var/log/oracle/crsd/crsd.log末尾有没有OCR initialization failed或Failed to connect to OCR—— 这类错误会让 CRS 卡在初始化阶段,表面“启动成功”实则挂起 -
ps -ef | grep d.bin应该看到ohasd.bin、crsd.bin、ocssd.bin三个主进程,缺一个都算失败
自启动开关不在 crsctl 命令里,而是靠操作系统级服务注册
crsctl start crs 是手动操作,和开机自启无关。Oracle 11gR2+ 的集群自启由操作系统服务管理器控制:RHEL/CentOS 7+ 用 systemd,6 及以前用 init.d。漏掉这层配置,重启服务器后 CRS 必然不起来。
关键检查点:
- RHEL/CentOS 7+:确认
systemctl is-enabled oracleohasd返回enabled;若为disabled,运行systemctl enable oracleohasd - RHEL/CentOS 6:检查
/etc/init.d/ohasd是否存在且有执行权限,再确认chkconfig --list ohasd输出中 runlevel 3/5 状态为on - 无论哪种系统,都得确保
/etc/oracle/olr.loc存在且指向有效 OCR 备份位置,否则oracleohasd服务启动时会静默失败
crsctl start crs 报 CRS-4000 错误,大概率是权限或环境变量问题
典型报错:CRS-4000: Command Start failed, or completed with errors. 表面笼统,实际根因很集中:
- 没用
root用户执行 ——crsctl start crs必须由 root 运行,普通用户即使加sudo也可能因环境变量缺失失败 -
ORACLE_HOME未设或设错 —— 它必须指向 Grid Infrastructure 安装路径(如/u01/app/19.0.0/grid),不是 RDBMS 的ORACLE_HOME - SELinux 处于 enforcing 模式且策略未适配 —— 会导致
ohasd.bin被拦截,临时验证可执行setenforce 0,长期方案是用semanage permissive -a oracleohasd_t
OCR 损坏时 crsctl start crs 会卡住或反复重启
如果 OCR(Oracle Cluster Registry)损坏或不可写,crsctl start crs 可能看似执行成功,但 crsd.bin 会在几秒内崩溃退出,日志里反复出现 OCR not available 或 Unable to initialize the OCR。
这时候不能硬等或反复重试:
- 先停掉所有节点的 CRS:
crsctl stop crs -f(注意加-f强制) - 用
ocrcheck -local确认本地 OCR 状态;若失败,尝试从自动备份恢复:ocrconfig -restore /u01/app/19.0.0/grid/cdata/<cluster_name>/backup00.ocr</cluster_name> - 恢复后务必运行
ocrconfig -showbackup核对备份时间,并用cluvfy comp ocr -n all验证 OCR 一致性
OCR 不是文件系统里的普通文件,它的元数据校验和、镜像同步机制很敏感,跳过验证直接启动,后面大概率在资源上线时出更隐蔽的故障。










