メッセージキューのデータとDBサービス定義やデータベースとの不整合が原因でエラーが発生した場合、以下を確認してください。
TROのメッセージの内容とDBサービス定義を比較し、問題箇所を確認してください。
エラーログで確認できるものについては、"4.9 異常発生時の対処"の"データと定義が不整合の場合"を確認してください。
メッセージキュー上のメッセージの内容や形式とDBサービス定義との不整合が原因と思われる場合は、trmqdgetmsgコマンドの出力内容とDBサービス定義の内容を比較し、修正すべき対象を判断してください。
おもなTROのメッセージと対処の概要は以下のとおりです。
メッセージ | 概要 | 確認・対処 |
---|---|---|
RT70007 | 入力データのコード系とSTOREGROUP定義文に指定したコード系が不一致 | DBサービス定義または抽出側のデータを修正。 |
RT70008 | 更新資源名が存在しない | DBサービス定義または抽出側のデータを修正。 |
RT70009 | ジャーナルヘッダが存在しない | DBサービス定義または抽出側のデータを修正。 |
RT70010 | 入力データに項目属性表示領域が存在しない | 抽出側のデータを修正。 |
RT70011 | 入力データに更新資源名(TJNLRESOURCE)が存在しない | 抽出側のデータを修正。 |
RT70012 | 入力データにDB操作(TJNLDBOP)が存在しない | 抽出側のデータを修正。 |
RT70013 | 入力データに時刻(TJNLTIME)が存在しない | 抽出側のデータを修正。 |
RT70014 | 入力データの更新資源名、DB操作、時刻の順序に誤り | 抽出側のデータを修正。 |
RT70018 | 入力データのDB操作の値に誤り | 抽出側のデータを修正。 |
RT70019 | 入力データとINTABLE定義文のITEMオペランドに指定した形式が不一致 | DBサービス定義または抽出側のデータを修正。 |
RT70025 | 不完全なトランザクションのメッセージを検出 | トランザクションの途中となった原因を確認し、対象トランザクションの終了までのメッセージキュー上のメッセージを削除。対象トランザクションのデータを抽出し直す。 |
詳細は"第10章 メッセージ"の各メッセージを参照してください。
抽出側のデータの修正とは、メッセージキューからメッセージを削除した上で、抽出側システムの定義などを修正してデータを抽出し直すことを示します。
確認内容と対処
確認内容と対処は以下のとおりです。
以下の内容を確認し、抽出側システムおよび格納側システムについて問題箇所を特定します。
trmqdgetmsgコマンドを-rオプション付きで実行します。 出力されたテキストファイルの内容から対象物を確認してください。
lxrtmdspsvコマンドで詳細表示を行います。出力内容から対象物を確認してください。
lxrtmdspsvコマンドで出力されないものについては、実際のDBサービス定義ファイルを確認してください。
上述のメッセージキュー上の先頭メッセージとDBサービス定義を比較し、問題箇所を特定します。
抽出側システムと格納側システムについて、問題箇所を修正します。
DBサービス定義を修正する場合の手順については"4.9 異常発生時の対処"を参照してください。
メッセージに問題がある場合はメッセージを削除します。
削除方法は以下の2種類があります。
・メッセージキュー上の先頭メッセージの削除(trmqdgetmsgコマンド)
・メッセージキュー上の全メッセージの削除(trmqdprgmsgコマンド)
問題となるメッセージだけを削除して後続の正常なメッセージを反映する場合は、先頭メッセージを削除します。
先頭のメッセージだけを削除してもエラーが解消されない場合は、次のメッセージを同様に確認します。個々のメッセージ削除で対応できない場合やメッセージの数が多くて確認しきれない場合は、全メッセージを削除してください。
メッセージキュー上のメッセージを削除した場合は、抽出側システムの定義やデータを確認した上でデータを再抽出してください。
メッセージキュー上のメッセージの削除について、以下の注意事項があります。
1トランザクションが複数メッセージから構成される場合は、原則1トランザクション分のメッセージを削除してください。
trmqdgetmsgコマンドの出力内容のうち"パッキング状態"を確認し、トランザクションの終了まで削除します。これは、以下の操作を繰り返すという意味です。
・trmqdgetmsgコマンドを-rオプション付きで実行し、メッセージの内容を確認。
・trmqdgetmsgコマンドを-rオプションなしで実行することによりメッセージを削除。
抽出側システムでメッセージをパッキングした場合、格納側システムのメッセージキューでは、1トランザクションが複数のメッセージから構成されます。各メッセージでは"パッキング状態"という項目がトランザクションにおける先頭・中間・最終という状態を示します。誤ってtrmqdgetmsgコマンドによりトランザクションの先頭メッセージを削除した場合、逐次差分を反映するとトランザクションの不整合を検出してRT70025メッセージを出力します。
この場合、トランザクションを構成するメッセージを削除することによりエラーが解消します。削除したトランザクションについては、抽出側システムでデータを再抽出する必要があります。
また、合わせてトランザクションの先頭が削除された経緯を確認してください。
なお、先頭メッセージを取り出さずに逐次差分反映処理を継続する場合は、DB動作環境定義のCHKOUT_INCOMPLETE_TRNMSGキーワードに"OFF"を指定してください。
"パッキング状態"については、trmqdgetmsgコマンドの出力内容を確認してください。