Oracle 12c RAC GI启动卡在90%本质是ohasd被systemd超时终止或下游资源(如ora.asm、HAIP)启动失败;须查ohasd.log确认是否被kill,再通过oraagent_grid.log定位具体失败资源,并修改systemd的TimeoutStartSec=300。
oracle 12c rac 的 gi(grid infrastructure)启动慢,不是“慢”,而是某个环节卡死或反复失败——90% 的情况是 ohasd 进程被 systemd 强制杀掉,或下游资源(如 ora.asm、ora.gpnpd、ora.cluster_interconnect.haip)根本没起来。
查 ohasd.log 确认是不是被系统 kill 掉了
如果 crsctl start crs 卡住,但 ps -ef | grep ohasd 看不到进程,十有八九是 systemd 超时终止了它。RHEL 7+ 默认 TimeoutStartSec=90,而 12c GI 初始化 OCR、GPnP wallet、HAIP 分配等操作经常超 2 分钟。
- 执行
systemctl status ohasd,看输出里有没有timeout、start-limit-hit或status=203/EXEC - 检查
$GRID_HOME/log/末尾是否停在/ohasd/ohasd.log CLSU-00100或ORA-00600,但无后续错误——这是进程被杀后日志写不全的典型表现 - 别改 Oracle 参数,要改 systemd:编辑
/usr/lib/systemd/system/ohasd.service,在[Service]段加TimeoutStartSec=300和RestartSec=30,然后systemctl daemon-reload && systemctl restart ohasd
盯紧 oraagent_grid.log 找真正失败的资源
ohasd.log 只告诉你“等谁”,oraagent_grid.log 才告诉你“谁失败了”。这个日志位于 $GRID_HOME/log/,是定位根因的黄金线索。
- 搜索
failed、clean、restart循环:比如反复出现CRS-2674: Start of 'ora.asm' on '→ 直接去查' failed asmalert_.log - 看到
Failed to write to /u01/app/grid/12.1/gpnp/init/→ 权限问题:.pid /u01/app/grid/12.1/gpnp/init/目录属主不是grid,或不可写 - 大量
ORA-12547: TNS:lost contact或ORA-12170: TNS:Connect timeout→ora.asm或ora.cluster_interconnect.haip没就绪,底层私网不通或 ASM 磁盘不可达 - 出现
haip: Failed to initialize network interface→ HAIP 启动失败,检查ifconfig -a | grep -A5 haip、MTU 是否一致、交换机端口是否 up
OCR 磁盘 IO 慢会直接拖垮整个 GI 启动
OCR 不是普通文件,它是集群的“心跳数据库”。哪怕单次读取延迟高,crsd.bin 就会卡在 CRS-4124 或 CRS-2672 阶段,整套 GI 启动流程就挂起。
- 先定位 OCR 设备:
ocrconfig -showbackup或crsctl query css votedisk - 用
dd if=/dev/[设备名] of=/dev/null bs=1M count=1024 iflag=direct status=progress测顺序读:低于 30MB/s 就危险 - 用
iostat -x 1看%util是否长期 100%,r_await > 50ms表示 I/O 响应积压严重 - 高频真因不是磁盘坏,而是:未启用多路径(
mpathconf --show)、ASM 冗余设成NORMAL(OCR 必须EXTERNAL)、其他进程(如备份脚本)频繁访问 OCR 设备(lsof +D /dev/[设备名]可查)
别忽略 12c 特有的 HAIP 和 GPnP 依赖链
12c 默认用 HAIP 替代 GIPCD 管理私网,但 HAIP 启动失败不会报 GIPCD 错误;GPnP wallet 初始化失败也不会直接提示“wallet”,而是静默卡在依赖等待上。
- 验证 HAIP:运行
oifcfg getif看私网接口是否标记为cluster_interconnect,再ifconfig查是否有haip地址;若无,且日志里有CRS-2672: Attempting to start 'ora.cluster_interconnect.haip'后无后续,就是 HAIP 初始化失败 - 验证 GPnP:
ls -l $GRID_HOME/gpnp/profiles/peer/profile.xml,检查文件是否存在、权限是否正确、内容是否损坏(常见于手动修改或存储故障) - 注意 SELinux:OCR 设备路径若被 SELinux 拒绝访问,
ocrcheck会静默卡住 15 秒以上,但日志里几乎不报错
真正难搞的不是日志里明写的错误,而是那些不报错却让流程卡住的细节:udev 规则错配、SELinux 策略拒绝、HAIP 网卡 MTU 不一致、GPnP profile.xml 文件权限不对——这些都不会触发 CRASH,只会让 GI 在某个 90% 的位置无声停下。











