3.6.8 注意事項
反映トランザクション同期機能使用時の注意事項について説明します。
- 〈この項の構成〉
(1) UOCに関する制限
反映トランザクション同期機能では,反映情報編集UOCは使用できません。
(2) データ連動識別子の部分初期化
同期反映グループを構成するデータ連動識別子ごとの部分初期化はできません。同期反映グループを構成するデータ連動識別子の部分初期化を実行した場合,KFRB04344-Eメッセージが出力されて,初期化処理を中断します。ただし,次のどちらかの条件に該当する場合は,同期反映グループ全体を初期化します。
-
同期反映グループを構成するデータ連動識別子が一つである。
-
部分初期化を指定したデータ連動識別子以外にデータ連動識別子の定義がない,又は,ほかのデータ連動識別子がすべて欠番である。
例えば,次の場合,KFRB04344-Eメッセージは出力されません。反映側Datareplicatorの初期化として動作します。
- コマンドの指定
-
dsid003の初期化を指定して反映側Datareplicatorを開始する。
hdsstart -i -D 003
- 反映システム定義の内容
-
dsid003以外のデータ連動識別子が欠番となっている。
dsid001 = ** dsid002 = ** dsid003 = c1 dsid004 = ** dsid005 = ** syncgroup001 = Grp001,c1
(3) トランザクションの長大化
反映トランザクション同期機能の処理中に,各バックエンドサーバの同期イベントがそろわないと,トランザクションが長大化して,反映側HiRDBでリソースが不足する可能性があります。また,長大なトランザクションが最終的に決着できないでロールバックする場合,多量のロールバックログを出力します。
このような問題を回避するために,反映側HiRDBの排他制御用プールサイズ,及びシステムログファイルサイズを超えないように,反映システム定義のsyncwait_limit_tran_countオペランドで同期待ち限界トランザクション数を見積もってください。
(4) 全行削除(PURGE TABLE)の実行
抽出側HiRDBがパラレルサーバで,サーバ間横分割していない表の場合は,PURGE TABLEを実行してもデータ連動ができます。
- 注意
-
PURGE TABLEを実行すると,反映トランザクションは自動的にCOMMITされます。そのため,抽出側DBに更新トランザクションが実行されていない状態で,次の運用をしなければなりません。
-
同期イベントを実行して同期を取り,ほかのトランザクションが実行されていない状態にします。
-
PURGE TABLEを実行します。PURGE TABLEの実行条件は次のとおりです。
・実行するトランザクション中に,PURGE TABLEは一つだけである。
・PURGE TABLEよりも前に,INSERT,UPDATE,及びDELETEを含んでいない。
-
再度,同期イベントを実行します。
これ以外の運用をした場合,PURGE TABLEを実行したデータ連動識別子の反映トランザクションだけがCOMMITされ,他データ連動識別子との反映トランザクションの同期は保証できなくなります。その場合,速やかに同期イベントを実行して,反映トランザクションを同期する必要があります。
-
(5) 抽出定義の変更
抽出定義を変更するためには,反映側Datareplicatorを初期化する必要があります。反映側Datareplicatorの初期化手順は,「6.8.4 反映トランザクション同期機能を使用している場合の構成変更」を参照してください。
反映側Datareplicatorを初期化しないで抽出定義を変更すると,反映側Datareplicatorの実行中にKFRB03317-Eメッセージが出力されて,エラーになります。エラーを回避するためには,同期反映グループを解除して再起動する必要があります。
(6) 反映側Datareplicator実行環境下のHiRDBのクライアント環境定義
反映側Datareplicatorの環境変数HDSCLTWAITTIMEに「USER」を指定した場合,HiRDBのクライアント環境定義PDSWAITTIME,及びPDSWATCHTIMEには0を指定してください。0以外を指定した場合,反映SQLプロセスが接続タイムアウトとなることがあります。