6.7.3 反映側Datareplicator運用時の注意
反映側Datareplicatorを運用するときの注意を次に示します。
- 〈この項の構成〉
(1) 更新についての注意
-
反映処理中の表に対して,排他制御をしないでください。反映処理の排他待ちやデッドロックが発生する場合があります。
-
複数の抽出側システムから同一の反映側システムの表を更新する場合,更新順序は保証されません。更新順序を制御する必要がある場合には,運用で実行してください。例えば,二つの抽出側システムA,Bから,反映側システムの表(T1)とをデータ連動する場合,抽出側システムAのマッピングキーの値「100」の行に対する更新の次に,抽出側システムBのキー値100の行に対する更新が実行されても,反映側システムのキー値100の行の値は抽出側システムBと同一になっていることは保証されません。
-
抽出側システムで抽出定義を変更する場合は,抽出側システムの更新情報がすべて反映側Datareplicatorに送信されたことを確認してから,実行してください。反映側Datareplicatorに送信する更新情報が残っているまま抽出定義を変更した場合,反映処理中にエラーになることがあります。この場合,反映側Datareplicatorではエラーを回復できないことがあり,HiRDB Dataextractorなどを使ったテーブル再作成が必要になることがあります。
-
UOCによる反映がある場合,反映処理は常に表単位反映方式で動作します。
(2) 初期開始,部分初期開始についての注意
-
特定のデータ連動識別子に対する部分だけを初期化する場合は,部分初期開始を実行してください。すべてのデータ連動識別子に対して初期化する場合には,すべてのデータ連動識別子に対する反映処理を終了させてから,全体に対して初期開始を実行してください。
-
抽出側システムを初期化した状態で起動したときは,反映側Datareplicatorもhdsstart -i又はhdsstart -i -Dで起動してください。
抽出側システムだけを初期状態で起動した場合,KFRB02003-E(詳細コード5)でエラーになります。
ただし,反映環境定義でextract_initにnocheckを指定している場合は,反映側Datareplicatorを初期開始又は部分初期開始する必要はありません。
(3) イベントについての注意
-
抽出側システムから送信されたイベントのコードが反映環境定義で定義されていない場合,反映処理の動作には何も影響ありません。ただし,反映側Datareplicatorは,イベントの発生としては認識します。
-
反映処理が動作している場合にトランザクション単位反映再起動イベント又は表単位反映再起動イベントを検知しても,反映側Datareplicatorは無視します。
(4) WITHOUT ROLLBACKオプションを指定している表についての注意
WITHOUT ROLLBACKオプションを指定している表のデータ連動には,前提条件と制限事項があります。
- 前提条件
-
次の前提条件をすべて満たす必要があります。前提条件を満たさない場合は,抽出側DBと反映側DBで不整合が発生することがあります。
-
抽出側Datareplicatorと反映側Datareplicatorのバージョンが08-02以降である
-
抽出側DBと反映側DBが共にHiRDBである
-
抽出システム定義のsendcontrolオペランドにnodemstを指定している
-
抽出側DBと反映側DBがパラレルサーバの場合は,WITHOUT ROLLBACKオプションを指定している表とそれに関連する表を,同じバックエンドサーバに格納している
-
- 制限事項
-
WITHOUT ROLLBACKオプションを指定している表のデータ連動には,次の制限事項があります。
-
次の表はWITHOUT ROLLBACKオプションが指定されていると,データ連動できません。
・マージ表
・時系列情報表
・サーバ間横分割表
・イベント制御用テーブル
-
データ連動できるSQLはUPDATE文だけです。INSERT文はデータ連動できないため,反映側DBを初期作成するときはHiRDB Dataextractorなどを使用してください。
-
WITHOUT ROLLBACKオプションを指定している表では,マッピングキーに指定している列を更新できません。
-
反映時エラーのスキップはできません。SQLコードを指定してスキップしてください。
-
データ連動回復機能は使用できません。個別に回復してください。
-
(a) 反映側DBを参照する場合の注意
WITHOUT ROLLBACKオプションを指定している表は,1回の更新を1トランザクションとして扱います。このため,WITHOUT ROLLBACKオプションを指定している表と指定していない表を同じトランザクション内で更新しても,反映側Datareplicatorには別々のトランザクションとして送信・反映されます。このとき,トランザクションがすべて反映される前に反映側DBを参照すると,抽出側DBと反映側DBで不整合が発生することがあります。このため,反映処理が完了したことを確認※してから,反映側DBを参照してください。
また,反映側Datareplicatorで障害が発生してロールバックをする場合,WITHOUT ROLLBACKオプションを指定している表では,更新情報の反映処理を実行中に,表の内容が一時的に古くなることがあります。このため,反映処理が完了したことを確認※してから,反映側DBを参照してください。
- 注※
-
hdsstateコマンドを実行して表示されるread positionとwrite positionが一致していることを確認してください。
(b) 送信環境定義sendintvlオペランドの指定
WITHOUT ROLLBACKオプションを指定している表は,1回の更新を1トランザクションとして扱うため,送信環境定義のsendintvlオペランドに0(トランザクション単位で更新情報を送信)を指定すると,WITHOUT ROLLBACKオプションを指定している表を更新するたびに送信処理が発生して,送信処理のオーバヘッドが大きくなります。このため,WITHOUT ROLLBACKオプションを指定している表をデータ連動する場合は,送信環境定義のsendintvlオペランドに0以外を指定することをお勧めします。