Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Exadataでの計画メンテナンスのダウンタイムを最小化するためのRHPhelperの使用

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for oracle4engineer oracle4engineer PRO
April 20, 2026
16

 Exadataでの計画メンテナンスのダウンタイムを最小化するためのRHPhelperの使用

KB146644 Using RHPhelper to Minimize Downtime During Planned Maintenance on Exadata(旧 MOS Doc ID 2385790.1)を確認してまとめた資料です。
ExadataのGuest VM OSパッチ、Exadata Infrastructureメンテナンス適用時に内部で動いているrhphelperの説明をまとめました。

Avatar for oracle4engineer

oracle4engineer PRO

April 20, 2026

More Decks by oracle4engineer

Transcript

  1. Exadataでの計画メンテナンスのダウンタイムを最小化するためのRHPhelperの使用 アジェンダ • サマリー • 1. 目的と動作 • 2. サービス構成

    • 2.1 適切なドレインタイムアウト値の選択 • 2.2 RHPhelper属性 - 2.2.1 RHPhelper属性の確認 - 2.2.2 RHPhelper属性の設定 • 3. Exadataコンピュートノードのパッチ適用 • 4. トラブルシューティング 2 Copyright © 2026, Oracle and/or its affiliates
  2. サマリー (1) • RHPhelperとは? • Linux向けのOracle Clusterware機能 • ノードのシャットダウンや再起動時にアプリケーションのダウンタイムをゼロにすることを可能にする機能 •

    主な処理内容 • 他ノードへ移動可能なサービスを再配置し、すでに実行可能なすべてのノードで稼働しているため移動できないサービスを停止 • 再配置または停止されたサービスのセッションが、利用可能なインスタンスへ移行して完了するのを待機 • ノード上のすべてのデータベースインスタンスを正常にシャットダウン - Linuxのシャットダウン中にインスタンスが異常終了することによるインスタンスリカバリの影響を回避 • RHPhelperは、ドレインタイムアウトを用いてRACデータベースサービスを適切に停止し、クラスタ内の他ノードへ接続を移動 (接続プールや互換ドライバ(ONS FANまたはインバンド通知を使用)による接続の場合) • アプリケーションが適切にドレインされるよう構成する要件は? - 「Oracle® AI Database高可用性概要およびベスト・プラクティス」 • 40 アプリケーションの継続的な可用性の構成 レベル1: 基本的なアプリケーション高可用性の構成) 3 Copyright © 2026, Oracle and/or its affiliates
  3. サマリー (2) • RHPhelperの主なユースケース • 仮想化環境(dom0やKVMホストが再起動される際にゲストが自動的にセッションをドレインすることを保証) • ベアメタル環境 • Exadataゲストのパッチ適用時(RHPhelperが呼び出される)

    • ノードのシャットダウンや再起動の前に「srvctl stop instance」コマンドを使用してセッションをドレインすることが望ましい • srvctl stop instanceコマンドが使用されない場合でも、RHPhelperが呼び出され、アプリケーションへの影響をゼロに保つ • 詳細は以下 - 計画メンテナンスの場合のサーバー側操作 • 高可用性概要およびベスト・プラクティス - 40 アプリケーションの継続的な可用性の構成 レベル2: 計画メンテナンスに向けたアプリケーションの準備の構成 - サーバー側の計画メンテナンスのコマンド例 • 高可用性概要およびベスト・プラクティス - 41 アプリケーションの継続的な可用性についてのリファレンス - アプリケーション中断なしでのRACにおけるグレースフルスイッチオーバー(KB90229) • Graceful Application Switchover in RAC with No Application Interruption KB90229 4 Copyright © 2026, Oracle and/or its affiliates
  4. サマリー (4) • RHPhelperによるセッションドレインの利点を得てアプリケーションのダウンタイムを回避するには? • データベースへの接続にはデフォルト以外のサービスを使用 • サービスに少なくとも1つの優先ノードと1つの利用可能ノード(または別の優先ノード)を構成 • アプリケーションからの接続時の構成方法

    - クラスタからのFANイベントを受信できる接続プール(例:JDBC向けOracle UCP)を使用するよう構成 - ないしはインバンドのドレイン通知に応答可能に構成 • 高可用性概要およびベスト・プラクティス - 40 アプリケーションの継続的な可用性の構成 レベル1: 基本的なアプリケーション高可用性の構成 • RHPhelperを有効化する(以下のセクション2.2を参照) • 仮想化環境において、dom0やKVM Hostの再起動時(例:Exadata DBノードのパッチ適用時)に、 ゲストが自動的にセッションをドレインするための条件 • 上記の前提条件を満たし、domUまたはKVM GuestでRHPhelperが有効化されている必要がある 6 Copyright © 2026, Oracle and/or its affiliates
  5. 1. 目的と動作 (1) • 計画メンテナンス作業では、ノードの再起動やClusterwareの再起動が必要になる • これらの操作は、そのノード上で稼働するインスタンスに接続しているアプリケーションを中断させる可能性がある • RACサービスを使用した接続プールによる接続でない場合 •

    これらのセッションは、優先ノードに接続できない場合、データベース・サービスの利用可能ノードに接続される • 「ドレイン」とは? • プール内の接続を、あるインスタンスから他のインスタンスへグレースフルに移動させるプロセス • 接続は、アプリケーションがそれらを返却したとき(通常は接続をクローズしたとき)にプールによってドレインされる • その後の接続要求は、利用可能なインスタンスのいずれかによって処理される • ドレインを実施するためには? • 接続プールがFAN(Fast Application Notification)イベントをリッスンし、 • できるだけ早く他のインスタンスに対してプール接続を再作成し、 • ドレイン対象のインスタンスへの新規接続防止が必要 8 Copyright © 2026, Oracle and/or its affiliates
  6. 1. 目的と動作 (2) • RHPhelper: • ノード上のすべてのインスタンスへの接続のドレインを調整 • その後、設定可能な一定期間の後にすべてのインスタンスをIMMEDIATEモードで停止 •

    RHPhelperを使用する主な利点 • RHPhelperは、 Linuxの正常シャットダウンおよび起動時に実行されるスクリプトをインストールし、 ノードを再起動するだけで追加の操作なしに自動的に呼び出される • 再起動されたノード上でClusterwareがリスタートした後、 そのノードで稼働していたインスタンスとサービスは再び利用可能となり、 接続プールは再びそれらへの接続の作成を開始 9 Copyright © 2026, Oracle and/or its affiliates
  7. 1. 目的と動作 (3) • RHPhelperが起動後に使用するドレイン・タイムの決定方法 1. ノード上で実行されているすべてのサービスについて、drain_timeout値(設定されている場合)を確認し、 その中で最大の値を暫定的なドレインタイムアウト値として選択 2. 以下のうち大きい方を選択する:

    a. ノード上のすべてのサービスで見つかった最大のdrain_timeout b. OCRに保存されているDRAIN_TIMEOUT(ユーザーが以前に設定している場合、下記2.2.1を参照) c. いずれのサービスにもdrain_timeoutが設定されておらず、ユーザー指定のDRAIN_TIMEOUT属性も設定されていない場合は、 内部のデフォルトDRAIN_TIMEOUT値が選択(現在は180秒に設定) 3. 手順2で選択されたドレインタイムアウトがRHPhelperのMAX_DRAIN_TIMEOUT属性より大きい場合、 最終的なドレインタイムアウトはMAX_DRAIN_TIMEOUTに設定 - そうでない場合は、手順2の値がそのまま使用。 MAX_DRAIN_TIMEOUTのデフォルト値は300秒、ユーザーが指定することも可能 • デフォルトのDRAIN_TIMEOUTおよびMAX_DRAIN_TIMEOUT属性の詳細については以下を参照 10 Copyright © 2026, Oracle and/or its affiliates
  8. 1. 目的と動作 (4) • RHPhelperが起動されドレイン間隔の経過を待機している場合 • すべてのインスタンスで実行中のユーザーセッションを監視 • すべてのインスタンスのセッションがドレインタイムアウトの期限前に完了した場合 •

    RHPhelperはIMMEDIATEモードでデータベースを停止 • 完全なドレインタイムアウトの経過を待つ必要なし • ドレイン期間中は対象ノードへの新規接続は許可されない • 代わりに他ノード上の利用可能または優先インスタンスへ接続される • ドレインタイムアウトが経過した場合、 • RHPhelperはすべてのインスタンスをIMMEDIATEモードで停止 - ノード上の一部のインスタンスにまだセッションが接続されていても停止される • これらのセッションは終了されるため、長時間実行されるトランザクションに影響を与える可能性がある - この影響は多くの場合、Oracle Application Continuityを使用することで軽減可能 Application Continuityの詳細については、Oracle RACのドキュメントを参照 11 Copyright © 2026, Oracle and/or its affiliates
  9. 2. サービス構成 • サービスにdrain_timeout属性を設定することを強く推奨(GI 12.2以降で利用可能) • RHPhelperはこの属性を使用して、ノード上のインスタンスを停止する前にどれだけ接続をドレインするかを判断 • サービスにdrain_timeout属性を設定することで、サービスが手動で停止された場合にもドレインが実行されることを保証 •

    drain_timeoutを設定してサービスを作成または変更する方法 • サービス追加時にdrain_timeoutを設定する場合: - srvctl add service -db <DB_NAME> -service <SERVICE_NAME> -r <hostname1,hostname2> -drain_timeout 120 -stopoption immediate • drain_timeoutが120秒に設定されたサービスが作成され、タイムアウト期間後に残っているセッションは即座に切断 • 既存サービスを変更してdrain_timeout属性を追加する場合: - srvctl modify service -db <DB_NAME> -service <SERVICE_NAME> -drain_timeout 120 -stopoption immediate • 詳細はOracle Real Application Clustersドキュメントのsrvctlリファレンスを参照 • サービスにdrain_timeout属性を設定していない場合や、バージョンが12.2未満の場合、RHPhelperはデフォルトのドレインタイムアウト を使用(内部的なデフォルト180秒) 12 Copyright © 2026, Oracle and/or its affiliates
  10. デフォルトはサービスに明示的な Drain timeout: は設定されていない [oracle@wasabi-isfff1 ~]$ srvctl config service -db

    DB0930_rhv_kix -verbose Service name: DB0930_PDB1.paas.oracle.com Server pool: Cardinality: 2 Service role: PRIMARY Management policy: AUTOMATIC DTP transaction: false AQ HA notifications: false Global: false Commit Outcome: false Failover type: Failover method: Failover retries: Failover delay: Failover restore: NONE Connection Load Balancing Goal: LONG Runtime Load Balancing Goal: NONE TAF policy specification: NONE Edition: Pluggable database name: PDB1 Hub service: Maximum lag time: ANY SQL Translation Profile: Retention: 86400 seconds Replay Initiation Time: 300 seconds Drain timeout: Stop option: Session State Consistency: DYNAMIC GSM Flags: 0 Service is enabled Preferred instances: DB09301,DB09302 Available instances: CSS critical: no Service uses Java: false [oracle@wasabi-isfff1 ~]$ srvctl config service -db DB0930_rhv_kix -verbose | grep -i drain Drain timeout: [oracle@wasabi-isfff1 ~]$ 2. サービス構成 Copyright © 2026, Oracle and/or its affiliates 13
  11. 2.1 適切なドレインタイムアウト値の選択 • ドレインタイムアウト値の選択:以下を考慮 • アプリケーションがノード上の接続をプールに返却するまでにかかる時間 • 長時間実行される接続が、中断されるまでどれだけ待機できるかに依存 • 妥当なタイムアウト値は?

    • すべての接続がプールに返却され、他の利用可能ノードで再確立されるのに必要な時間よりも少し長め(およそ1分程度)に 設定すること • 長時間実行されるトランザクションは、計画メンテナンスが無期限に遅延しないよう、ドレインタイムアウト後に中断される • 最適な判断方法:サービスを手動で停止し、すべてのセッションが他のインスタンスへドレインされるまでの時間を確認する • この時間は、通常OLTPワークロードを処理するサービスでは、5分未満 • 特定のサービスに対してdrain_timeout属性を設定し、それらのサービスに対する計画メンテナンス操作で構成されたドレインタイムア ウト値が適用されるようにすることが望ましい場合がある • 個別にdrain_timeout属性を設定する必要がない場合は、RHPhelperの組み込みドレインタイムアウト(180秒)を使用 • ないしはRHPhelperのデフォルトドレインタイムアウトをワークロードに適した値に設定することも可能(以下参照)。 • 長時間実行されるバッチジョブについて • 計画メンテナンスの前に停止しておくことで中断を防ぐ • ないしは長時間接続の中断を回避するためにApplication Continuityの使用を検討 14 Copyright © 2026, Oracle and/or its affiliates
  12. 2.2 RHPhelper属性 (1) • RHPhelperの属性(永続化のためOCR内のキーとして保存) • ENABLED: • RHPhelperが起動時にインスタンスのドレインおよび停止を実行するかどうかを制御 •

    ENABLED=trueの場合、RHPhelperは起動時に動作し、falseの場合は起動されても何も実行しない • DRAIN_TIMEOUT: • インスタンス停止前に使用されるデフォルトのドレイン間隔(秒単位)(多くの場合、180秒が妥当な値) • ノード上のいずれのサービスにもドレインタイムアウトが設定されていない場合、この値が使用 • MAX_DRAIN_TIMEOUT: • サービスにより大きなドレインタイムアウト値が設定されている場合でも、RHPhelperが使用するドレインタイムアウトの最大値 (デフォルトは300秒) 15 Copyright © 2026, Oracle and/or its affiliates
  13. 2.2 RHPhelper属性 (2) • 注意 • MAX_DRAIN_TIMEOUT: - oracle-rhphelperDrain.service内のsystemdパラメータ「TimeoutStopSec」より大きく設定することは不可能(すべてのノードでこのタイムアウトを 手動で増やさない限り)例:

    • Type=oneshot • RemainAfterExit=true • ExecStop=/etc/init.d/rhphelper_drain_initd stop • TimeoutStopSec=60min • この値を増やす場合、停止を待機している下位サービスに影響を与える可能性があるため、注意が必要 • インストール後、RHPhelperの属性を有効化および設定が必要 • GIホームパスにORACLE_HOMEを設定 • GIホームの所有者(通常はoracleですが、gridなどのロール分離環境では別ユーザーの場合もある)として次ページ以降のコマ ンドを実行 16 Copyright © 2026, Oracle and/or its affiliates
  14. /etc/systemd/system/oracle-rhphelperDrain.service [grid@jiro-1koqp1 ~]$ cat /etc/systemd/system/oracle-rhphelperDrain.service # Copyright (c) 2016, 2021,

    Oracle and/or its affiliates. # # Oracle rhphelper drain feature [Unit] Description=RHPHelper Drain Service Wants=oracle-ohasd.service After=oracle-ohasd.service ohasd.service [Service] Type=oneshot RemainAfterExit=true ExecStop=/etc/init.d/rhphelper_drain_initd stop TimeoutStopSec=60min [Install] WantedBy=multi-user.target [grid@jiro-1koqp1 ~]$ 2.2 RHPhelper属性 (3) Copyright © 2026, Oracle and/or its affiliates 17
  15. 2.2.1 RHPhelper属性の確認 • Grid Infrastructure 26ai以降(すべてのLinuxシステム) • RHPhelperのデフォルト値を確認するためのcrsctlコマンドが提供: - crsctl

    set crs drain • 現在の設定は以下のコマンドで確認: - $ crsctl get crs drain • 出力例: - enable = FALSE draintimeout = 180 maxdraintimeout = 300 • Grid Infrastructure 19c(Exadataシステムのみ) • RHPhelperのドレイン属性を照会するには、以下のコマンドを使用します: - $GI_HOME/srvm/admin/rhphelper $GI_HOME -queryDrainAttributes • 例: - /u01/app/19.0.0.0/grid/srvm/admin/rhphelper /u01/app/19.0.0.0/grid 19.0.0.0.0 -queryDrainAttributes drain attributes are: ENABLE=true:DRAIN_TIMEOUT=180:MAX_DRAIN_TIMEOUT=300 18 Copyright © 2026, Oracle and/or its affiliates
  16. 26ai [grid@goro-0lgh51 ~]$ crsctl get crs drain enable = TRUE

    draintimeout = 180 maxdraintimeout = 300 [grid@goro-0lgh51 ~]$ 19c [grid@ichiro-gsb6v1 ~]$ /u01/app/19.0.0.0/grid/srvm/admin/rhphelper /u01/app/19.0.0.0/grid 19.0.0.0.0 -queryDrainAttributes ENABLE=true DRAIN_TIMEOUT=180 DRAIN_TIMEOUT_SOURCE=DEFAULT_SETTING ★ MAX_DRAIN_TIMEOUT=300 MAX_DRAIN_TIMEOUT_SOURCE=DEFAULT_SETTING <HLP_ERES>0</HLP_ERES> [grid@ichiro-gsb6v1 ~]$ 26aiでも同じコマンドも使える [grid@goro-0lgh51 ~]$ /u01/app/23.0.0.0/grid/srvm/admin/rhphelper /u01/app/23.0.0.0/grid 23.0.0.0.0 -queryDrainAttributes ENABLE=TRUE DRAIN_TIMEOUT=180 DRAIN_TIMEOUT_SOURCE=OCRKEYS ★デフォルトから変更すると、OCRKEYSになる MAX_DRAIN_TIMEOUT=300 MAX_DRAIN_TIMEOUT_SOURCE=OCRKEYS <HLP_ERES>0</HLP_ERES> [grid@goro-0lgh51 ~]$ 2.2.1 RHPhelper属性の確認 Copyright © 2026, Oracle and/or its affiliates 19
  17. 2.2.2 RHPhelper属性の設定 • Oracle Grid Infrastructure 23ai以降(すべてのLinuxシステム) • GIバージョン23ai以降では、RHPhelperを構成するためのcrsctlコマンド(crsctl set

    crs drain)が提供。例: • $ crsctl set crs drain enable true draintimeout 120 • Oracle Grid Infrastructure 19c(Exadataシステムのみ) • RHPhelper属性を設定するコマンド構文: - $GI_HOME/srvm/admin/rhphelper $GI_HOME <VERSION> -setDrainAttributes ENABLE=true DRAIN_TIMEOUT=<秒 数> MAX_DRAIN_TIMEOUT=<秒数> - 19.Xの場合、 <VERSION>値は19.0.0.0.0 • RHPhelperを有効化し、内部デフォルトまたはサービスレベルで設定されたdrain_timeoutを使用する場合: - $ /u01/app/19.0.0.0/grid/srvm/admin/rhphelper /u01/app/19.0.0.0/grid 19.0.0.0.0 -setDrainAttributes ENABLE=true • RHPhelperを無効化する場合: - $ /u01/app/19.0.0.0/grid/srvm/admin/rhphelper /u01/app/19.0.0.0/grid 19.0.0.0.0 -setDrainAttributes ENABLE=false • RHPhelper属性のドレインタイムアウト値を設定する場合: - $ /u01/app/19.0.0.0/grid/srvm/admin/rhphelper /u01/app/19.0.0.0/grid 19.0.0.0.0 -setDrainAttributes ENABLE=true DRAIN_TIMEOUT=180 MAX_DRAIN_TIMEOUT=300 20 Copyright © 2026, Oracle and/or its affiliates
  18. 26aiでの属性変更 [grid@goro-0lgh51 ~]$ crsctl get crs drain enable = TRUE

    draintimeout = 180 maxdraintimeout = 300 [grid@goro-0lgh51 ~]$ [grid@goro-0lgh51 ~]$ crsctl set crs drain enable true draintimeout 120 [grid@goro-0lgh51 ~]$ crsctl get crs drain enable = true draintimeout = 120 maxdraintimeout = 300 [grid@goro-0lgh51 ~]$ [grid@goro-0lgh51 ~]$ [grid@goro-0lgh51 ~]$ crsctl set crs drain enable true draintimeout 180 [grid@goro-0lgh51 ~]$ crsctl get crs drain enable = true draintimeout = 180 maxdraintimeout = 300 [grid@goro-0lgh51 ~]$ 2.2.2 RHPhelper属性の設定 Copyright © 2026, Oracle and/or its affiliates 21
  19. 19cでの属性変更 [grid@ichiro-gsb6v1 ~]$ /u01/app/19.0.0.0/grid/srvm/admin/rhphelper /u01/app/19.0.0.0/grid 19.0.0.0.0 -queryDrainAttributes ENABLE=true DRAIN_TIMEOUT=180 DRAIN_TIMEOUT_SOURCE=DEFAULT_SETTING

    MAX_DRAIN_TIMEOUT=300 MAX_DRAIN_TIMEOUT_SOURCE=DEFAULT_SETTING <HLP_ERES>0</HLP_ERES> [grid@ichiro-gsb6v1 ~]$ [grid@ichiro-gsb6v1 ~]$ [grid@ichiro-gsb6v1 ~]$ /u01/app/19.0.0.0/grid/srvm/admin/rhphelper /u01/app/19.0.0.0/grid 19.0.0.0.0 -setDrainAttributes ENABLE=true <HLP_ERES>0</HLP_ERES> [grid@ichiro-gsb6v1 ~]$ /u01/app/19.0.0.0/grid/srvm/admin/rhphelper /u01/app/19.0.0.0/grid 19.0.0.0.0 -queryDrainAttributes ENABLE=true DRAIN_TIMEOUT=180 DRAIN_TIMEOUT_SOURCE=DEFAULT_SETTING MAX_DRAIN_TIMEOUT=300 MAX_DRAIN_TIMEOUT_SOURCE=DEFAULT_SETTING <HLP_ERES>0</HLP_ERES> [grid@ichiro-gsb6v1 ~]$ [grid@ichiro-gsb6v1 ~]$ /u01/app/19.0.0.0/grid/srvm/admin/rhphelper /u01/app/19.0.0.0/grid 19.0.0.0.0 -setDrainAttributes ENABLE=false <HLP_ERES>0</HLP_ERES> [grid@ichiro-gsb6v1 ~]$ /u01/app/19.0.0.0/grid/srvm/admin/rhphelper /u01/app/19.0.0.0/grid 19.0.0.0.0 -queryDrainAttributes ENABLE=false <HLP_ERES>0</HLP_ERES> [grid@ichiro-gsb6v1 ~]$ 2.2.2 RHPhelper属性の設定 Copyright © 2026, Oracle and/or its affiliates 22
  20. 19cでの属性変更 [grid@ichiro-gsb6v1 ~]$ /u01/app/19.0.0.0/grid/srvm/admin/rhphelper /u01/app/19.0.0.0/grid 19.0.0.0.0 -setDrainAttributes ENABLE=true DRAIN_TIMEOUT=120 MAX_DRAIN_TIMEOUT=240

    <HLP_ERES>0</HLP_ERES> [grid@ichiro-gsb6v1 ~]$ /u01/app/19.0.0.0/grid/srvm/admin/rhphelper /u01/app/19.0.0.0/grid 19.0.0.0.0 -queryDrainAttributes ENABLE=true DRAIN_TIMEOUT=120 DRAIN_TIMEOUT_SOURCE=OCRKEYS MAX_DRAIN_TIMEOUT=240 MAX_DRAIN_TIMEOUT_SOURCE=OCRKEYS <HLP_ERES>0</HLP_ERES> [grid@ichiro-gsb6v1 ~]$ [grid@ichiro-gsb6v1 ~]$ /u01/app/19.0.0.0/grid/srvm/admin/rhphelper /u01/app/19.0.0.0/grid 19.0.0.0.0 -setDrainAttributes ENABLE=true DRAIN_TIMEOUT=180 MAX_DRAIN_TIMEOUT=300 <HLP_ERES>0</HLP_ERES> [grid@ichiro-gsb6v1 ~]$ /u01/app/19.0.0.0/grid/srvm/admin/rhphelper /u01/app/19.0.0.0/grid 19.0.0.0.0 -queryDrainAttributes ENABLE=true DRAIN_TIMEOUT=180 DRAIN_TIMEOUT_SOURCE=OCRKEYS MAX_DRAIN_TIMEOUT=300 MAX_DRAIN_TIMEOUT_SOURCE=OCRKEYS <HLP_ERES>0</HLP_ERES> [grid@ichiro-gsb6v1 ~]$ 2.2.2 RHPhelper属性の設定 Copyright © 2026, Oracle and/or its affiliates 23
  21. 2.2.2 RHPhelper属性の設定 • 注意: • カスタムのドレインタイムアウト値を設定する場合は、3つの属性値すべてを指定する必要がある • RHPhelperの有効化または無効化のみを行う場合は、「enable」属性だけを設定すればok • DRAIN_TIMEOUTのデフォルト値である180秒が十分かどうかは、お客様環境内で検証が必要

    • OVM環境では、MAX_DRAIN_TIMEOUTをデフォルト値の300秒より大きく変更することは推奨されない - 想定されるタイムアウト期間より前に接続が切断される可能性があるため • RHPhelperの属性を設定した後は、属性を確認して意図した通りに設定されていることを確認すること 24 Copyright © 2026, Oracle and/or its affiliates
  22. 3. Exadataコンピュートノードのパッチ適用 • RHPhelperがインストールされ、GIホームのバージョンが18.3以上の場合、 Exadataのコンピュートノード向けpatchmgrコマンドは内部的に以下のようにRHPhelperを利用 • RHPhelperが存在するが未構成の場合: - ローリングモードで実行されたExadata patchmgrは、自動的にRHPhelperを構成してセッションのドレインに使用

    - パッチ適用後も、手動で無効化しない限りRHPhelperは有効のまま • RHPhelperが存在し有効化されているが、一部の属性がデフォルトのままの場合★: - ローリングモードで実行されたExadataパッチマネージャは、現在の設定でRHPhelperを自動的に使用してセッションをドレイン • RHPhelperが存在するが無効化されている場合: - RHPhelperを使用しない意図があると見なされるため、Exadataパッチマネージャは自動的に有効化しない • この場合、アプリケーションの中断を回避するために、ユーザー側でセッションドレインを管理が必要 • (またはApplication Continuityを使用し、ローリングパッチを実施) 25 Copyright © 2026, Oracle and/or its affiliates
  23. 4. トラブルシューティング • RHPhelperは起動時に診断用トレースファイルを作成 • $ORACLE_BASE/crsdata/ホスト名/rhpディレクトリ • サポートへ問い合わせる際には、関連するトレースを提供 • /var/log/messagesファイルを確認し、「rhphelper」で検索することで、RHPhelperが起動されたタイミングを確認可能

    • 以下のメッセージが表示: • Jul 24 10:14:12 <hostname> logger: Stopping rhphelper_drain_initd... Jul 24 10:14:12 <hostname> logger: setting environment variables... Jul 24 10:14:12 <hostname> logger: Calling stop instance command at: Tue Jul 24 10:14:12 PDT 2018. 26 Copyright © 2026, Oracle and/or its affiliates
  24. エラーログのディレクトリ [grid@goro-0lgh51 rhp]$ ls -lart total 232 drwxr-xr-x. 2 grid

    oinstall 90 Mar 18 05:59 conf drwxrwxr-x. 28 grid oinstall 4096 Mar 18 06:03 .. -rw-r--r--. 1 root root 0 Mar 18 06:03 executeRHPDrain.trc.lck -rw-r--r--. 1 root root 18615 Mar 18 06:03 executeRHPDrain.trc -rw-r--r--. 1 root root 0 Apr 15 07:49 rhphelper_updateDbmpInfra.trc_20260415074940.lck -rw-r--r--. 1 root root 38393 Apr 15 07:49 rhphelper_updateDbmpInfra.trc_20260415074940 -rw-r--r--. 1 grid oinstall 0 Apr 15 07:49 rhphelper.trc_20260415074940.lck -rw-r--r--. 1 grid oinstall 167560 Apr 15 07:51 rhphelper.trc_20260415074940 drwxr-xr-x. 2 grid oinstall 23 Apr 20 03:21 logs drwxrwxr-x. 4 grid oinstall 4096 Apr 20 05:15 . [grid@goro-0lgh51 rhp]$ pwd /u01/app/grid/crsdata/goro-0lgh51/rhp [grid@goro-0lgh51 rhp]$ 4. トラブルシューティング Copyright © 2026, Oracle and/or its affiliates 27
  25. オンプレミスExadata VMで、dom0 ESS適用時のdomUの/var/log/messages Jun 8 17:24:55 exavm36 rhphelper_drain_initd: <HLP_ERES>0</HLP_ERES> Jun

    8 17:24:55 exavm36 root: stop instance completes at Wed Jun 8 17:24:55 JST 2022 Jun 8 17:24:55 exavm36 root: Completes stopping rhphelper_drain_initd... Jun 8 17:24:55 exavm36 systemd: Stopped RHPHelper Drain Service. Jun 8 17:24:55 exavm36 systemd: Stopping (null)... Jun 8 17:24:55 exavm36 systemd: Stopping Oracle High Availability Services... Jun 8 17:24:56 exavm36 ohasd: Stopping Oracle Clusterware stack Jun 8 17:24:56 exavm36 root: Starting execution of Oracle Clusterware init.ohasd 4. トラブルシューティング Copyright © 2026, Oracle and/or its affiliates 28
  26. オンプレミスExadata VMで、dom0 ESS適用時のdomUのDBのalert.log 2022-06-08T17:23:12.811527+09:00 Shutting down instance (immediate) (OS id:

    186123) 2022-06-08T17:23:15.871347+09:00 Stopping background process SMCO 2022-06-08T17:23:19.698443+09:00 Shutting down instance: further logons disabled 2022-06-08T17:23:20.292572+09:00 Stopping background process CJQ0 2022-06-08T17:23:21.208412+09:00 Process termination requested for pid 187092 [source = rdbms], [info = 2] [request issued by pid: 187066, uid: 1001] 2022-06-08T17:23:21.385005+09:00 Process termination requested for pid 188052 [source = rdbms], [info = 2] [request issued by pid: 187066, uid: 1001] 2022-06-08T17:23:21.665593+09:00 Stopping background process MMNL 2022-06-08T17:23:27.030843+09:00 OS process OFSD (ospid 182999) idle for 30 seconds, exiting 2022-06-08T17:23:33.902043+09:00 Background process MMNL not dead after 10 seconds Killing background process MMNL 2022-06-08T17:23:33.924637+09:00 Process termination requested for pid 183129 [source = rdbms], [info = 2] [request issued by pid: 186123, uid: 1001] 2022-06-08T17:23:34.910726+09:00 Stopping background process MMON 2022-06-08T17:23:43.754528+09:00 alter pluggable database all close immediate 2022-06-08T17:23:44.256359+09:00 PDB5(3):JIT: pid 186123 requesting stop 2022-06-08T17:23:44.838665+09:00 PDB5(3):Buffer Cache flush deferred for PDB 3 Pluggable database PDB5 closed Completed: alter pluggable database all close immediate 2022-06-08T17:24:25.697067+09:00 alter pluggable database all close immediate 4. トラブルシューティング Copyright © 2026, Oracle and/or its affiliates 29
  27. ExaDB-D VM の Rebootボタンを押してみたときの/var/log/messages [root@kara-vpvao2 ~]# less /var/log/messages 2024-10-10T07:57:10.172052+00:00 kara-vpvao2

    systemd-logind:info: Power key pressed. 2024-10-10T07:57:10.172485+00:00 kara-vpvao2 systemd-logind:info: Powering Off... 2024-10-10T07:57:10.172733+00:00 kara-vpvao2 systemd-logind:notice: System is powering down. 2024-10-10T07:57:10.372812+00:00 kara-vpvao2 systemd:info: Stopping RHPHelper Drain Service... 2024-10-10T07:57:10.564257+00:00 kara-vpvao2 root:info: Stopping rhphelper_drain_initd... 4. トラブルシューティング Copyright © 2026, Oracle and/or its affiliates 30
  28. ExaDB-D VM の Rebootボタンを押してみたときのDBのalert.log rhphelpeでdrainしたので、shutdown immediate で停止 [root@kara-vpvao2 ~]# less

    /u02/app/oracle/diag/rdbms/db1017_9k6_kix/DB1017_9k6_k2/trace/alert_DB1017_9k6_k2.log 2024-10-10T07:57:10.232472+00:00 Process termination requested for pid 311266 [source = unknown], [info = 0] [request issued by pid: 1, uid: 0] 2024-10-10T07:57:10.249261+00:00 Process termination requested for pid 277701 [source = unknown], [info = 520] [request issued by pid: 1, uid: 0] 2024-10-10T07:57:18.370122+00:00 Shutting down ORACLE instance (immediate) (OS id: 107120) 2024-10-10T07:57:18.370406+00:00 Shutdown is initiated by oraagent.bin@kara-vpvao2 (TNS V1-V3). 2024-10-10T07:57:20.354602+00:00 Stopping background process SMCO Shutting down instance: further logons disabled 2024-10-10T07:57:20.541553+00:00 Stopping background process CJQ0 2024-10-10T07:57:25.575064+00:00 Stopping background process MMNL Stopping background process MMON 2024-10-10T07:57:27.816932+00:00 alter pluggable database all close immediate Completed: alter pluggable database all close immediate 2024-10-10T07:57:27.852756+00:00 PDB$SEED(2):Pluggable database PDB$SEED closing PDB$SEED(2):JIT: pid 107120 requesting stop 2024-10-10T07:57:33.023126+00:00 PDB$SEED(2):Buffer Cache flush deferred for PDB 2 2024-10-10T07:57:33.106905+00:00 Stopping all emon processes Stopping EMNC License high water mark = 14 2024-10-10T07:57:33.195965+00:00 Dispatchers and shared servers shutdown 4. トラブルシューティング Copyright © 2026, Oracle and/or its affiliates 31
  29. 40 アプリケーションの継続的な可用性の構成 レベル1: 基本的なアプリケーション高可用性の構成 Oracle® AI Database高可用性概要およびベスト・プラクティス • アプリケーションがインスタンス、ノードまたはデータベースの障害に即座に対応して、障害が発生していないデータベー ス・インスタンスへの新しい接続を迅速に確立できる、高可用性のレベルを実装

    • アプリケーションHAレベル1では、計画外停止および計画停止の停止時間が最小限に抑えられる • こうしたメリットは、次の推奨事項がアプリケーション構成で確実に実装されるようにすることで得られる • 設計時のコード変更は不要 • レベル1を実装するステップの概要 • ステップ1: 高可用性データベース・サービスの構成 • ステップ2: 高可用性のための接続文字列の構成 • ステップ3: 高速アプリケーション通知の使用 • ステップ4: アプリケーションで再接続ロジックを実装するかどうかを開発者が決定 Copyright © 2026, Oracle and/or its affiliates 34
  30. 40 アプリケーションの継続的な可用性の構成 レベル1: 基本的なアプリケーション高可用性の構成 Oracle® AI Database高可用性概要およびベスト・プラクティス • ステップ1: 高可用性データベース・サービスの構成

    • 高可用性機能を使用するために、デフォルト以外のロールベースのデータベース・サービスを作成 • データベース・サービスとは、ワークロードを管理するための論理的な抽象化であり、同様のSLAやワークロードのタイプ(OLTPとバッ チなど)を共有するアプリケーションのグループ - データベース・サービスは、場所の透過性を提供し、基礎となるシステムの複雑な側面をクライアントから隠す • 高可用性機能を使用するために、アプリケーションはデフォルト以外のデータベース・サービスに接続する必要がある • 高可用性サービスの構成 - 高可用性機能を使用するために、デフォルト以外のロールベースのデータベース・サービスを作成 - サービスは、単一の優先インスタンスに接続するように構成することも、優先インスタンスが停止している場合には使用可能なインスタンスに接続 するように構成することも可能。 - クラスタの複数のインスタンスに接続して、すべてのインスタンスに作業を分散するようにサービスを構成することも可能 • 1つのインスタンスが停止している場合には、正常に稼働しているインスタンスに接続可能 - インスタンスのサブセットを「優先」として構成し、インスタンスの別のサブセットを「使用可能」として構成できる組合せも可能 • こうしたサブセットを使用すると、一部のインスタンス間で負荷を分散しながら、別のインスタンスからは作業を分離可能 (また、障害発生時に使用可能なインスタンスを確保可能) - Oracle Exadata Database Service on Dedicated InfrastructureとOracle Base Database • デフォルトのPDBまたはCDBサービスを使用しないこと • UIで提供される接続文字列内のサービスは、クライアント・アプリケーション接続用ではなく、管理用 • 「高可用性サービスの構成」内の推奨事項に従って、アプリケーション用のデータベース・サービスの作成が必要 Copyright © 2026, Oracle and/or its affiliates 35
  31. 40 アプリケーションの継続的な可用性の構成 レベル1: 基本的なアプリケーション高可用性の構成 Oracle® AI Database高可用性概要およびベスト・プラクティス • ステップ2: 高可用性のための接続文字列の構成

    • データベース・スイッチオーバーや別のサイトへのフェイルオーバーなどの様々なシナリオで適切な接続ができるように、ここに示す接 続文字列の構成を使用することを推奨 • 例1: Oracle RACプライマリ・データベースとの接続文字列、スタンバイなし • 例2: Oracle RACプライマリ・データベースおよびスタンバイ・データベースとの接続文字列 Alias = (DESCRIPTION = (CONNECT_TIMEOUT= 90)(RETRY_COUNT=20)(RETRY_DELAY=3)(TRANSPORT_CONNECT_TIMEOUT=1000ms) (ADDRESS_LIST = (LOAD_BALANCE=on) (ADDRESS = (PROTOCOL = TCP)(HOST=clu_site1-scan)(PORT=1521))) (CONNECT_DATA=(SERVICE_NAME = my_service))) Alias = (DESCRIPTION = (CONNECT_TIMEOUT= 90)(RETRY_COUNT=100)(RETRY_DELAY=3)(TRANSPORT_CONNECT_TIMEOUT=1000ms) (ADDRESS_LIST = (LOAD_BALANCE=on) (ADDRESS = (PROTOCOL = TCP)(HOST=clu_site1-scan)(PORT=1521))) (ADDRESS_LIST = (LOAD_BALANCE=on) (ADDRESS = (PROTOCOL = TCP)(HOST=clu_site2-scan)(PORT=1521))) (CONNECT_DATA=(SERVICE_NAME = my_service))) Copyright © 2026, Oracle and/or its affiliates 36
  32. 40 アプリケーションの継続的な可用性の構成 レベル1: 基本的なアプリケーション高可用性の構成 Oracle® AI Database高可用性概要およびベスト・プラクティス • ステップ3: 高速アプリケーション通知の使用

    • サービスで定期メンテナンスのためにドレインが必要な場合や計画外の障害(ノードやネットワークの停止など)が発生した場合 - アプリケーションは、別のインスタンスやサイトに接続を迅速に移動できるよう、リアルタイムで通知されることが必要 - これは、アプリケーションと接続プールに1つ以上のクラスタからイベント通知が届くようにすることができる、Oracleの高速アプリケーション通知(FAN) 機能を使用して実現される • Oracle JDBCドライバ(最新バージョンを推奨。Oracleリリース12.2より前ではありません)とともに、前述のステップ1と2での推奨され るサービスと接続文字列を使用している場合 - FANイベントを受信するための機能は自動的に有効になる • ONSポート(デフォルトでは6200)は、すべてのデータベース・サーバー、ファイアウォール、Active Data Guardノードでオープンしておく ことが必要 • FANの使用は必須ではないが、推奨 - 多くのタイプの計画外停止シナリオを検出でき、アプリケーションでこれらのシナリオに適切に対応して高可用性を維持できるようになるため • FANは、Oracle ClusterwareのOracle Notification Service (ONS)を使用して、クラスタからイベントを受信 - ONSでは、クライアントとサーバーの間でポートが使用可能になっている必要がある - 場合によっては、これには、すべてのデータベース・サーバー、ファイアウォール、Active Data Guardノードでファイアウォール・ポート(デフォルトでは 6200)を開くことが必要 Copyright © 2026, Oracle and/or its affiliates 37
  33. 40 アプリケーションの継続的な可用性の構成 レベル1: 基本的なアプリケーション高可用性の構成) Oracle® AI Database高可用性概要およびベスト・プラクティス • ステップ4: アプリケーションで再接続ロジックを実装するかどうかを開発者が決定

    • アプリケーションを、データベース・コール中に接続障害の例外とエラーを捕捉するように記述できる - これにより、続行が妥当な場合はそれらで新しい接続を取得し新しい作業を続行できるようにする • アプリケーションの続行が妥当かどうかと接続を失った後にどのように進めるかを判断するために、多くの事柄を考慮する必要があ りる - 「レベル3: 計画外および計画フェイルオーバーのアプリケーションからのマスクの構成」では、ACとTACを使用して透過的にアプリケーションから障害 をマスクするための堅牢なソリューションが掲載 Copyright © 2026, Oracle and/or its affiliates 38