MON_GET_HADR 表関数 - 高可用性災害時リカバリー (HADR) のモニター情報を返す
この関数は、高可用性災害時リカバリー (HADR) モニター情報を戻します。
許可
- ルーチンに対する EXECUTE 特権
- DATAACCESS 権限
- DBADM 権限
- SQLADM 権限
デフォルトの PUBLIC 特権
なし
構文
スキーマは SYSPROC です。
ルーチン・パラメーター
- member
- メンバー番号を指定する、タイプ INTEGER の入力引数。 戻される行は、このメンバーによって処理されているログ・ストリームを表します。 現行のデータベース・メンバーには -1、すべてのアクティブ・データベース・メンバーには -2 を指定します。 NULL 値を指定すると、-1 が暗黙的に設定されます。
戻される情報
使用上の注意
- 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
- 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 です。
- クラスター・レベルのサマリー: HADR_ROLE、REPLAY_TYPE、HADR_SYNCMODE
- ログ・ストリーム・レベルのサマリー: STANDBY_ID、LOG_STREAM_ID、HADR_STATE
- ログ配送チャネルのエンドポイント:
- 1 次側: PRIMARY_MEMBER_HOST、 PRIMARY_INSTANCE、 PRIMARY_MEMBER
- スタンバイ側: STANDBY_MEMBER_HOST、 STANDBY_INSTANCE、 STANDBY_MEMBER
エンドポイントは、すべてのシナリオで HADR ログ配送チャネルを一意的に識別します。 ホスト、インスタンス、または MEMBER_ID により、メンバーが一意的に識別されます。
- 接続の詳細:
- 状況: HADR_CONNECT_STATUS、HADR_CONNECT_STATUS_TIME
- ネットワーク・タイミング: HEARTBEAT_INTERVAL、 HADR_TIMEOUT、 TIME_SINCE_LAST_RECV
- ロガー待機タイミング: PEER_WAIT_LIMIT、 LOG_HADR_WAIT_CUR、 LOG_HADR_WAIT_TIME、 LOG_HADR_WAITS_TOTAL
- TCP バッファー・サイズ: SOCK_SEND_BUF_REQUESTED、 SOCK_SEND_BUF_ACTUAL、 SOCK_RECV_BUF_REQUESTED、 SOCK_RECV_BUF_ACTUAL
- ログ位置の詳細:
- 1 次ログ位置: PRIMARY_LOG_FILE、 PRIMARY_LOG_PAGE、 PRIMARY_LOG_POS、 PRIMARY_LOG_TIME
- スタンバイ・ログ受信位置: STANDBY_LOG_FILE、 STANDBY_LOG_PAGE、 STANDBY_LOG_POS、 STANDBY_LOG_TIME
- 1 次とスタンバイのログのギャップ: HADR_LOG_GAP
- スタンバイ・ログの適用位置: STANDBY_REPLAY_LOG_FILE、 STANDBY_REPLAY_LOG_PAGE、 STANDBY_REPLAY_LOG_POS、 STANDBY_REPLAY_LOG_TIME
- スタンバイの受信と適用のギャップ: STANDBY_RECV_REPLAY_GAP
- 適用の遅延: STANDBY_REPLAY_DELAY
- ログ・バッファーおよびスプーリング: STANDBY_RECV_BUF_SIZE、 STANDBY_RECV_BUF_PERCENT、 STANDBY_SPOOL_LIMIT
- ピア・ウィンドウ: PEER_WINDOW、PEER_WINDOW_END
- テークオーバー: TAKEOVER_APP_REMAINING_PRIMARY、 TAKEOVER_APP_REMAINING_STANDBY
- スタンバイ中の読み取り: READS_ON_STANDBY_ENABLED、 STANDBY_REPLAY_ONLY_WINDOW_ACTIVE、 STANDBY_REPLAY_ONLY_WINDOW_START、 STANDBY_REPLAY_ONLY_WINDOW_TRAN_COUNT
例
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 が示されています。
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 は常にゼロです。
- 以下の例は、 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