抽出側Datareplicatorから反映側Datareplicatorの動作内容を操作する場合には,イベント機能を使います。
イベント機能を使う場合は,反映側Datareplicatorでは反映環境定義でイベントコードと対応する処理を指定します。反映側Datareplicatorでのイベントコードの指定については,「4.7.3 反映方法の設計」を参照してください。
イベント機能を使う場合は,抽出側Datareplicatorで,イベントコードを指定したhdeeventコマンドを実行します。hdeeventコマンドを実行すると,イベント制御用テーブルに対してSQLを発行して,イベント制御用の更新情報をシステムログファイルに出力します。抽出側Datareplicatorでは,このイベント制御用の更新情報を抽出し,反映側Datareplicatorに送信して,反映側Datareplicatorの動作内容を操作します。抽出側Datareplicatorでは,イベント制御用の更新情報を検知した時点で,送信間隔を待たないで,反映側Datareplicatorに対する送信処理を開始します。送信処理の完了後は,次回の送信間隔まで送信処理待ちになります。
イベント制御用テーブルは,抽出側Datareplicatorを起動する前に,抽出側HiRDBに作成しておく必要があります。
指定できるイベントコードの範囲と動作を次の表に示します。
表4-34 指定できるイベントコードの範囲と動作
範 囲 | 動 作 |
---|---|
0 | 送信プロセスを停止します(反映側Datareplicatorには送信されません)。 |
1~255 | 指定したイベントコードを,反映側Datareplicatorに送信します。 |
上記以外 | 反映側Datareplicatorには送信されません。 |
hdeeventコマンドを実行すると,次のSQL文が抽出側HiRDBに対して発行されます。抽出側HiRDBがパラレルサーバの場合には,すべてのバックエンドサーバに対して,SQL文が発行されます。
LOCK TABLE "hde_dtbl" IN SHARE MODE |
hdeeventコマンドを実行する代わりに,同様のSQL文を発行して,反映側Datareplicatorに対してイベントを発行することもできます。ただし,イベント制御用テーブルに対しては,上記以外の操作をしないでください。
抽出側Datareplicatorを起動する前に必要になる,イベント制御用テーブルの条件を説明します。
任意のユーザIDで,イベント制御用テーブルを作成します。
hdeeventコマンドを実行する場合には,イベント制御用テーブルを作成したユーザIDを指定します。hdeeventコマンドの実行時にユーザIDの指定を省略すると,PDUSER環境変数の設定値が仮定されます。
hde_dtblで固定です。
FIX属性を指定します。
イベント制御用テーブルの構成を次の表に示します。
表4-35 イベント制御用テーブルの構成
列名 | 列属性 | 列長 | 値 |
---|---|---|---|
KEY | INTEGER | 1 | 整数 |
EVNO | INTEGER | 1 | 0 |
SNDID | CHAR | 10 | '0' |
図4-37 抽出側HiRDBがシングルサーバの場合のイベント制御用テーブルの例
図4-38 抽出側HiRDBがパラレルサーバの場合のイベント制御用テーブルの例