El problema
Los servidores Oracle Real Application Clusters (RAC) se ejecutan en CentOS/RHEL 7 y utilizan discos iSCSI de múltiples rutas administrados por ASMLib. Al reiniciar el servidor, los discos de Oracle ASMLib no se detectan automáticamente en el momento del inicio, lo que provoca que Oracle Cluster Ready Services (CRS) no se inicie. Sin embargo, los discos ASM se detectan correctamente cuando se ejecuta manualmente el comando scandisks de oracleasm poco después de reiniciar el servidor.
La siguiente es la configuración de oracleasm
# cat /etc/sysconfig/oracleasm ... ORACLEASM_ENABLED=true ORACLEASM_UID=oracle ORACLEASM_GID=dba ORACLEASM_SCANBOOT=true ORACLEASM_SCANORDER="" ORACLEASM_SCANEXCLUDE="" ORACLEASM_USE_LOGICAL_BLOCK_SIZE=false ...
# cat -n /usr/lib/systemd/system/oracleasm.service 1 [Unit] 2 Description=Load oracleasm Modules 3 Requires=multipathd.service 4 After=multipathd.service ...
La solución
Al revisar los mensajes de inicio del sistema dentro del registro del sistema (/var/log/messages), es evidente que:
– oracleasm.service se inicia antes de que iscsid.service se complete, lo que hace que todos los objetivos iSCSI estén completamente disponibles/operativos y antes de que se agregue multipathd.service al menos una ruta a los objetivos iSCSI.
– ohasd.service se inicia después de oracleasm.service pero no se detectan discos ASM.
Modifique el archivo /usr/lib/systemd/system/oracleasm.service y añada tanto el 'Requires ' y 'Después ‘ líneas con iscsid.service multi-user.target para asegurarse de que oracleasm.service se inicie después de completar iscsid.service y multipathd.service y después de que se haya alcanzado el objetivo multiusuario, es decir:
# cat -n /usr/lib/systemd/system/oracleasm.service 1 [Unit] 2 Description=Load oracleasm Modules 3 Requires=multipathd.service iscsid.service multi-user.target 4 After=multipathd.service iscsid.service multi-user.target ...
Modifique el archivo /etc/systemd/system/oracle-ohasd.service – añadir el 'Después ' línea con oracleasm.service para asegurarse de que CRS ohasd.service se inicie después de que oracleasm.service haya descubierto correctamente todos los discos ASM de múltiples rutas iSCSI, es decir:
# cat -n /etc/systemd/system/oracle-ohasd.service ... 5 [Unit] 6 Description=Oracle High Availability Services 7 After=syslog.target network-online.target remote-fs.target oracleasm.service ...Nota :si /etc/systemd/system/oracle-ohasd.service no está disponible, consulte /etc/systemd/system/ohasd.service que proporciona una funcionalidad similar.