9.2.2 エラーの対処方法

反映側システムのエラーの原因と対処方法を次の表に示します。なお,障害が発生して抽出側DBと反映側DBの不整合が発生した場合は,抽出側Datareplicator及び反映側Datareplicatorを初期化する必要があります。初期化手順の詳細については,「9.4 障害回復時の初期化手順」を参照してください。

表9-3 エラーの原因と対処方法

エラーの原因の種類エラーの対処方法
メモリ不足(ローカルメモリ)
  • 動作中の不要なプロセスを終了してください。
  • メモリを増設してください。
メモリ不足(共用メモリ)
  • 反映環境定義のdefshmsizeオペランドの値を調整してください。
  • 共用メモリを使っている,動作中の不要なプロセスを終了してください。
  • メモリを増設してください。
ファイルディスクリプタ不足
  • 不要なファイルをクローズしてください。
  • システムパラメタ(ファイルディスクリプタ数の上限値)を調整してください。
ソケット確立不可システムコールからの詳細コードを基にエラーの原因を取り除いてください。
ポートチェックエラー詳細コードを基にエラーの発生原因を取り除いてください。
通信回線切断通信回線を再接続し,抽出側システムを再起動してください。
データ受信シーケンスエラー抽出側システムの保守員に連絡してください。
ファイル容量不足反映情報キューファイル反映情報キューファイルに格納されているすべての更新情報が反映されているかどうかを,hdsstateコマンドで確認してください(COMMUNICATION INFORMATIONのwrite positionとREFLECTION INFORMATIONのread positionが同じになっていれば,すべての更新情報が反映されています)。
すべての更新情報が反映されている状態でも,まだKFRB00005-E(キューファイル容量不足)になるときは,hdsstop -t immediate 又はforceコマンドを実行して反映側Datareplicatorを終了してください。その後,ファイル数を増やすか又は容量を拡張してから,hdsstart -iコマンドで再起動してください。このとき,抽出側Datareplicatorは自動的に再送信するので,特に操作は不要です。
反映ステータスファイル反映情報キューファイルに格納されているすべての更新情報を反映し終わってから,hdsstopコマンドで反映側Datareplicatorを終了してください。その後,ファイルの容量を拡張してから,hdsstart -iコマンドで再起動してください。
更新情報不正保守員に連絡してください。
定義情報不正抽出側システム又は反映側Datareplicatorの定義を修正してください。
媒体不正反映情報キューファイルエラー対処後,抽出側と反映側の両方のデータ連動の環境を同期を取って初期化し,抽出側DBを基に反映側DBを再作成してください。
反映ステータスファイル
反映マスタステータスファイル
SQLエラーSQLCODEを基にエラーの原因を取り除いてください。
更新情報入力コマンド処理中のエラー
抽出処理に障害が発生した場合
更新情報入力には影響しないため,処理は続行します。抽出処理は,起動コマンド(hdestart)で再起動できます。
既存の反映処理に障害が発生した場合
更新情報入力には影響しないため,処理は続行します。既存の反映処理は再起動コマンド(hdsrfctl)で再起動できます。
更新情報入力に障害が発生した場合
更新情報入力用の反映処理は続行します。更新情報入力処理を再起動する場合は,hdssamqinコマンドに -oオプションを指定して実行してください。
-oオプションは障害時にだけ有効です。メッセージを出力できる異常終了時には実行する必要はありません。
更新情報入力用反映処理に障害が発生した場合
更新情報入力処理は続行します。反映処理は再起動コマンド(hdsrfctl)で再起動できます。
内部矛盾保守員に連絡してください。
マシン電源切断マシンを再起動してください。
バスエラー保守員に連絡してください。
不正シグナル受信(sigkill)
UNIX版Datareplicatorの場合
抽出側Datareplicatorで不正シグナルを受信した場合は,hdeshmcleanコマンドを実行して,マシンを再起動してください。反映側Datareplicatorで不正シグナルを受信した場合は,hdsshmcleanコマンドを実行して,マシンを再起動してください。
Windows版Datareplicatorの場合
マシンを再起動してください。
2相コミット使用時のトランザクション状態の確認
同期点処理要求の実行中にSQLエラーになったときに,同期点処理を2相コミット方式にしていると,HiRDBのpdls -d trn -aコマンドを実行して表示されるXIDからDatareplicatorの反映機能で実行しているトランザクションの状態を検知できます。Datareplicatorの反映機能のトランザクションの情報として,XIDに次の形式で出力されます。

XID=aaaaaaaabbccdddd,eeeeeeeeffgghhhh

aaaaaaaa:実行プロセス名。UOCのときは「hdsuocg」,UOCでないときは「hdssqle」が表示されます。
bb:Datareplicator識別子(00~ff)
cc:データ連動識別子(00~ff)
dddd:「0000」が表示されます。
eeeeeeee:反映グループ名が表示されます。
ff:反映グループ順序番号(データ連動識別子ごとの反映グループ通番)
gg:SQLプロセス順序番号(反映グループごとのSQLプロセス通番)
hhhh:「0000」が表示されます。
 
2相コミット使用時のトランザクションの決着 
2相コミット方式で同期点処理をするときは,連携を中止して初期開始をする場合を除いて,コマンドを使ってトランザクションを決着しないでください。
反映側Datareplicatorのトランザクションは,通常は反映側Datareplicatorを再起動した時点で自動的に決着されます。ただし,反映先HiRDBの異常終了によって反映側Datareplicatorが停止した場合には,トランザクションが決着されないで残るときがあります。このときは,次の手順に従って反映側Datareplicatorを再起動する必要があります。
  1. hdsstop -t forceで反映側Datareplicatorを強制停止させます。
  2. 異常終了の原因を取り除いて,反映側HiRDBを再開始させます。
  3. pdls -d trn -aコマンドを実行して,決着していないトランザクションの一覧を取得し,トランザクションの表示内容に従ってトランザクションを決着させます。その後,反映側Datareplicatorを再起動します。
    トランザクションの表示内容とユーザの取る処置を次に示します。
    表示内容ユーザが取る処置
    PROGRAMB-SVIDSTATUS
    hdssqle以外Datareplicator以外のトランザクションのため,トランザクション発生元のプログラムの指示に従ってトランザクションを決着します。
    hdssqle**...***...*が表示されているTRNGIDを持つトランザクションは,すべて反映側Datareplicatorの再起動時に自動的に決着されるため,対策は不要です。
    **...*
    以外
    FORGETTING(?,w)
    ?:任意の文字を示す
    このTRNGIDを持つトランザクションは,pdfgtコマンドでトランザクションを決着させます。
    FORGETTING(?,w)
    以外
    このTRNGIDを持つトランザクションのXIDを,エラー情報ファイルに出力されているKFRB3072-EメッセージのXIDと比較して,次のどちらかの処置を実行します。
    同じXIDを持つKFRB3072-Eがある場合:pdcmtコマンドでトランザクションを決着させます。
    同じXIDを持つKFRB3072-Eがない場合:pdrbkコマンドでトランザクションを決着させます。