Il problema
I server Oracle Real Application Clusters (RAC) vengono eseguiti su CentOS/RHEL 7 e utilizzano dischi multipath iSCSI gestiti da ASMLib. Al riavvio del server, i dischi Oracle ASMLib non vengono rilevati automaticamente all'avvio, causando il mancato avvio di Oracle Cluster Ready Services (CRS). I dischi ASM, tuttavia, vengono rilevati correttamente quando si esegue manualmente il comando oracleasm scandisks subito dopo il riavvio del server.
Di seguito è riportata la configurazione dell'oraclea
# 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 soluzione
Esaminando i messaggi di avvio del sistema all'interno del registro di sistema (/var/log/messages), è evidente che:
– oracleasm.service viene avviato prima del completamento di iscsid.service rendendo tutti i target iSCSI completamente disponibili/operativi e prima che multipathd.service aggiunga almeno un percorso per le destinazioni iSCSI.
– ohasd.service viene avviato dopo oracleasm.service ma non vengono rilevati dischi ASM.
Modifica il file /usr/lib/systemd/system/oracleasm.service e aggiungi entrambi i "Richiede". ' e 'Dopo ' righe con iscsid.service multi-user.target per garantire che oracleasm.service inizi dopo il completamento di iscsid.service e multipathd.service e dopo che multi-user.target è stato raggiunto, ad esempio:
# 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 ...
Modifica il file /etc/systemd/system/oracle-ohasd.service – aggiungi "Dopo ' linea con oracleasm.service per garantire che il CRS ohasd.service venga avviato dopo che oracleasm.service ha rilevato correttamente tutti i dischi ASM multipath iSCSI, ad esempio:
# 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 :se /etc/systemd/system/oracle-ohasd.service non è disponibile, fare riferimento a /etc/systemd/system/ohasd.service che fornisce funzionalità simili.