問題
Oracle Real Application Clusters (RAC) サーバーは、CentOS/RHEL 7 上で実行され、ASMLib で管理された iSCSI マルチパス ディスクを利用します。サーバーの再起動時に、Oracle ASMLib ディスクが起動時に自動的に検出されず、Oracle Cluster Ready Services (CRS) の起動に失敗します。ただし、サーバーの再起動直後に oracleasm scandisks コマンドを手動で実行すると、ASM ディスクは正しく検出されます。
以下は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 ...
解決策
システム ログ (/var/log/messages) 内のシステム起動メッセージを確認すると、次のことが明らかです。 iSCSI ターゲットへの少なくとも 1 つのパス。
– oracleasm.service の後に ohasd.service が開始されますが、ASM ディスクは検出されません。
ファイル /usr/lib/systemd/system/oracleasm.service を変更します 両方の「必須」を追加します ' および '後 ' iscsid.service multi-user.target のある行 iscsid.service および multipathd.service の完了後、および multi-user.target に到達した後に oracleasm.service が確実に開始されるようにします。例:
# 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 ...
ファイル /etc/systemd/system/oracle-ohasd.service を変更します – 「後」を追加 ' oracleasm.service の行 oracleasm.service がすべての iSCSI マルチパス ASM ディスクを正常に検出した後に、CRS ohasd.service が確実に開始されるようにします。例:
# 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 ...注意 :/etc/systemd/system/oracle-ohasd.service が利用できない場合は、同様の機能を提供する /etc/systemd/system/ohasd.service を参照してください。