CRS-4124 Oracle High Availability Services startup failed

APPLIES TO

Operating System - Oracle Linux Server 7.9
Oracle Database - Enterprise Edition - Version 11.2.0.3.0 - 11.2.0.4.0
Oracle Grid Infrastructure - Version 11.2.0.2 - 11.2.0.4.0

SYMPTOMS

When installing the GI software and executing root.sh, an error occurs:

CRS-4124: Oracle High Availability Services startup failed.
CRS-4000: Command Start failed, or completed with errors.
ohasd failed to start: Inappropriate ioctl for device
ohasd failed to start at /oracle/app/product/grid/crs/install/rootcrs.pl line 443.

or

ohasd failed to start
Failed to start the Clusterware. Last 20 lines of the alert log follow:
2026-05-07 12:00:13.115:
[client(5943)]CRS-2101:The OLR was formatted using version 3.
2026-05-07 12:00:16.387:
[client(5973)]CRS-1001:The OCR was formatted using version 3.

ohasd failed to start at /u01/app/11.2.0/grid/crs/install/roothas.pl line 377, <ALERTLOG> line 4.
/u01/app/11.2.0/grid/perl/bin/perl -I/u01/app/11.2.0/grid/perl/lib -I/u01/app/11.2.0/grid/crs/install /u01/app/11.2.0/grid/crs/install/roothas.pl execution failed

CAUSE

It is known that OL7 expects to run processes and restart them using systemd instead of initd, but root.sh is currently unable to handle this issue.

・ Install of Clusterware fails while running root.sh on OL7 - ohasd fails to start (Doc ID 1959008.1).pdf |

SOLUTION

  1. Execute the script to roll back the root.sh operation
# for rac
~]# $<GRID_HOME>/crs/install/rootcrs.pl -deconfig -force -verbose

# for si
~]# $<GRID_HOME>/crs/install/roothas.pl -deconfig -force -verbose
  1. Open two windows, one dd the npohasd, and the other executes root.sh.
~]# while true; do if test -e /var/tmp/.oracle/npohasd; then echo exist; dd if=/var/tmp/.oracle/npohasd of=/dev/null bs=1024 count=1; else echo noexist; sleep 1; fi; done
~]# $<GRID_HOME>/root.sh
  1. After installing GI, create the ohas.service service to enable CRS to start automatically when the server restarts
~]# cat > /etc/systemd/system/oracle-ohasd.service << EOF
# Oracle OHASD startup

[Unit]
Description=Oracle High Availability Services
After=syslog.target

[Service]
ExecStart=/etc/init.d/init.ohasd run > /dev/null 2>&1 < /dev/null
Type=simple
Restart=always

[Install]
WantedBy=multi-user.target
EOF

~]# systemctl daemon-reload
~]# systemctl enable oracle-ohasd.service --now