MON_GET_HADR 表関数 - 高可用性災害時リカバリー (HADR) のモニター情報を返す

この関数は、高可用性災害時リカバリー (HADR) モニター情報を戻します。

許可

このルーチンを実行するには、以下のいずれかの権限が必要です。
  • ルーチンに対する EXECUTE 特権
  • DATAACCESS 権限
  • DBADM 権限
  • SQLADM 権限

デフォルトの PUBLIC 特権

なし

構文

Read syntax diagramSkip visual syntax diagramMON_GET_HADR(member)

スキーマは SYSPROC です。

ルーチン・パラメーター

member
メンバー番号を指定する、タイプ INTEGER の入力引数。 戻される行は、このメンバーによって処理されているログ・ストリームを表します。 現行のデータベース・メンバーには -1、すべてのアクティブ・データベース・メンバーには -2 を指定します。 NULL 値を指定すると、-1 が暗黙的に設定されます。

戻される情報

表 1. MON_GET_HADR で戻される情報
列名 データ・タイプ 説明
HADR_ROLE VARCHAR(13) hadr_role HADR の役割: モニター・エレメント
REPLAY_TYPE VARCHAR(9) replay_type - HADR レプリケーション・タイプ : モニター・エレメント
HADR_SYNCMODE VARCHAR(10) hadr_syncmode HADR 同期モード : モニター・エレメント
STANDBY_ID SMALLINT standby_id - スタンバイ ID : モニター・エレメント
LOG_STREAM_ID INTEGER log_stream_id - ログ・ストリーム ID : モニター・エレメント
HADR_STATE VARCHAR(23) hadr_state HADR の状態 : モニター・エレメント
HADR_FLAGS VARCHAR(512) hadr_flags - HADR フラグ : モニター・エレメント
PRIMARY_MEMBER_HOST VARCHAR(255) primary_member_host - 1 次メンバー・ホスト : モニター・エレメント
PRIMARY_INSTANCE VARCHAR(128) primary_instance - 1 次インスタンス : モニター・エレメント
PRIMARY_MEMBER SMALLINT primary_member - 1 次メンバー : モニター・エレメント
STANDBY_MEMBER_HOST VARCHAR(255) standby_member_host - スタンバイ・メンバー・ホスト名 : モニター・エレメント
STANDBY_INSTANCE VARCHAR(128) standby_instance - スタンバイ・インスタンス : モニター・エレメント
STANDBY_MEMBER SMALLINT standby_member - スタンバイ・メンバー : モニター・エレメント
HADR_CONNECT_STATUS VARCHAR(12) hadr_connect_status HADR 接続状況 : モニター・エレメント
HADR_CONNECT_STATUS_TIME TIMESTAMP hadr_connect_status_time - HADR 接続状況時間 : モニター・エレメント
HEARTBEAT_INTERVAL BIGINT heartbeat_interval - ハートビート・インターバル : モニター・エレメント
HADR_TIMEOUT BIGINT hadr_timeout HADR タイムアウト : モニター・エレメント
TIME_SINCE_LAST_RECV BIGINT time_since_last_recv - 最後にメッセージを受信してから経過した時間 : モニター・エレメント
PEER_WAIT_LIMIT BIGINT peer_wait_limit - ピア待機限度 : モニター・エレメント
LOG_HADR_WAIT_CUR BIGINT log_hadr_wait_cur - 現在のロガー待機時間 : モニター・エレメント
LOG_HADR_WAIT_TIME BIGINT log_hadr_wait_time - 合計ロガー待機時間 : モニター・エレメント
LOG_HADR_WAITS_TOTAL BIGINT log_hadr_waits_total - 合計ロガー待機イベント : モニター・エレメント
sock_send_buf_requested BIGINT sock_send_buf_requested - 要求されたソケット送信バッファー・サイズ : モニター・エレメント
SOCK_SEND_BUF_ACTUAL BIGINT sock_send_buf_actual - 実際のソケット送信バッファー・サイズ : モニター・エレメント
sock_recv_buf_requested BIGINT sock_recv_buf_requested - 要求されたソケット受信バッファー・サイズ : モニター・エレメント
SOCK_RECV_BUF_ACTUAL BIGINT sock_recv_buf_actual - 実際のソケット受信バッファー・サイズ : モニター・エレメント
PRIMARY_LOG_FILE VARCHAR(12) primary_log_file - 1 次ログ・ファイル : モニター・エレメント
PRIMARY_LOG_PAGE BIGINT primary_log_page - 1 次ログ・ページ : モニター・エレメント
PRIMARY_LOG_POS BIGINT primary_log_pos - 1 次ログ位置 : モニター・エレメント
PRIMARY_LOG_TIME TIMESTAMP primary_log_time - 1 次ログ時間 : モニター・エレメント
STANDBY_LOG_FILE VARCHAR(12) standby_log_file - スタンバイ・ログ・ファイル : モニター・エレメント
STANDBY_LOG_PAGE BIGINT standby_log_page - スタンバイ・ログ・ページ : モニター・エレメント
STANDBY_LOG_POS BIGINT standby_log_pos - スタンバイ・ログ位置 : モニター・エレメント
STANDBY_LOG_TIME TIMESTAMP standby_log_time - スタンバイ・ログ時間 : モニター・エレメント
HADR_LOG_GAP BIGINT hadr_log_gap HADR ログ・ギャップ : モニター・エレメント
STANDBY_REPLAY_LOG_FILE VARCHAR(12) standby_replay_log_file - スタンバイ適用ログ・ファイル : モニター・エレメント
standby_replay_log_page BIGINT standby_replay_log_page - スタンバイ適用ログ・ページ : モニター・エレメント
STANDBY_REPLAY_LOG_POS BIGINT standby_replay_log_pos - スタンバイ適用ログ位置 : モニター・エレメント
standby_replay_log_time TIMESTAMP standby_replay_log_time - スタンバイ適用ログ時間 : モニター・エレメント
standby_recv_replay_gap BIGINT standby_recv_replay_gap - スタンバイ受信/適用ギャップ : モニター・エレメント
STANDBY_REPLAY_DELAY BIGINT standby_replay_delay - スタンバイ適用遅延 : モニター・エレメント
STANDBY_RECV_BUF_SIZE BIGINT standby_recv_buf_size - スタンバイ受信バッファー・サイズ : モニター・エレメント
standby_recv_buf_percent DOUBLE standby_recv_buf_percent - スタンバイ受信バッファー・パーセンテージ : モニター・エレメント
STANDBY_SPOOL_LIMIT BIGINT standby_spool_limit - スタンバイ・スプール制限 : モニター・エレメント
STANDBY_SPOOL_PERCENT DOUBLE standby_spool_percent - スタンバイ・スプールのパーセンテージ : モニター・エレメント
PEER_WINDOW BIGINT peer_window - ピア・ウィンドウ : モニター・エレメント
PEER_WINDOW_END TIMESTAMP peer_window_end - ピア・ウィンドウ終了
takeover_app_remaining_primary BIGINT takeover_app_remaining_primary - 1 次に残留しているアプリケーション : モニター・エレメント
takeover_app_remaining_standby BIGINT takeover_app_remaining_standby - スタンバイに残留しているアプリケーション : モニター・エレメント
reads_on_standby_enabled CHAR(1) reads_on_standby_enabled - スタンバイでの読み取り可能 : モニター・エレメント
standby_replay_only_window_active CHAR(1) standby_replay_only_window_active - スタンバイのアクティブな適用専用ウィンドウ : モニター・エレメント
standby_replay_only_window_start TIMESTAMP standby_replay_only_window_start - 適用専用ウィンドウの開始時刻 : モニター・エレメント
standby_replay_only_window_tran_count BIGINT standby_replay_only_window_tran_count - 適用専用ウィンドウのトランザクション : モニター・エレメント
HEARTBEAT_MISSED INTEGER heartbeat_missed - 欠落ハートビート : モニター・エレメント
HEARTBEAT_EXPECTED INTEGER heartbeat_expected - 予期されるハートビート : モニター・エレメント
STANDBY_ERROR_TIME TIMESTAMP standby_error_time - スタンバイ・エラー時刻 : モニター・エレメント

使用上の注意

HADR pair view

一部のフィールドは、1 次またはスタンバイにのみ適用されます。 例えば、PEER_WAIT_LIMIT は 1 次にのみ適用され、STANDBY_RECV_BUF_SIZE、 STANDBY_SPOOL_LIMIT、 READS_ON_STANDBY_ENABLED はスタンバイにのみ適用されます。 この種の情報が報告されるとき、ローカル・データベースではなく、現在その役割にあるデータベースが使用されます (リモート・データベースの場合があります)。 例えば、スタンバイ・データベースで見られる PEER_WAIT_LIMIT は、(スタンバイが 1 次になるときだけ使用される) スタンバイ・データベースのローカル構成ではなく、1 次データベースで構成された値です。

Information about remote database

1 次とスタンバイは、ハートビート・メッセージを介してモニター情報を交換します。 そのため、リモート・データベースについての情報が少し古くなる可能性があります。 情報の適時性を推定するには、(表関数で報告される) ハートビート・インターバルを調べてください (ネットワーク待ち時間のためにさらに遅延が加わることがあります)。 アクティブ化以降、データベースが一度もそのパートナー・データベースに接続されていない場合、リモート・データベースについての情報は、「不明」を示す SQL NULL として戻されることがあります。

Log shipping channel end points
ログ配送チャネルのエンドポイントは、以下のように、ホスト、インスタンス、およびメンバーで一意的に識別されます。
  • 1 次側: PRIMARY_MEMBER_HOST、 PRIMARY_INSTANCE、 PRIMARY_MEMBER
  • スタンバイ側: STANDBY_MEMBER_HOST、 STANDBY_INSTANCE、 STANDBY_MEMBER
接続が確立されるまでは、リモート・エンドのエンドポイント情報が使用不可になる場合があります。 情報が使用不可のときは、ホストおよびインスタンスの名前として空ストリングが戻され、メンバー ID としてゼロが戻されます。 さらに、 Db2® Enterprise Server Edition 環境では、メンバー ID として常に 0 が返されます。
Note on unit of time duration

モニター表関数の規則に従い、MON_GET_HADR の時刻期間フィールドではすべて、ミリ秒が単位として使われます。 構成単位が秒である構成パラメーター (HADR_TIMEOUT、HADR_PEER_WINDOW など) を反映するフィールドの場合、MON_GET_HADR 表関数によって返される数値は、 db2 get/update db cfg コマンドで使用される数値、および SYSIBMADM.DBCFG 管理ビューまたは SYSPROC.DB_GET_CFG() 表関数。 例えば HADR_TIMEOUT 値が 60 秒である場合、MON_GET_HADR は 60000 を戻しますが、構成指向のインターフェースでは 60 が戻されます。 ミリ秒の数値を秒に変換するには、照会で column_name/1000 を使用してください。

Usage during takeover

テークオーバー中は、クライアントが 1 次データベースにもスタンバイ・データベースにも接続できない期間が発生する可能性があります。 テークオーバー中の推奨されるモニター方式は db2pd -hadr です。

列の順序とグループ:
  1. クラスター・レベルのサマリー: HADR_ROLE、REPLAY_TYPE、HADR_SYNCMODE
  2. ログ・ストリーム・レベルのサマリー: STANDBY_ID、LOG_STREAM_ID、HADR_STATE
  3. ログ配送チャネルのエンドポイント:
    1. 1 次側: PRIMARY_MEMBER_HOST、 PRIMARY_INSTANCE、 PRIMARY_MEMBER
    2. スタンバイ側: STANDBY_MEMBER_HOST、 STANDBY_INSTANCE、 STANDBY_MEMBER

      エンドポイントは、すべてのシナリオで HADR ログ配送チャネルを一意的に識別します。 ホスト、インスタンス、または MEMBER_ID により、メンバーが一意的に識別されます。

  4. 接続の詳細:
    1. 状況: HADR_CONNECT_STATUS、HADR_CONNECT_STATUS_TIME
    2. ネットワーク・タイミング: HEARTBEAT_INTERVAL、 HADR_TIMEOUT、 TIME_SINCE_LAST_RECV
    3. ロガー待機タイミング: PEER_WAIT_LIMIT、 LOG_HADR_WAIT_CUR、 LOG_HADR_WAIT_TIME、 LOG_HADR_WAITS_TOTAL
    4. TCP バッファー・サイズ: SOCK_SEND_BUF_REQUESTED、 SOCK_SEND_BUF_ACTUAL、 SOCK_RECV_BUF_REQUESTED、 SOCK_RECV_BUF_ACTUAL
  5. ログ位置の詳細:
    1. 1 次ログ位置: PRIMARY_LOG_FILE、 PRIMARY_LOG_PAGE、 PRIMARY_LOG_POS、 PRIMARY_LOG_TIME
    2. スタンバイ・ログ受信位置: STANDBY_LOG_FILE、 STANDBY_LOG_PAGE、 STANDBY_LOG_POS、 STANDBY_LOG_TIME
    3. 1 次とスタンバイのログのギャップ: HADR_LOG_GAP
    4. スタンバイ・ログの適用位置: STANDBY_REPLAY_LOG_FILE、 STANDBY_REPLAY_LOG_PAGE、 STANDBY_REPLAY_LOG_POS、 STANDBY_REPLAY_LOG_TIME
    5. スタンバイの受信と適用のギャップ: STANDBY_RECV_REPLAY_GAP
    6. 適用の遅延: STANDBY_REPLAY_DELAY
  6. ログ・バッファーおよびスプーリング: STANDBY_RECV_BUF_SIZE、 STANDBY_RECV_BUF_PERCENT、 STANDBY_SPOOL_LIMIT
  7. ピア・ウィンドウ: PEER_WINDOW、PEER_WINDOW_END
  8. テークオーバー: TAKEOVER_APP_REMAINING_PRIMARY、 TAKEOVER_APP_REMAINING_STANDBY
  9. スタンバイ中の読み取り: READS_ON_STANDBY_ENABLED、 STANDBY_REPLAY_ONLY_WINDOW_ACTIVE、 STANDBY_REPLAY_ONLY_WINDOW_START、 STANDBY_REPLAY_ONLY_WINDOW_TRAN_COUNT

  1. SELECT HADR_ROLE, STANDBY_ID, HADR_STATE, varchar(PRIMARY_MEMBER_HOST ,20)
       as PRIMARY_MEMBER_HOST, varchar(STANDBY_MEMBER_HOST ,20)
       as STANDBY_MEMBER_HOST from table(MON_GET_HADR(NULL))

    以下はこの照会の出力例です。

    HADR_ROLE     STANDBY_ID HADR_STATE              PRIMARY_MEMBER_HOST 
    ------------- ---------- ----------------------- --------------------
    PRIMARY                1 PEER                    hostP.ibm.com       
    PRIMARY                2 REMOTE_CATCHUP          hostP.ibm.com       
    PRIMARY                3 REMOTE_CATCHUP          hostP.ibm.com       
     
    STANDBY_MEMBER_HOST   
    --------------------  
    hostS1.ibm.com        
    hostS2.ibm.com        
    hostS3.ibm.com        
    
    3 record(s) selected.

    3 つのスタンバイを持つ 1 次データベースに対して照会が発行され、3 つの行が戻されます。 各行は、1 次とスタンバイとのログ配送チャネルを表します。 HADR_ROLE 列には、照会が実行されたデータベースの役割が示されます。 したがって、すべての行には PRIMARY が示されています。

  2. SELECT HADR_ROLE, STANDBY_ID, HADR_STATE, varchar(PRIMARY_MEMBER_HOST ,20)
       as PRIMARY_MEMBER_HOST, varchar(STANDBY_MEMBER_HOST ,20)
       as STANDBY_MEMBER_HOST from table(MON_GET_HADR(NULL))

    以下はこの照会の出力例です。

    HADR_ROLE     STANDBY_ID HADR_STATE              PRIMARY_MEMBER_HOST 
    ------------- ---------- ----------------------- --------------------
    STANDBY                0 PEER                    hostP.ibm.com       
     
    STANDBY_MEMBER_HOST  
    -------------------- 
    hostS1.ibm.com       
    
    1 record(s) selected.

    スタンバイ中の読み取りが有効になっているスタンバイ・データベースに対して照会が発行されます。 スタンバイは自分自身の 1 次だけを認識しています。 スタンバイが複数スタンバイ・システムの一部であっても、戻されるのは 1 行だけです。 スタンバイに対して照会が発行された場合、STANDBY_ID は常にゼロです。

  3. 以下の例は、 Db2 pureScale® 環境 の HADR のみを対象としています。 この例の環境では、3 つのメンバー・クラスターがあります。 1 次側では、メンバー 0 はメンバー 1 を支援しています。 スタンバイ・メンバー 0 は再生メンバーです。
    • メンバー ID 0 では、ログ・ストリーム 0 の HADR 情報、およびアシストされているログ・ストリーム (ログ・ストリーム 1) が出力されます。

      SELECT LOG_STREAM_ID, PRIMARY_MEMBER, STANDBY_MEMBER, HADR_STATE, HADR_FLAGS
         FROM TABLE (MON_GET_HADR(0))
      
      LOG_STREAM_ID PRIMARY_MEMBER STANDBY_MEMBER HADR_STATE     HADR_FLAGS
      ------------- -------------- -------------- -------------- -----------------------
      0             0              0              PEER                    
      1             0              0              REMOTE_CATCHUP ASSISTED_REMOTE_CATCHUP
    • メンバー ID 1 では、ログ・ストリーム 1 の HADR 情報が出力されます。
      SELECT LOG_STREAM_ID, PRIMARY_MEMBER, STANDBY_MEMBER, HADR_STATE, HADR_FLAGS
         FROM TABLE (MON_GET_HADR(1))
      
      LOG_STREAM_ID PRIMARY_MEMBER STANDBY_MEMBER HADR_STATE      HADR_FLAGS
      ------------- -------------- -------------- --------------- ----------
      1             1              0              DISCONNECTED    
    • ログ・ストリーム ID 2 では、ログ・ストリーム 2 の HADR 情報が出力されます。
      SELECT LOG_STREAM_ID, PRIMARY_MEMBER, STANDBY_MEMBER, HADR_STATE, HADR_FLAGS
         FROM TABLE (MON_GET_HADR(2))
      
      LOG_STREAM_ID PRIMARY_MEMBER STANDBY_MEMBER HADR_STATE     HADR_FLAGS
      ------------- -------------- -------------- -------------- ----------
      2             2              0              PEER           
    • メンバー ID に -2 を指定した場合、すべてのログ・ストリームの HADR 情報が報告されます。 リモート・キャッチアップ・アシストの場合、アシストしているメンバーからの記録のみが戻され、HADR_FLAGS にはリモート・キャッチアップ・アシスト状態であることが示されます。
      SELECT LOG_STREAM_ID, PRIMARY_MEMBER, STANDBY_MEMBER, HADR_STATE, HADR_FLAGS
         FROM TABLE (MON_GET_HADR(-2))
      
      LOG_STREAM_ID PRIMARY_MEMBER STANDBY_MEMBER HADR_STATE       HADR_FLAGS
      ------------- -------------- -------------- ---------------- -----------------------
      0             0              0              PEER             
      1             0              0              REMOTE_CATCHUP   ASSISTED_REMOTE_CATCHUP
      2             2              0              PEER