Le problème
Les serveurs Oracle Real Application Clusters (RAC) s'exécutent sur CentOS/RHEL 7 et utilisent des disques multipath iSCSI gérés par ASMLib. Lors du redémarrage du serveur, les disques Oracle ASMLib ne sont pas automatiquement découverts au démarrage, ce qui entraîne l'échec du démarrage d'Oracle Cluster Ready Services (CRS). Les disques ASM sont cependant correctement découverts lors de l'exécution manuelle de la commande oracleasm scandisks peu après le redémarrage du serveur.
Voici la configuration d'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 solution
En examinant les messages de démarrage du système dans le journal système (/var/log/messages), il est évident que :
– oracleasm.service démarre avant que iscsid.service ne termine, rendant toutes les cibles iSCSI entièrement disponibles/opérationnelles et avant que multipathd.service n'ajoute au moins un chemin vers les cibles iSCSI.
– ohasd.service démarre après oracleasm.service mais aucun disque ASM n'est découvert.
Modifier le fichier /usr/lib/systemd/system/oracleasm.service et ajoutez à la fois le 'Requires ' et 'Après ‘ lignes avec iscsid.service multi-user.target pour s'assurer que l'oracleasm.service démarre après l'achèvement de iscsid.service et multipathd.service et après que multi-user.target a été atteint, c'est-à-dire :
# 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 ...
Modifier le fichier /etc/systemd/system/oracle-ohasd.service – ajouter le 'Après ' ligne avec oracleasm.service pour s'assurer que le CRS ohasd.service démarre après qu'oracleasm.service ait découvert avec succès tous les disques ASM à chemins multiples iSCSI, c'est-à-dire :
# 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 ...Remarque :si /etc/systemd/system/oracle-ohasd.service n'est pas disponible, veuillez vous référer à /etc/systemd/system/ohasd.service qui fournit des fonctionnalités similaires.