管理の手引き


DB2 データ・リンク・マネージャーに関する考慮事項

以下の節では、DATALINK 列を含む表が存在する場合に適用される情報が記載されています。 DATALINK 列の完全な説明については、 SQL 解説書 の CREATE TABLE ステートメントを参照してください。

破損回復の考慮事項

アプリケーションが、DB2 データ・リンク・マネージャーを実行しているデータ・リンク・サーバーに関連する SQL 要求を出すと (FILE LINK CONTROL 属性で DATALINK 列を使用)、 データベース・マネージャーは、データ・リンク・サーバーに作業を分散します。 また、どのデータ・リンク・サーバーがトランザクションに関係しているかの記録を保持します。 アプリケーションがトランザクションの COMMIT を出すと、 データベース・マネージャーは 2 フェーズ・コミット・プロトコルを使用して、 トランザクションをコミットします。 最初のフェーズでは、データベース・マネージャーは PREPARE ログ・レコードを書き込み、 すべてのデータ・リンク・サーバーに PREPARE 要求を配布します。 それぞれのデータ・リンク・サーバーは次のいずれかで応答します。

最初のフェーズでは、すべてのデータ・リンク・サーバーが "YES" と応答すると、 成功したものとみなされます。

2 番目のフェーズでの処理は、1 番目のフェーズの結果によって異なります。 少なくとも 1 つのデータ・リンク・サーバーが "NO" と応答した場合、 データベース・マネージャーは、 関連するすべてのデータ・リンク・サーバーに ABORT 要求を配布します。 トランザクションはロールバックされ、 戻りコード "03" と共にエラー・メッセージ SQL0903N がアプリケーションに戻されます。 そうでない場合には、データベース・マネージャーは、 データ・リンク・サーバーの関与がない場合に通常行うとおりに、 トランザクションのコミットを継続します。 この処理の最後に、トランザクションに関係する すべてのデータ・リンク・サーバーに COMMIT 要求を配布します。

何らかのトランザクションを PREPARED 状態にしたままでデータ・リンク・サーバーに障害が起きた場合には、 これらのトランザクションは未確定トランザクション と呼ばれます。 データベース・マネージャーは、これらのトランザクションの成りゆきを追跡し、 最終的にデータ・リンク・サーバーでこれらを随時解決します。 障害によってデータ・リンク・サーバー上で未確定のトランザクションが作成された可能性があるとデータベース・マネージャーが判別する場合には、 そのデータ・リンク・サーバーの状態を、破損回復の必要なものとしてマークします。 この状態であるうちは、どの SQL 要求もデータ・リンク・サーバーに関係することはできません。 SQL 要求を出したアプリケーションには、SQL0357N が戻りコード "03" と共に戻されます。

RESTART、ACTIVATE DATABASE、または最初の CONNECT 処理では、 データベース・マネージャーは、それぞれの構成されたデータ・リンク・サーバーに接続しようとし、 それらを打ち切るか、コミットすることにより、 この未確定トランザクションを解決しようとします。 データベース・マネージャーでも未確定なトランザクションを除いて、 すべての未確定トランザクションが解決されると、 データ・リンク・サーバーの状態は、使用可能なものとしてマークされます。 使用可能な状態では、データ・リンク・サーバーに関係する SQL 要求は許可されます。 未確定トランザクションを解決しようと試みた後で、 依然としてデータ・リンク・サーバーに解決の必要な未確定トランザクションがあるとデータベース・マネージャーが判別した場合は、 そのデータ・リンク・サーバーの状態を、破損回復の必要なものとしてマークします。 これは、たとえば、RESTART、ACTIVATE DATABASE、 または最初の CONNECT 処理でデータ・リンク・サーバーが使用できない場合に起こります。 あるいは、その処理の途中でデータ・リンク・サーバーに障害が発生しました。

データベースに構成されたデータ・リンク・サーバーが破損回復の必要な状態の場合には、 データベース・マネージャーは、 SQL 要求がこのデータ・リンク・サーバーと関係することを許可しません。 データベースの他のデータに関連する SQL 要求は依然として許可されます。 データベース・マネージャーは、回復の必要なそれぞれのデータ・リンク・サーバーで非同期的に破損回復を実行しようとするプロセスを開始します。 プロセスで破損回復が正常に完了すると、 データ・リンク・サーバーの状態は使用可能としてマークされ、 したがって、関連する SQL 要求を実行できるようになります。

バックアップ・ユーティリティーについての考慮事項

DB2 はバックアップ・ユーティリティーが完了するまでには、 DB2 データ・リンク・マネージャーを実行しているデータ・リンク・サーバーもバックアップされるようにします。 (バックアップ・ユーティリティーはオンラインでもオフラインでも実行でき、 バックアップ・イメージにはデータベースまたは表スペースのいずれかを指定できます。) 後続する記述は、DATALINK 列でリンクされていて RECOVERY パラメーターが YES に設定されているものだけに適用されます。 (DATALINK 列によって参照されているファイルで、 RECOVERY=NO が指定されていないものはバックアップされません。)

ファイルがリンクされると、データ・リンク・サーバーは、 TSM などのアーカイブ・サーバーまたはディスクに、 それらが非同期でコピーされるように、スケジュールを組みます。 バックアップ・ユーティリティーが実行されると、 DB2 はコピーされるようにスケジュールが組まれたすべてのファイルがコピーされるようにします。 バックアップ処理の始めには、 DB2 構成ファイルで指定されたすべてのデータ・リンク・サーバーが実行されていることを DB2 は確認します。 データ・リンク・サーバーに1つ以上のリンク・ファイルが存在する場合、 バックアップ操作が完了するまで使用可能でなければなりません。 バックアップ操作が完了する前にデータ・リンク・サーバーが使用不能になる場合、 バックアップ操作は不完全なものとして宣言されます。

ファイルのリンクが解除されると、 ON UNLINK パラメーターで指定された値に応じて、リンクは削除されるか、 直前のファイルに戻されます。 バックアップ操作が正常に実行されると、データ・リンク・サーバーは、 アーカイブ・サーバー (ディスクまたは TSM のいずれか) にあるファイルのアーカイブ版をクリーンアップすることができます。 num_db_backups データベース構成パラメーターは、 ファイルのアーカイブ版 (リンク解除されたもの) が削除される前に実行される DB2 データベース・バックアップの数を指定します。 この構成パラメーターについての詳細は、第 32 章, DB2 の構成を参照してください。

リンクされていないファイルが削除されると、リンクされていないファイルについての情報もデータ・リンク・サーバー登録表から削除されます。

復元およびロールフォワードについての考慮事項

下記の情報は、表に対して RECOVERY=YES オプションが定義された DATALINK 列 (複数も可能) が存在する場合当てはまります。 表で RECOVERY=NO オプションが定義されている DATALINK 列が定義されている場合、 表は復元処理終了後に Datalink_Reconcile_Pending 状態になります。 詳細は、データ・リンクの調整を参照してください。

復元操作中には、DATALINK 列をもつ表は、次のいずれかの状態になります。

これらの状態は、復元またはロールフォワード・ユーティリティーが実行されるときに、 db2diag.log ファイルに報告されます。 この情報を得るために、db2dart コマンドを使用することもできます。

データベースや表スペースを復元しても、 WITHOUT DATALINK オプションを指定しない 場合、 復元操作が正常に実行されるには、次の条件が満たされなければなりません。

注:ファイルをリンクされていない状態からリンクされた状態へとマーキングする過程で、 そのファイルをアーカイブ・サーバーから取り出してからファイル・システムに入れなければならないかもしれません。 この処理を行う間にエラーが起きた場合 (たとえば、 ファイル名が重複しているためにファイル・システムへコピーできないときなど)、 それに対応している表は Datalink_Reconcile_Pending 状態になります。

データベースまたは表スペースを復元するときに WITHOUT DATALINK オプションを指定した 場合で、 DATALINK データを含む 1 つまたは複数のデータ・リンク・サーバーが使用できない場合には、 その使用できないサーバー上で DATALINK 値のある表を含むすべての表スペースは、 RESTORE PENDING 状態に入れられます。

ロールフォワードせずにデータベースをオフライン・バックアップから復元する

注:ロールフォワードをせずに復元できるのはデータベース・レベルだけで、 表スペース・レベルでは不可能です。 ロールフォワードせずにデータベースを復元するには、 回復不能のデータベース (循環ログを使用するデータベース) を復元するか、 復元ユーティリティーで WITHOUT ROLLING FORWARD パラメーターを指定します。

WITHOUT DATALINK オプションを指定した復元ユーティリティーを使用する場合、 DATALINK 列をもつすべての表は Datalink_Reconcile_Pending 状態になり、 復元操作中にはデータ・リンク・サーバーによる調整は一切行われません。

WITHOUT DATALINK オプションを使用していないか、 またはデータ・リンク・サーバーが使用可能で、 DATALINK 列についての情報がすべて登録表に記録されている場合、 バックアップ・ファイルに記録されているすべてのデータ・リンク・サーバーで次のことが起きます。

データベースおよび表スペースを復元してからログの終わりまでロールフォワードする

データベースまたは表スペースを復元してからログの終わりまでロールフォワードすると (すべてのログが提供されている)、調整検査を行う必要はありません (WITHOUT DATALINK パラメーターが指定されているかどうかにかかわりなく)。 ロールフォワード操作ですべてのログが提供されたかどうか分からない場合、 または DATALINK 値を調整する必要があると思える場合には、次のことを行います。

  1. 関係している表 (または複数の表) に対して、以下の SQL ステートメントを発行します。
       SET CONSTRAINTS FOR tablename TO DATALINK RECONCILE PENDING
    

    このステートメントは、 表を Datalink_Reconcile_Pending 状態 および check-pending 状態にします。

  2. 表を check-pending 状態にしたくない場合は、 次の SQL ステートメントを発行します。
       SET CONSTRAINTS FOR tablename IMMEDIATE CHECKED
    

    これは、表を check-pending 状態から解放し、 Datalink_Reconcile_Pending 状態のままにします。 表をこの状態から解放するには、調整ユーティリティーを使用する必要があります。 詳細については、データ・リンクの調整を参照してください。

データベースおよび表スペースを復元してからある時点までロールフォワードする

データ・リンク表を使用して作業する際、 ログの最後まで、または指定時刻までのロールフォワードを実行できます。

指定時刻までロールフォワードされる表スペースの表は、ロールフォワード操作の終了時には Datalink_Reconcile_Pending 状態になります。 この状態から解放するには、調整 (reconcile) ユーティリティーを使用する必要があります。 詳細については、データ・リンクの調整を参照してください。

時刻指定ロールフォワードの例

バックアップおよび回復処理をするために必要なファイルを示す簡単なシナリオは、次のとおりです。 この例は、DATALINK タイプの列の単一行に加える変更と回復をサポートするために DB2 データ・リンク・マネージャーが保持する必要のあるファイルを示します。 この例では、最後のバックアップよりも以前のバックアップを使って、 ファイルの時刻指定回復は行わないことが前提になっています。 DB2 データ・リンク・マネージャーを実行しているデータ・リンク・サーバーには、このような制約事項はありません。 この例のデータベース管理方針 (つまり、num_db_backups データベース構成パラメーターは 1 に設定される) では、 次のバックアップが実行されるまで、リンク解除されたファイルが保持されます。 たとえば、fileA に注目してください。 このファイルのリンクは time 2 で解除されたため、time 3 まで保持されてから削除されます。
Time 1 2 3 4 5 6 7
活動 作成 更新 バックアップ 更新 更新 削除 5 に復元
列値 valueA valueB valueB valueC valueD - valueD
リンクされたファイル fileA fileB fileB fileC fileD - fileD
データ・リンク・ファイル・マネージャーにより保持されるエクストラ・ファイル
fileA
fileB fileB、fileC fileB、fileC、 fileD fileB、fileC
注:リンク・ファイルの回復は、 データベースの他の部分と同じときに実行されます。

DB2 データ・リンク・マネージャーと回復の対話

次の表は、実行可能な様々な種類の回復、 復元およびロールフォワード処理時に発生する DB2 データ・リンク・マネージャー処理、 回復終了後に調整ユーティリティーを実行する必要があるかどうかを示します。
回復の種類 復元時の DB2 データ・リンク・マネージャーの処理 ロールフォワード時の DB2 データ・リンク・マネージャーの処理 調整
回復不能データベース (logretain=NO)
データベース復元 高速な調整が実行される なし ファイル・リンクで問題があると思われる場合には、任意選択で実行できる
WITHOUT DATALINK オプションを使ったデータベースの復元 Datalink_Reconcile _Pending 状態の表 なし 必須
回復可能なデータベース (logretain=YES)
WITHOUT ROLLING FORWARD オプションを使用したデータベースの復元 高速な調整が実行される なし 任意選択
WITHOUT ROLLING FORWARD および WITHOUT DATALINK オプションを使用したデータベースの復元 Datalink_Reconcile _Pending 状態の表 なし 必須
データベース復元およびログの終わりまでのロールフォワード 処置なし 処置なし 任意選択
WITHOUT DATALINK オプションを使用したデータベース復元、 およびログの終わりまでのロールフォワード 処置なし 処置なし 任意選択
表スペースの復元、およびログの終わりまでのロールフォーワード 処置なし 処置なし 任意選択
WITHOUT DATALINK オプションを使用した表スペースの復元、 およびログの終わりまでのロールフォワード 処置なし 処置なし 任意選択
データベースの復元と時刻指定のロールフォワード 処置なし Datalink_Reconcile _Pending 状態の表 必須
WITHOUT DATALINK オプションを使用したデータベースの復元、 および時刻指定のロールフォワード 処置なし Datalink_Reconcile _Pending 状態の表 必須
表スペースの復元および時刻指定のロールフォワード 処置なし Datalink_Reconcile _Pending 状態の表 必須
WITHOUT DATALINK オプションを使用した表スペースの復元、 および時刻指定のロールフォーワード 処置なし Datalink_Reconcile _Pending 状態の表 必須
別のデータベース名、別名、ホスト名、 またはロールフォワードのないインスタンスへのデータベースの復元 (を参照のこと) Datalink_Reconcile _Not_Possible 状態の表 なし 任意選択、しかし Datalink_Reconcile _Not_Possible 状態の表は手作業で修正する
別のデータベース名、別名、ホストまたはインスタンスへのデータベースの復元、 およびロールフォワード 処置なし Datalink_Reconcile _Not_Possible 状態の表 任意選択、しかし Datalink_Reconcile _Not_Possible 状態の表は手作業で修正する
使用できないバックアップからのデータベースの復元 (データ・リンク・サーバーでイメージがガーベッジ・コレクションされた)。 ロールフォワードは行われない (を参照のこと) Datalink_Reconcile _Not_Possible 状態の表 なし 任意選択、しかし Datalink_Reconcile _Not_Possible 状態の表は手作業で修正する
使用できないバックアップからのデータベースの復元 (データ・リンク・サーバーでイメージがガーベッジ・コレクションされた)、そしてロールフォワードを行う。 処置なし Datalink_Reconcile _Not_Possible 状態の表 任意選択、しかし Datalink_Reconcile _Not_Possible 状態の表は手作業で修正する
使用できないバックアップからの表スペースの復元 (データ・リンク・サーバーでイメージがガーベッジ・コレクションされた)、そしてロールフォワードを行う。 処置なし Datalink_Reconcile _Not_Possible 状態の表 任意選択、しかし Datalink_Reconcile _Not_Possible 状態の表は手作業で修正する
WITHOUT DATALINK オプションを指定した、 使用できないバックアップからのデータベースの復元 (データ・リンク・サーバーでイメージがガーベッジ・コレクションされた)。 ロールフォワードは行われない (を参照のこと) Datalink_Reconcile _Pending 状態の表 なし 必須
WITHOUT DATALINK オプションを指定した、 使用できないバックアップからのデータベースの復元 (データ・リンク・サーバーでイメージがガーベッジ・コレクションされた)、 そしてロールフォワードを行う。 処置なし Datalink_Reconcile _Not_Possible 状態の表 任意選択、しかし Datalink_Reconcile _Not_Possible 状態の表は手作業で修正する
WITHOUT DATALINK オプションを指定した、 使用できないバックアップからの表スペースの復元 (データ・リンク・サーバーでイメージがガーベッジ・コレクションされた)、 そしてロールフォワードを行う。 処置なし Datalink_Reconcile _Not_Possible 状態の表 任意選択、しかし Datalink_Reconcile _Not_Possible 状態の表は手作業で修正する

注:

WITHOUT ROLLING FORWARD オプションを指定した、 オフライン・バックアップを使用した復元 (logretain がオン)、 またはオフライン・バックアップを使用した復元 (logretain がオフ)。

Datalink_Reconcile_Not_Possible 状態から表を取り除く

DATALINK 列付きの復元表 (複数も可) が Datalink_Reconcile_Not_Possible 状態になるのは、 次のような場合です。

DATALINK 列の値が有効でないとしても、DB2 で表をアクセスすることはまだ可能です。 矛盾しているかもしれない DATALINK 列の値をもつ表へのアクセスを禁止したい場合には、 SET CONSTRAINTS for tablename TO DATALINK RECONCILE PENDING コマンドを発行します。 次のように DATALINK 値を更新できます。

それから、次のコマンドを発行して Datalink_Reconcile_Not_Possible をリセットします。

   SET CONSTRAINTS FOR tablename DATALINK RECONCILE PENDING IMMEDIATE UNCHECKED

データ・リンクの調整

データ・リンクを調整するには、調整 (reconcile) ユーティリティーを使用します。 このユーティリティーは DB2 から開始され、 DATALINK 列値で参照される DB2 データ・リンク・マネージャーを実行しているすべてのデータ・リンク・サーバーが関係しています。 参照ファイルがデータ・リンク・サーバーに存在していること、 またはリンクを再確立できることを検査する妥当性検査を実行します。 以下の節では、データ・リンクを調整する必要を DB2 が見極める方法と、調整方法を説明します。

データ・リンク・サーバーのファイル参照が存在しない場合、または再確立できない場合、 調整ユーティリティーはエラーが起きた行のコピーと各エラーの理由を、 例外表 (指定した場合) に置きます。それから、エラーが起きた行を修正します。 例外表が指定されていない場合には、ファイル参照が再確立できなかった DATALINK 列の値が例外報告ファイルにコピーされ、これに列 ID と理由も入れられます。 この例外表 (指定した場合) の情報またはレポートを使用すると、 行を更新して必要な訂正を行えます。 調整ユーティリティーで使用される例外表は、 ロード・ユーティリティーで使用される例外表と同じです。 ロード・ユーティリティーについての詳細は、データ移動ユーティリティー 手引きおよび解説書 を参照してください。 レポートでは、report.exp (.exp 拡張子は、 調整ユーティリティーが提供します) という命名規則が使用されます。 たとえば、次のステートメントを使用して調整ユーティリティーを呼び出せます。

   db2 RECONCILE dept DLREPORT  /u/scottba/report FOR EXCEPTION excptab

このコマンドは、dept と呼ばれる表を調整し、 ユーザーにより作成された例外表 excptab に例外を書き込みます。 調整中にリンク解除されたファイルについての情報は、 ファイル report.ulk に書き込まれます。 このファイルは、ディレクトリー /u/scottba に作成されます。 FOR EXCEPTION excptab が指定されていない場合には、 例外情報がファイル report.exp に書き込まれます。 このファイルは、ディレクトリー /u/scottba に作成されます。 調整ユーティリティーについての詳細は、コマンド解説書 を参照してください。

調整が必要な状態の検出

次のような状態では、調整ユーティリティーを実行する必要があるかもしれません。

調整手順の要約

時刻指定回復のためにまたは DB2 データ・リンク・マネージャーを実行しているデータ・リンク・サーバーと DB2 制御情報が一致しないために、 データ・リンクを調整する必要が生じる場合、次のことを行ってください。

  1. SET CONSTRAINTS ステートメントを発行して、 表をDatalink_Reconcile_Pending 状態にします。 (ある場合、DB2 がこれを行います。)
  2. 調整ユーティリティーを使用してリンクを解決してから、 例外表または例外報告の例外に対して適切な処置を実行します。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]