9.6.5 アンロードログファイルによるデータ連動回復手順の詳細

アンロードログファイルによる回復手順の詳細について説明します。

<この項の構成>
(1) アンロードログファイルによる回復手順
(2) アンロードログファイルによるデータ連動回復の実行でエラーとなった場合の対処方法

(1) アンロードログファイルによる回復手順

アンロードログファイルによる回復手順を次の図に示します。

図9-9 アンロードログファイルによる回復手順

[図データ]

注※
抽出の初期化手順には,抽出定義プリプロセスも含みます。初期化した後にhdeprepコマンドで抽出定義のプリプロセスをしてください。抽出定義のプリプロセスをしないと,回復実行エラーになります。

アンロードログファイルによる回復手順の詳細を次の表に示します。

「操作内容とコマンド実行例」のコマンド実行例を参照するときは,次のことに注意してください。

 

表9-13 アンロードログファイルによる回復手順の詳細

項目対象操作内容とコマンド実行例入力と出力確認内容
手順1:
反映エラー情報ファイルの退避
障害回復対象のバックエンドサーバ反映エラー情報ファイル中に,どこまで反映が完了したかを示す抽出トランザクション情報が格納されているので退避します。
コマンド実行例:
$ cp $HDSPATH/errfile1 $HDSPATH/errfile1.sav
$ cp $HDSPATH/errfile2 $HDSPATH/errfile2.sav
手順2:
抽出の初期化
マネージャノード抽出の初期化を実行します。抽出の初期化には抽出プリプロセスも含みます。
コマンド実行例:
$ hdestart -i
$ hdeprep -f extfile
手順3:
連動回復用バックアップファイル作成(システムログをHiRDBファイルシステムにアンロードしている場合)※1
障害回復対象のバックエンドサーバ世代順に連動回復用バックアップファイルを作成します。
コマンド実行例
$pdfbkup HiRDBファイルシステム領域名/HiRDBファイル名 バックアップファイル名
入力ファイル:
  • アンロードログファイルを格納したHiRDBファイルシステム
出力ファイル:
  • 連動回復用バックアップファイル
手順4:
logmrgコマンドでアンロードログファイルを分割※2
障害回復対象のバックエンドサーバlogmrgコマンドを実行します。
コマンド実行例:
$ logmrg バックエンドサーバ名
 分割ブロック数
 出力先ディレクトリ
 入力元ディレクトリ
 {アンロードログファイル名|連動回復用バックアップファイル}
 〔{アンロードログファイル名|連動回復用バックアップファイル}〕
注 アンロードログファイル又は連動回復用バックアップファイルは必ず古い順に指定してください。
入力ファイル:
  • アンロードログファイル,又は連動回復用バックアップファイル
出力ファイル:
  • 出力先ディレクトリ/アンロードログファイル名_通番.unlog
  • $HDEPATH/caplogparm_BES名
$HDEPATH/caplogparm_BES名のファイルが作成されていて,かつ作成日付がlogmrgコマンドの実行日付と等しいことを確認します。
手順5:
回復情報ファイルにオペランドを指定※3
障害回復対象のバックエンドサーバ$HDEPATH/caplogparm_BES名のファイルに,回復開始位置とHiRDB側のデータ連動中止区間の回復が必要かどうかのオペランドを追加します。
コマンド実行例:
$ vi $HDEPATH/caplogparm_BES名
入力ファイル:
  • $HDEPATH/caplogparm_BES名
出力ファイル:
  • $HDEPATH/caplogparm_BES名
手順6:
データ連動回復機能1のセットアップ
障害回復対象のバックエンドサーバが存在するノードデータ連動回復機能1(トランザクション検索フェーズ)のために,プログラムを入れ替えます。
コマンド実行例:
$ su
# setup_tool1(Windows Vista,及びWindows Server 2008の場合はset_tool1)
「Setup for <hdecapture_tool1> complete.」のメッセージが出力されることを確認します。
手順7:
データ連動回復機能1の実行
マネージャノード抽出側Datareplicatorの抽出機能を起動します。このとき,必ず抽出機能だけを起動してください。
コマンド実行例:
$ hdestart -e
入力ファイル:
  • $HDEPATH/hde_toolenv
  • 出力先ディレクトリ/アンロードログファイル名_通番.unlog
  • $HDEPATH/caplogparm_BES名
出力ファイル:
  • tranlist_BES名
  • res_file_BES名(不完全なトランザクションが存在するときだけ)
hdestateコマンドで障害回復対象のバックエンドサーバが存在するノード又は抽出側Datareplicator本体が終了状態になるまで監視します。終了後の手順を次に示します。
  1. エラー情報ファイルにエラーが出力されていないことを確認します。
  2. 環境変数のTOOL_OUTPUT_DIRに指定したディレクトリ下にres_file_BES名のファイルが存在しないことを確認します。
  3. 障害回復対象のバックエンドサーバが存在するノードだけが終了状態になっているときはhdestopコマンドを実行し抽出側Datareplicatorを停止します。
手順8:
データ連動回復機能2のセットアップ※4※5
障害回復対象のバックエンドサーバが存在するノードデータ連動回復機能2(抽出キュー作成フェーズ)のために,プログラムを入れ替えます。
コマンド実行例:
$ su
# setup_tool2(Windows Vista,及びWindows Server 2008の場合はset_tool2)
「Setup for <hdecapture_tool2> complete.」のメッセージが出力されることを確認します。
手順9:
データ連動回復機能2の実行
マネージャノード抽出側Datareplicatorの抽出機能を起動します。このとき,必ず抽出機能だけを起動してください。
コマンド実行例:
$ hdestart -e
入力ファイル:
  • $HDEPATH/hde_toolenv
  • 出力先ディレクトリ/アンロードログファイル名_通番.unlog
  • $HDEPATH/caplogparm_BES名
  • tranlist_BES名
出力ファイル:
  • 抽出情報キューファイル(回復対象データのキュー格納)
hdestateコマンドで障害回復対象のバックエンドサーバが存在するノード又は抽出側Datareplicator本体が終了状態になるまで監視します。終了後の手順を次に示します。
  1. エラー情報ファイルにエラーが出力されていないことを確認します。
  2. 障害回復対象のバックエンドサーバが存在するノードだけが終了状態となっているときは,hdestopコマンドを実行して抽出側Datareplicatorを停止します。
手順10:
回復情報ファイルの退避※5
障害回復対象のバックエンドサーバ$HDEPATH/caplogparm_BES名のファイルを別名にします。
コマンド実行例:
$ mv $HDEPATH/caplogparm_BE
S名 $HDEPATH/caplogparm_BE
S名.sav
機能のアンインストールを忘れた場合に誤動作しないためにする作業です。
手順11:
データ連動回復機能2のアンセットアップ
障害回復対象のバックエンドサーバが存在するノードunsetup_toolコマンドを実行します。
コマンド実行例:
$ su
# unsetup_tool(Windows Vista,及びWindows Server 2008の場合はunset_tool)
「Unsetup for <hdecapture_tool> complete.」のメッセージが出力されることを確認します。
手順12:
反映の初期化
マネージャノード反映の初期化をします。
コマンド実行例:
$ hdsstart -i
手順13:
データ連動回復機能の抽出データの送信
マネージャノード抽出側Datareplicatorの送信機能を起動します。このとき,必ず送信機能だけを起動してください。
コマンド実行例:
$ hdestart -s
$ hdestate
送信機能を起動した後で,hdestateコマンドで送信のキューファイルreadオフセットがキューファイルwriteオフセットに追い付くのを監視します。追い付いたらhdestopコマンドを実行して抽出側Datareplicatorを停止します。
手順14:
送信/反映の停止
マネージャノード抽出側送信プロセスと反映プロセスを停止します。
コマンド実行例:
$ hdestop
$ hdsstop
注※1
HiRDBファイルの日付を確認するときは,次のコマンドを実行します。
pdlogcat_s -i バックアップ元HiRDBファイル|grep "First use"
バックアップ元HiRDBファイルとは,連動回復用バックアップファイルの作成元になったHiRDBファイルのことです。「HiRDBファイルシステム領域/HiRDBファイル名」の形式で指定してください。
注※2
アンロードログファイルの日付を確認するときは,次のコマンドを実行します。
pdlogcat_s -i アンロードログファイル名
コマンド実行結果の「First use」の行に出力される日付が,該当するアンロードログファイルに実際に更新ログを格納した日付を示します。logmrgコマンドに指定するアンロードログファイルは,この日付の古い順に指定してください。
注※3
追加するパラメタは,次の内容に従って,ファイルの最後に追加してください。
オペランド名区分設定値説明
RCVR_START06-02より前任意指定できるRCVR_STARTオペランドの数は,4096個までです。
形式
抽出トランザクション情報
このオペランドを省略すると,最初に入力するアンロードログファイルの先頭が障害回復の開始位置と仮定されます。
06-02以降任意指定できるRCVR_STARTオペランドの数は,4096個までです。
形式
{送信先識別子|*}〔,抽出トランザクション情報〕
  • 送信先識別子
    抽出システム定義に指定した送信先識別子を指定します。送信先識別子に「*」を指定すると,すべての送信先が対象になります。このオペランドに送信先識別子だけを指定したときは,入力アンロードログファイルの先頭を回復開始位置とします。
    このオペランドの送信先識別子に「*」を指定したときに,ほかにこのオペランドを指定すると,エラーになります。また,同じ送信先識別子を複数指定すると,エラーになります。
  • 抽出トランザクション情報
    ~〈24けたの16進文字列〉
    抽出トランザクション情報の取得方法については,「9.6.4(1)抽出トランザクション情報(回復開始位置)の取得」を参照してください。
「障害回復対象となる送信先識別子」と「障害回復の回復位置を示す抽出トランザクション情報」を送信先ごとに指定します。
このオペランドを省略すると,すべての送信先識別子を回復して,入力アンロードログファイルの先頭を回復開始位置と解釈されます。
RCVR_RPLSTOP任意
Y:
HiRDB側の連動中止区間を回復対象とします。
N又はY以外の値:
HiRDB側の連動中止区間を回復対象としません。
障害回復の範囲にHiRDB側の連動中止区間が存在していた場合にこの区間を回復対象とするかどうかを指定します。
このオペランドを省略すると,Nが仮定されます。
RCVR_STARTオペランドを指定するときの注意
マッピングキー更新をしていないときだけ,入力アンロードログファイルを先頭から回復できます(マッピングキー更新をしている場合,回復時の二重更新でデータ連動不整合になる可能性があるため)。また,反映側で二重更新によるエラーが発生するため,回復に先立って反映環境定義のskip_sqlcodeオペランドにキー不在エラー(100)及びキー重複エラー(-803)のSQLCODEを設定しておく必要があります。

指定例(下線部が追加したパラメタ)

INPUT = /HiRDBDS/hirdbb/HDE/work/unldlog2_1.unlog,10,UNLDLOG
INPUT = /HiRDBDS/hirdbb/HDE/work/unldlog2_2.unlog,10,UNLDLOG
INPUT = /HiRDBDS/hirdbb/HDE/work/unldlog2_3.unlog,10,UNLDLOG
BLOCKBUF = 22200
RCVR_START = SND01,3BA6E5800000000000000015​
RCVR_RPLSTOP = Y

注※4
「res_file_BES名」のファイルが存在する場合には,ファイルの内容を確認して,下記に従って対処してください(ファイルはテキストファイルです)。
出力内容説明対処方法
「N.G(start nothing)」アンロードログにトランザクションの開始がないデータが存在します。もう1世代前のアンロードログファイルを追加して,手順3から再実行してください。
再実行するときにはres_file_BES名のファイルを削除又は別名で保存してください。
「N.G(end nothing)」アンロードログにトランザクションの終了がないデータが存在します。抽出対象表を格納するすべてのRDエリアに対する参照閉塞が有効となっているかどうか確認してください。
参照閉塞が有効となっている場合:
この出力を無視して,以降の回復手順を続行してください。
参照閉塞が無効となっている場合:
参照閉塞を有効とした後,現時点のカレントまでのアンロードログファイルを追加して,手順3から再実行してください。
再実行するときにはres_file_BES名のファイルを削除又は別名で保存してください。
「N.G(rplstop found)」
「N.G(start nothing,rplstop)」
「N.G(end nothing,rplstop)」
HiRDB側の連動中止区間にわたるトランザクションが存在します。この出力はHiRDB側の連動中止区間が回復対象外であることを示します。HiRDB側の連動中止区間を回復対象外とすることで問題なければ,この出力を無視して以降の回復手順を続行してください。
HiRDB側の連動中止区間を回復対象とする場合はRCVR_RPLSTOP=Yを指定した後,手順6から再実行してください。
注※5
障害回復対象のバックエンドサーバが存在するノードにそのほかのバックエンドサーバが存在する構成の場合,これらのバックエンドサーバに対しても回復ツールが実行されることになります。したがって,障害回復対象以外のバックエンドサーバについては回復に必要なファイルが存在しないなどのエラー(上記の※3を参照)となりますが,これらのエラーは無視してください。

(2) アンロードログファイルによるデータ連動回復の実行でエラーとなった場合の対処方法

アンロードログファイルによるデータ連動回復の実行でエラーとなった場合,アンロードログファイルによるデータ連動回復固有のエラーはすべてKFRB05009-Eメッセージのエラー情報ファイルに出力されます。メッセージ本文の内容は無視して「function:」の部分に出力される情報でエラーの内容を特定してください。「function:」部分の説明を次の表に示します。

表9-14 KFRB05009-Eメッセージの「function:」部分の内容

「function:」部分の内容説明対処方法
analyze error$HDEPATH/caplogparm_BES名ファイルの解析でエラーが発生しました。$HDEPATH/caplogparm_BES名が存在するかどうか確認し,存在しない場合は手順3から再実行してください。ファイルが存在するときは,該当するファイル内に追加したオペランドの指定が間違っています。オペランドを修正した後,手順7から再実行してください。
env open_error環境変数定義ファイル(hde_toolenv)のオープンでエラーが発生しました。環境変数定義ファイルが$HDEPATH下に作成されているかどうかを確認し,作成されていない場合は作成後に手順7から再実行してください。
inttrn error回復ツールの初期化処理でエラーが発生しました。このエラーはメモリ不足のときだけ発生します。ほかの稼働中のプログラムを停止させて空きメモリを増やした後,手順7から再実行してください。
open_errorアンロードログ分割ファイルのオープン処理でエラーが発生しました。logmrgコマンドによって作成されるアンロードログ分割ファイルが正しく作成されていない可能性があります。手順3から再実行してください。
read_errorアンロードログ分割ファイルの読み込み処理でエラーが発生しました。logmrgコマンドによって作成されるアンロードログ分割ファイルが正しく作成されていない可能性があります。手順3から再実行してください。
trnout errorトランザクションリストの出力処理でエラーが発生しました。トランザクションリストの出力先ディレクトリの容量が不足した可能性があります。出力先ディレクトリを変更後,手順7から再実行してください。
trnget errorトランザクションリストの入力処理でエラーが発生しました。トランザクションリストが正しく作成されていません。手順11を実行後,手順6から再実行してください。
blk_invalidアンロードログファイル中に不正なログブロックを検出しました。内部矛盾エラーです。開発元に連絡してください。
start point err抽出トランザクション情報の指定が間違っています。RCVR_STARTオペランドで指定された抽出トランザクション情報が不正又は入力に指定したアンロードログファイルが不足しています。
抽出トランザクション情報指定不正の場合は修正後に手順7から,アンロードログファイル指定不足の場合は入力とするアンロードログファイルを追加して手順3から再実行してください。
seq_invalidアンロードログファイル中のログブロック出現順序が間違っています。logmrgコマンド実行時に指定したアンロードログファイル,又は連動回復用バックアップファイルの順序が不正(ログ出力日付順に昇順となっていない)である可能性があります。入力とするアンロードログファイル,又は連動回復用バックアップファイルの指定順序を確認して,手順3から再実行してください。
param len error環境変数のTOOL_OUTPUT_DIRに指定したディレクトリパス名の長さが間違っています。指定値を修正後,手順7から再実行してください。
remain trnentryデータ連動回復機能1で作成したトランザクションリストと,データ連動回復機能2で回復したトランザクション数が不一致です。内部矛盾エラーです。開発元に連絡してください。
注※
(1)アンロードログファイルによる回復手順」を参照してください。