Hitachi

HiRDB データ連動機能 HiRDB Datareplicator Version 10


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のバージョンを次の表に示します。

表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-1のバージョンでも反映抑止によるスキップを使用できません。

  • 抽出側システムにHiRDB Datareplicator Extensionを使用している。

  • 反映側Datareplicatorへの入力として,hdssamqinコマンドを使用している。

(b) 定義方法

反映抑止は,反映抑止対象リストファイルで指定します。反映抑止対象リストファイルについての詳細を次の表に示します。

表3‒2 反映抑止対象リストファイルについての詳細

項目

説明

ファイル名

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オペランドの説明を参照してください。