ジャーナル処理の主な利点の 1 つは、ジャーナル処理されたオブジェクトを、最終の保管以降の現行の状 態に戻すことができることです。
ジャーナル変更を使用して、ジャーナル処理されたオブジェクトに生じるさまざまな損傷から回復すること ができます。例えば、オブジェクトが損傷して使用不能になったり、アプリケーション・プログラムのエラ ーでレコードが間違って更新されたり、あるいはオブジェクトの更新に間違ったデータが使用されることな どがあります。このような場合には、オブジェクトの保管されたバージョンを単純に復元しただけで、相当 量のデータが消失することがあります。
ジャーナル処理済み変更の適用 (APYJRNCHG) またはジャーナル処理済み変更拡張の適用 (APYJRNCHGX) コ マンドを使用してジャーナル処理済み変更を適用した場合は、消失するデータの量が大幅に減少することが あります。変更前イメージがジャーナル処理されている場合は、ジャーナル処理済み変更の除去
(RMVJRNCHG) コマンドを使用して、間違って更新されたレコードまたは間違っているデータを回復すること
ができます。このコマンドは、オブジェクトに行われた変更を除去する (またはバックアウトする) ことが できます。
以下のオブジェクト・タイプに変更を適用するには、APYJRNCHG コマンドを使用します。
v ライブラリー
v データベース・ファイル
v 統合ファイル・システム・オブジェクト
v データ域
v データ待ち行列
変更をデータベース・ファイルに適用するには、APYJRNCHGX コマンドを使用します。
以下のオブジェクト・タイプに加えられた変更を除去するには、RMVJRNCHG コマンドを使用します。
v データベース・ファイル
v データ域
ジャーナル処理済み変更を適用または除去してオブジェクトを回復するには、そのオブジェクトが現在ジャ ーナル処理されていることが必要です。ジャーナル項目はオブジェクトと同じジャーナル ID (JID) を持た なければなりません。ジャーナル ID が同じになるようにするには、オブジェクトのジャーナル処理を開 始した直後にオブジェクトを保管してください。
ジャーナル変更をオブジェクトの復元されたコピーに適用するか、または除去するためには、オブジェクト はジャーナル処理中に保管されていなければなりません。ジャーナル処理されたオブジェクトの保管および JID の詳細については、ジャーナル処理開始後にオブジェクトを保管しなければならない理由の項を参照し てください。
すでに削除されたジャーナルにジャーナル処理されていたオブジェクトを回復する必要がある場合、保管さ れたコピーからジャーナルを復元するか、同じ名前の新しいジャーナルを同じライブラリーで作成します。
次に、オブジェクトと必要なすべてのレシーバーを復元してから、ジャーナル処理済み変更をそのジャーナ ルと一緒に適用または除去してください。「ジャーナルの処理」画面のオプションを使用して、システム上 にまだあるすべてのジャーナル・レシーバーを再び関連付けることができます。 「ジャーナルの処理」画
ジャーナル・レシーバーの項目のタイプによっては、適用プロセスまたは除去プロセスが停止するものがあ ります。これらの項目は、システムが再構成できないイベントによって書き込まれます。固有なものとして 定義されるデータベース・ファイルの複写キーのような、ある非論理的な条件では、プロセスが終了するこ ともあります。
APYJRNCHG、APYJRNCHGX、または RMVJRNCHG コマンドのオブジェクト・エラー・オプション
(OBJERROPT) を使用して、システムがどのようにエラーに応答するかを判別します。
OBJERROPT(*CONTINUE) を選択していて、エラーが発生した場合は、ジャーナル項目の処理は、そのエ
ラーに関連するオブジェクトについてのみ停止します。他のオブジェクトについては、処理が続行されま す。システムは、そのオブジェクトに対するジャーナル処理済み変更の処理が失敗したことを示す診断メッ セージを送信します。システムは、出力ファイル・レコード内の特定オブジェクトに対する処理が早期に終 了したことも示します。 OBJERROPT(*END) を選択した場合は、エラーが発生するとすべてのオブジェク トの処理が終了します。
活動時保管機能を使用してジャーナル処理済みオブジェクトを保管すると、FROMENT(*LASTSAVE) また
は FROMENTLRG(*LASTSAVE) を指定してジャーナル処理済み変更を適用または除去しなければならな
い場合に、より迅速にオブジェクトを回復することができます。活動時保管機能を使用してジャーナル処理 済みオブジェクトを保管すると、システムは、適用操作または除去操作にどちらの開始ジャーナル順序番号 が必要であるかを示す情報を保管してから復元します。ジャーナル処理済み変更を適用または除去するすべ てのオブジェクトにこの情報が使用可能なら、システムは、ジャーナル・レシーバーをスキャンしてこの開 始点を判別する必要はありません。ジャーナル・レシーバー・データをスキャンして開始点を見つけるに は、時間がかかります。
また、オブジェクトを保管するときに活動時保管機能を使用すると、最後に保管したものではないオブジェ クトのバージョンを復元できるほか、引き続き適用コマンドや除去コマンドに FROMENT(*LASTSAVE)
または FROMENTLRG(*LASTSAVE) を指定して、変更を正常に適用または除去することができます。
ジャーナル処理済み変更をジャーナル・コード別に適用または除去する処置は、ジャーナル処置済み変更を 適用または除去する操作が、どのようにジャーナル項目タイプを処理するかを示します。また、オブジェク トの処理を終了させる項目タイプと、項目が適用または除去されるときに実行される処理も示します。
部分レシーバーを使用して、オブジェクトに変更を適用するか、あるいはオブジェクトから変更を除去する ことができます。保管されたレシーバーを復元しようとしたが、システムにさらに最新のバージョンのレシ ーバーがある場合には、エスケープ・メッセージが表示され、そのレシーバーを復元することはできませ ん。 システムは、最も完全なバージョンが保持されるようにします。
RMVJRNCHG コマンドで部分レシーバーをチェーンの最初のレシーバーとして使用できるのは、
FROMENT または FROMENTLRG パラメーターに順序番号を指定している場合だけです。
関連概念:
64ページの『ジャーナル処理開始後にオブジェクトを保管しなければならない理由』
ジャーナル処理を開始した後に、ジャーナル処理対象のオブジェクトを必ず保管してください。
88ページの『SAVCHGOBJ を使用したジャーナル・レシーバーの保管』
ジャーナル・レシーバーを保管する 1 つの技法は、変更されたオブジェクトの保管 (SAVCHGOBJ) コマ ンドを使用することです。 SAVCHGOBJ コマンドを使用してジャーナル・レシーバーを保管するときは、
接続されたジャーナル・レシーバーを省略してください。
ジャーナル処理済み変更の適用:
オブジェクトが損傷したり使用不能になったりした場合は、ジャーナル処理済み変更の適用 (APYJRNCHG) またはジャーナル処理済み変更拡張の適用 (APYJRNCHGX) コマンドを使用してオブジェクトを回復できま
す。部分的なトランザクションと一緒に保管されたオブジェクトを復元する場合は、ジャーナル処理済み変 更をそのオブジェクトに適用しないと、それは使用可能になりません。
APYJRNCHG と APYJRNCHGX の違い
ジャーナル処理済み変更の適用 (APYJRNCHG) コマンドとジャーナル処理済み変更拡張の適用 (APYJRNCHGX) コマンドには、若干の違いがあります。 APYJRNCHGX コマンドでは項目をデータベース・ファイルにのみ適 用するため、項目をライブラリー内のすべてのファイルに適用することが必要です。 APYJRNCHG コマン ドは、項目を非データベース・オブジェクトにも適用されます。
すべてのオブジェクトへのジャーナル処理済み変更の適用
APYJRNCHG コマンドで OBJ(*ALLJRNOBJ) を指定して、ジャーナルに対してジャーナル処理されたすべ てのオブジェクトにジャーナル処理済み変更を適用することができます。
ジャーナル処理済み変更とコミットメント制御の適用
コミットメント境界 (CMTBDY) パラメーターを使用することによって、ジャーナル処理済み変更の適用操 作中にコミットメント・トランザクション境界が守られていることを確認することができます。 CMTBDY パラメーターのデフォルト値は *YES です。システムがオブジェクトに対する適用または除去プロセスを 停止させるジャーナル項目に到達すると、コミットメント境界は守られないことがあります。
注: CMTBDY パラメーター値に関係なく、コミットメント制御下で当初に実行された任意のデータベー
ス・ファイルのオブジェクト・レベル操作は、適用時にコミットメント制御下で実行されます。コミットメ ント制御トランザクションが当初コミットされた場合、対応するコミット項目が適用されるときにオブジェ クト・レベルの操作がコミットされます。コミットメント制御トランザクションが当初ロールバックされた 場合、対応するロールバック項目が適用されるときにオブジェクト・レベルの操作がロールバックされま す。コミットメント制御操作が、適用されるジャーナル項目の範囲内で終了しない場合、変更はロールバッ クされます。
エラー処理
処理不能なジャーナル項目に出会うと、システムは、そのオブジェクトの適用処理または適用操作全体のい ずれかを停止します。APYJRNCHG または APYJRNCHGX コマンドのオブジェクト・エラー・オプション
(OBJERROPT) パラメーターで処理できないジャーナル項目に出会ったときにシステムがどのように振る舞
うかを指定することができます。 OBJERROPT(*CONTINUE) を指定すると、システムは、エラーのある特 定のオブジェクトに対する適用処理を終了しますが、適用操作の他のオブジェクトに対する適用処理は継続 します。 OBJERROPT(*END) を指定すると、システムは適用操作全体の処理を終了します。 OBJERROPT パラメーターは、ジャーナル処理済み変更の除去 (RMVJRNCHG) コマンドにも使用できます。ジャーナル処 理済み変更をジャーナル・コード別に適用または除去する処置は、どの項目タイプがオブジェクトの処理を 停止させたかを示しています。
変更の適用開始前に
まず、オブジェクトを損傷の生じていない状態に再確立しなければなりません。
v オブジェクトを再確立するためには、オブジェクトの直前の保管コピーを復元してください。オブジェ クトはジャーナル処理中に保管しておかなければなりません。
v ファイルのコピー (CPYF) コマンドを使用してデータベース物理ファイルを保管した場合は、CPYF コ マンドを使用してメンバーを復元します。この場合、既存のオブジェクトの内容を古い値でオーバーレ