ohasd.bin 启动卡住时,应先删除残留的 /var/tmp/.oracle/npohasd 管道文件,再执行 crsctl start crs;需确认目录权限正确、检查 ohasd.log 与 ocssd.log 中超时及磁盘识别问题,并验证 crsctl check has 状态是否为 online。
ohasd.bin 启动卡住时,先看 /var/tmp/.oracle/npohasd 是否残留
oracle 11g rac(尤其是 11.2.0.4)启动失败最常见的表象是 crsctl start crs 卡住、无输出,ps -ef | grep ohasd.bin 显示进程存在但状态僵死,日志里反复出现 timed out waiting for ohasd monitor。这不是配置错误,而是启动机制被一个 unix 命名管道文件阻塞了。
-
/var/tmp/.oracle/npohasd是ohasd.bin启动时创建的 IPC 通信通道,正常启动后由 monitor 进程接管;若上次异常退出未清理,新进程会尝试读取该管道并无限等待 - 直接删掉它:
rm -f /var/tmp/.oracle/npohasd,再执行crsctl start crs,90% 以上能立刻恢复 - 注意权限:该目录属
root:root,普通用户删不掉;且不能只删npohasd而留空目录——/var/tmp/.oracle/必须存在且权限为drwxr-xr-x
确认 ohasd 是否真在运行,别被 ps 的假象骗了
ps -ef | grep ohasd.bin 看到进程号 ≠ 它在正常工作。真正要验证的是它的子进程链和监控状态。
- 用
crsctl check has查真实状态,返回CRS-4638: Oracle High Availability Services is online才算成功;若报CRS-4639: Could not contact Oracle High Availability Services,说明ohasd根本没活过来 - 检查
ohasd.log(路径:$GRID_HOME/log/<hostname>/ohasd/ohasd.log</hostname>),重点搜OHASD00117和reboot字样——前者是超时标志,后者说明进程被强制重启过但失败 - 不要依赖
systemctl status oracle-ohasd(RHEL7+ 上可能显示 active,但实际内部已 hang);ohasd是 init 进程(PID 1 的子进程),它不走 systemd 生命周期管理
从 ocssd 日志反推依赖链断裂点
ohasd 启动后,按固定顺序拉起 cssd → crsd → evmd → asm。一旦卡在中间,ocssd.log 是第一个暴露问题的现场。
- 查
$GRID_HOME/log/<hostname>/cssd/ocssd.log</hostname>,看最后几行是否卡在磁盘发现阶段,例如反复打印Fetching UFS disk :/dev/raw/raw1:——这说明 ASM 磁盘路径不可达或权限不对,cssd无法完成集群成员资格校验,后续全部阻塞 - 常见诱因:
/dev/raw/*设备消失(UDEV 规则失效)、ASM 磁盘权限不是grid:asmadmin、OCR/Voting Disk 所在磁盘未被识别 - 此时别急着重启整个集群,先手动跑一遍磁盘扫描:
udevadm trigger+ls -l /dev/raw/确认设备存在,再试crsctl start crs
为什么 crond 会被牵连?它其实只是背锅侠
标题里提到 crond,但它和 RAC 启动挂起基本无关——除非你误把 GI 自动启动脚本加进了 crontab,或者 crond 自身崩溃导致系统级定时任务紊乱(极罕见)。
-
crond不参与 CRS 启动流程;ohasd是由内核 init(或/etc/init.d/init.ohasd)直接 fork 的,和 cron 完全解耦 - 如果你在
ohasd.log或syslog里看到crond报错,大概率是时间不同步触发的连锁反应:CTSSD 启动失败 → OCR 读取异常 →crsd拒绝上线 → 整个集群资源调度停滞,而某些 DBA 脚本又依赖 cron 定时调用crsctl,于是“看起来像 crond 搞的鬼” - 真正要盯的是
ctssd状态:crsctl check ctss,若显示Observer mode是正常(用了 NTP),但若报CRS-47008: CTSS is in shut down state,就得先修时间同步服务
最常被忽略的一点:Oracle 11.2.0.4 的 ohasd 启动超时阈值是硬编码的 5 分钟,它不会自动重试。所以一旦卡住,必须人工干预——删管道、查磁盘、核对权限,三步做完再等它自己跑起来,而不是反复 start crs。










