3.3.10 反映時エラーのスキップ
反映処理中にエラーが発生しても,そのエラーを無視して反映処理を続行できます。これによって,反映不要なエラーが発生した場合,エラー対策する必要なく反映処理を続行できます。
反映時エラーのスキップには,次の2種類があります。
種別 |
説明 |
---|---|
反映抑止によるスキップ (指定したエラーのスキップ) |
エラーが発生してから,エラー情報(更新情報識別子)を基に,スキップするエラーを指定します。 SQLエラーも含めて,すべてのエラーに適用できます。 |
SQLエラーのスキップ |
あらかじめスキップするSQLエラーをSQLCODEで指定しておきます。 一部のSQLエラーにだけ適用できます。適用できるSQLエラーについては,「5.9 反映環境定義」のskip_sqlcodeオペランドを参照してください。 |
- 〈この項の構成〉
(1) 反映抑止によるスキップ
反映処理中に発生したエラーのメッセージのinformationに出力される更新情報識別子※を指定することで,そのエラーを無視して反映処理を続行できます。更新情報識別子の指定は,反映抑止対象リストファイルで行います。
メッセージの詳細情報については,「10.1.3(4) 詳細情報の説明」を参照してください。
- 注※
-
更新情報識別子は,hdsrefinfmコマンドを実行することで確認することもできます。詳細については,「7. コマンドの文法」のhdsrefinfmコマンドを参照してください。
(a) 前提条件
反映抑止によるスキップを使用できる抽出側システムの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-1のバージョンでも反映抑止によるスキップを使用できません。
-
抽出側システムにHiRDB Datareplicator Extensionを使用している。
-
反映側Datareplicatorへの入力として,hdssamqinコマンドを使用している。
-
(b) 定義方法
反映抑止は,反映抑止対象リストファイルで指定します。反映抑止対象リストファイルについての詳細を次の表に示します。
項目 |
説明 |
---|---|
ファイル名 |
HDSPATH/reflect_pass_list_データ連動識別子※ (例)HDSPATH/reflect_pass_list_a1 |
ファイル種別 |
UNIX通常ファイル,又はWindowsファイル |
属性 |
hdsstartコマンド実行ユーザに対して,read権限があります。 |
- 注※
-
-
連動識別子は,すべて小文字で指定する必要があります。
-
連動識別子が00〜09の場合,0〜9を指定してください。
0a〜0fの場合は,a〜fを指定してください。
-
反映抑止対象リストファイルでの指定形式を次に示します。
- 指定形式
制御コード = Trn〔:Pos〕〔,Grp〕 #コメント :
- 制御コード
-
運用に合わせて,次から制御コードを指定します。
制御コード
説明
SKIP_TYPE_ONLY
通常の反映抑止の場合に指定します。
指定した更新情報識別子を抑止します。
SKIP_TYPE_UNTIL
データ連動回復の場合に指定します。
- Trn〔:Pos〕〔,Grp〕
-
エラーメッセージのinformationに出力される更新情報識別子を指定します。Trn,Pos,及びGrpの間にスペースやタブは記述できません。
指定
説明
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を抑止します。
- 規則
-
-
指定は1行につき一つです。
-
一つの制御コードから更新識別子までは,同じ行に指定します。
-
1行は512バイト以内です。
-
行中に「#」を記述すると,「#」以降はコメントとして扱われます。
-
- 指定例
-
更新情報識別子の指定例を示します。
表単位反映方式で反映中に,次のメッセージが出力された場合を考えます。
- メッセージのinformation
Fri May 23 16:29:42 2003 process: hdssqle[trngroup](2032) function: hds_sqe_hexeis errorcode: KFRB03033-E 02 a1 (hdssqle.exe[trngroup]) HiRDB data base EXECUTE error occurred, table name = "k896201"."R003", SQLCODE = -803. information: "C1"=1 KFPA11803-E Duplicate key value in unique index id=196861 Additional Transaction Info = 3e681b95000000000000012f. Extract Id = 3e681b95000000000000012f:1
反映グループ「trngroup」に対する,トランザクション「3e681b95000000000000012f」(格納順位「1」)の反映だけを抑止するとき,更新情報識別子は次のように指定します。
- 反映抑止対象リストファイルの内容
SKIP_TYPE_ONLY=3e681b95000000000000012f:1,trngroup
(2) SQLエラーのスキップ
あらかじめ指定した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 |
× |
- (凡例)
-
○:スキップされます。
×:スキップされません。
- 注※
-
KFRB03061-Eメッセージを出力します。
反映SQLエラーのスキップの指定については,「5.9 反映環境定義」のskip_sqlcodeオペランド及びsqlerr_during_retryオペランドの説明を参照してください。