反映処理中にエラーが発生しても,そのエラーを無視して反映処理を続行できます。これによって,反映不要なエラーが発生した場合,エラー対策する必要なく反映処理を続行できます。
反映時エラーのスキップには,次の2種類があります。
種別 | 説明 |
---|---|
反映抑止によるスキップ (指定したエラーのスキップ) | エラーが発生してから,エラー情報(更新情報識別子)を基に,スキップするエラーを指定します。 SQLエラーも含めて,すべてのエラーに適用できます。 |
SQLエラーのスキップ | あらかじめスキップするSQLエラーをSQLCODEで指定しておきます。 一部のSQLエラーにだけ適用できます。適用できるSQLエラーについては,「5.9 反映環境定義」のskip_sqlcodeオペランドを参照してください。 |
反映処理中に発生したエラーのメッセージのinformationに出力される更新情報識別子※を指定することで,そのエラーを無視して反映処理を続行できます。更新情報識別子の指定は,反映抑止対象リストファイルで行います。
メッセージの詳細情報については,「10.1.3(4) 詳細情報の説明」を参照してください。
反映抑止によるスキップを使用できる抽出側システムのDatareplicatorのバージョンを次の表に示します。
表3-1 反映抑止によるスキップを使用できるDatareplicator
抽出製品 | バージョン |
---|---|
HiRDB Datareplicator | 04-00-/O以降 |
HiRDB Datareplicator Version 5.0 | 05-03-/D以降 |
HiRDB Datareplicator Version 6 | 06-01-/A以降 |
HiRDB Datareplicator Version 7以降 | 07-00以降 |
XDM/DS(TMS/4V抽出) | 07-01以降 |
XDM/DS(TMS/4V以外の抽出) | 08-03以降 |
VOS3 Database Datareplicator | 01-00以降 |
反映抑止は,反映抑止対象リストファイルで指定します。反映抑止対象リストファイルについての詳細を次の表に示します。
表3-2 反映抑止対象リストファイルについての詳細
項目 | 説明 |
---|---|
ファイル名 | HDSPATH/reflect_pass_list_データ連動識別子※ (例)HDSPATH/reflect_pass_list_a1 |
ファイル種別 | UNIX通常ファイル,又はWindowsファイル |
属性 | hdsstartコマンド実行ユーザに対して,read権限があります。 |
反映抑止対象リストファイルでの指定形式を次に示します。
制御コード = Trn〔:Pos〕〔,Grp〕 #コメント : |
制御コード | 説明 |
---|---|
SKIP_TYPE_ONLY | 通常の反映抑止の場合に指定します。 指定した更新情報識別子を抑止します。 |
SKIP_TYPE_UNTIL | データ連動回復の場合に指定します。 |
指定 | 説明 |
---|---|
Trn | 更新情報が格納されたトランザクションのIDです。 メッセージのinformation中のExtract Idの「:」までに16進数(24けた)として表示されます。 |
Pos | Trnが示すトランザクション内での更新情報の格納順位です。 メッセージのinformation中のExtract Idの「:」以降に10進数で(1~4294967295)表示されます。 |
Grp | 反映定義のgroup文で指定した反映グループ名称です。 Grpによって指定される抑止対象は,反映処理方式によって異なります。反映処理方式ごとのGrpの抑止対象の違いを表3-3に示します。 |
表3-3 反映処理方式ごとのGrpの抑止対象の違い
反映処理方式 | Grpの抑止対象 | |
---|---|---|
Grp指定あり | Grp指定なし | |
表単位反映方式 | Grpで指定した反映グループ内のTrn:Posを抑止します。 | すべての反映グループ内のTrn:Posを抑止します。 |
トランザクション単位反映方式 | すべての反映グループ内のTrn:Posを抑止します(Grpの指定を無視します)。 | すべての反映グループ内のTrn:Posを抑止します。 |
Fri May 23 16:29:42 2003 process: hdssqle[trngroup](2032) function: hds_sqe_hexeis |
SKIP_TYPE_ONLY=3e681b95000000000000012f:1,trngroup |
あらかじめ指定したSQLCODEのエラーが発生した場合に,そのエラーを無視して反映処理を続行できます。SQLエラーしかスキップできませんが,あらかじめスキップするエラーを指定することができるため,反映抑止によるスキップより手間が掛かりません。
スキップ対象とするSQLCODEは,反映環境定義のskip_sqlcodeオペランドに指定します。ただし,暗黙的にロールバックされるSQLエラーに該当するSQLCODEを指定しても,スキップ指定は無視されて反映処理は停止します。
また,HiRDBが暗黙的なロールバックを行うSQLエラーのうち,通信エラー(SQLCODEが-722,又は-723)が発生した場合,その後の反映処理リトライ中に発生したSQLエラーをスキップすると,抽出側DBと反映側DBの不整合が発生するおそれがあります。これは,HiRDBの暗黙的なロールバック処理と反映処理のリトライが競合するためです。
SQLエラーをスキップさせないために,skip_sqlcodeオペランドを指定する場合は,sqlerr_during_retryオペランドにstopを指定,又は指定を省略してください。これによって,抽出側DBと反映側DBの不整合が発生するおそれがあるときは,スキップ指定が無視されて,反映処理はKFRB03061-Eメッセージを出力して停止します。KFRB03061-Eメッセージを出力して停止したときは,HiRDBの暗黙的なロールバック処理が完了するのを待った後,反映処理を再起動してください。sqlerr_during_retryの指定と通信エラー後の反映処理リトライ中に発生したSQLエラーのスキップの関係について次の表に示します。
sqlerr_during_retryの指定 | 通信エラー後の反映処理リトライ中に発生したSQLエラーのSQLCODE | スキップの有無 |
---|---|---|
stop又は省略 | skip_sqlcodeオペランドに指定したSQLCODE | ×※ |
上記以外のSQLCODE | × | |
enable_skip | skip_sqlcodeオペランドに指定したSQLCODE | ○ |
上記以外のSQLCODE | × |
反映SQLエラーのスキップの指定については,「5.9 反映環境定義」のskip_sqlcodeオペランド及びsqlerr_during_retryオペランドの説明を参照してください。