リリース情報


|10.1 第 8 章 データベースの回復

|10.1.1 中断入出力の使用法

| | | | |

|第 8 章「データベース・リカバリー」に、中断入出力関数の使用法に関するセクションを追加、更新します。

|注:
db2inidb ユーティリティーに関する下記の情報を、「バージョン 7.2 新着情報」に |記載されている情報と置き換えてください。 |

|db2inidb は DB2 に添付された新しいツールで、クラッシュ・リカバリーを実行でき、また |データベースをロールフォワード保留状態にすることができます。

|中断入出力は、連続的なシステム使用可能性を、オンライン分割ミラー・ハンドリングの |フル・インプリメンテーション (つまりデータベースをシャットダウンせずにミラーを |分割) を提供することでサポートします。大きなデータベースでバックアップをオンラインまたは |オフラインにすることが難しい場合は、中断入出力と分割ミラーを使用してミラー・イメージから |バックアップまたはシステム・コピーを行うことができます。

|中断入出力は、データベースの分割ミラー・イメージが整合性のあるものであることを |確認するためにディスク書き込みを防止します。データベースが使用停止の間、 |オンライン・バックアップおよびリストア以外のすべてのデータベース操作は |通常どおり機能します。ただし、バッファー・プールまたはログ・バッファーから |ログにダーティー・ページをフラッシュしようとしてハングする操作もいくつかあります。 |通常、データベース入出力が再開してから、これらの操作を再開する必要があります。 |データベース入出力が、元々中断されていた接続と同じ接続で再開されることが重要です。 |同じ接続でないと、バッファー・プールからディスクにダーティー・ページを |フラッシュする要求を行った場合に、ハングする可能性があります。

|データベースのミラーリングは主として、データベース・ディレクトリーの |内容をすべてコピーすることです。ログ・ディレクトリーおよび表スペース・コンテナーが |データベース・ディレクトリーにない場合は、それらをコピーすることもまた必要です。 |分割ミラーリングされたデータベースはこれらのディレクトリー・パスに従属しているため、 |これらのディレクトリーのコピー先のパスは、1 次システムのディレクトリーと同じにする |必要があります。つまり、インスタンスは同じでなければなりません。 |この従属関係のため、db2inidb ツールの新規 "relocate" オプションが |使用されているのでなければ、同じシステム上のデータベースを 1 次システムとして |ミラーリングすることはできません。

|"relocate" オプションの目的は、指定された構成ファイルを使用して、 |指定のシステム上のデータベースを再配置することです。これには、内部データベース・ディレクトリー、 |コンテナー・ディレクトリー名、ログ・ディレクトリーの変更、 |インスタンス名の変更、およびデータベース名の変更が関係します。 |データベース・ディレクトリー、コンテナー・ディレクトリー、および |ログ・ディレクトリーが、同じシステム上の異なるディレクトリー・パスに |1 次データベースとして正常にミラーリングされたと想定すると、 |db2inidb ツールを "relocate" オプションと一緒に使用して、 |ミラーリングされたデータベースの内部パスを変更することができます。 |このオプションの使用法は以下の通りです。

|ストレージ装置のミラーリングの度合いによって、db2inidb の使用法は変わります。 |以下の使用法では、データベース全体がストレージ・システムを通じて一貫してミラーリングされていることを |想定しています。

|マルチノード環境で、いずれかの区分から分割イメージを使用できるようにするには、 |db2inidb ツールを区分それぞれで実行する必要があります。 |db2inidb ツールは、すべての区分で同時に実行することができます。

| |

  1. |レプリケーション・データベースを作成する

    |この目的は、1 次データベースの |レプリケーションを読み取りに使用することです。 |レプリケーション・データベースの作成手順は以下の通りです。

    1. |次のコマンドを入力して、1 次データベースで入出力書き込みを中断します。
      |     db2 set write suspend for database
    2. |オペレーティング・システム・レベル・コマンドを使用して、1 次データベースからミラーを分割します。
    3. |次のコマンドを入力して、1 次データベースで入出力書き込みを再開します。
      |     db2 set write resume for database

      |コマンドの実行後、1 次データベースは正常な状態に戻るはずです。

    4. |データベースの分割ミラーを別のシステムからマウントします。
    5. |次のコマンドを入力して、データベース・インスタンスを開始します。
      |     db2start
    6. |次のコマンドを入力して、DB2 クラッシュ・リカバリーを開始します。
      |db2inidb database_name AS  SNAPSHOT

      |

      |注:
      このコマンドは、中断書き込み状態を除去し、 |分割時に未了であったトランザクションによる変更をロールバックします。 |
      |

    |この処理はオフライン・バックアップにも使用することができますが、 |1 次データベースにリストアする場合、ログ・チェーンが一致しないために、このバックアップを |ロールフォワードに使用することはできません。 |

  2. |分割ミラーをスタンドバイ・データベースとして使用する

    |ミラーリングされた (スタンドバイ) データベースは |ログを通じて連続的にロールフォワードするため、1 次データベースで作成されている新しいログは、 |1 次システムから絶えずフェッチされます。分割ミラーをスタンドバイ・データベースとして使用する |方法は以下の通りです。

    1. |1 次データベースで入出力書き込みを中断します。
      |	db2 set write suspend for database
    2. |オペレーティング・システム・レベル・コマンドを使用して、1 次データベースからミラーを分割します。
    3. |1 次データベースで入出力書き込みを再開し、1 次データベースが正常処理に戻るようにします。
      |	db2 set write resume for database
    4. |データベースの分割ミラーを別のシステムにマウントします。
    5. |ミラーをロールフォワード保留状態にして、ミラーをロールフォワードします。
      |	db2inidb database_name AS STANDBY

      |

      |注:
      このコマンドは、中断書き込み状態を除去し、ミラーリングされたデータベースをロールフォワード保留状態にします。 |
    6. |ユーザー出口プログラムをセットアップしてログをコピーし、1 次システムから |ログ・ファイルを検索します。これにより、このミラーリングされたデータベースで |最新ログを使用できるようにします。
    7. |データベースをログの終わりまでロールフォワードします。
    8. |ステップ f に戻り、1 次データベースがダウンするまでこのプロセスを繰り返します。 |

    |

  3. |分割ミラーをバックアップ・イメージとして使用する

    |ミラーリングされたデータベースを 1 次データベースに対して |リストアするためのバックアップ・イメージとして使用する方法は、以下の通りです。 |

    1. |オペレーティング・システム・コマンドを使用してミラーリングされたデータとログを |1 次データベースの最上部にコピーします。
    2. |次のコマンドを入力して、データベース・インスタンスを開始します。
      |     db2start
    3. |次のコマンドを実行して、ミラーリングされたデータベースをロールフォワード保留状態にし、 |書き込み中断状態を除去します。
      |db2inidb database_name AS MIRROR
    4. |データベースをログの終わりまでロールフォワードします。 |
    |
  4. |ミラーを同じシステムに 1 次データベースとして分割する

    |db2inidb ツールの "relocate" オプションを使用して、データベースを |同じシステムに 1 次データベースとしてミラーリングする方法は、以下の通りです。 |この例では、データベースが新規インスタンスの下で使用されることを想定しています。 |

    1. |新規インスタンスを現行システムに作成します。
    2. |1 次データベースで入出力書き込みを中断します。
      |	db2 set write suspend for database
    3. |オペレーティング・システム・レベル・コマンドを使用して、1 次データベースからミラーを分割します。
      |注:
      データベース・ディレクトリー、コンテナー・ディレクトリー、および |ログ・ディレクトリーが、別々のディレクトリーにコピーされるはずです。 |コンテナー・ディレクトリーまたはログ・ディレクトリーがデータベース・ディレクトリーの下に |存在する場合は、データベース・ディレクトリーのみがコピーされます。 |
    4. |1 次データベースで入出力書き込みを再開し、1 次データベースが正常処理に戻るようにします。
      |	db2 set write resume for database
    5. |以下の情報より、構成ファイルを作成します。
      |	DB_NAME=<name>,<optional new name>
      |	DB_PATH=<primary db dir path>,<mirrored db dir path>
      |	INSTANCE=<primary instance>,<mirror instance>
      |	LOG_DIR=<primary db log dir>,<mirrored db log dir>
      |	CONT_PATH=<primary db container #1 path>,<mirrored db container #1 path>
      |	...
      |	CONT_PATH=<primary db container #n path>,<mirrored db container #n path>
      |	NODENUM=<node #>

      |

      |注:
      LOG_DIR および CONT_PATH フィールドは、ログ・ディレクトリーまたは |コンテナー・ディレクトリーがデータベース・ディレクトリーの外に存在する場合にのみ必要です。 |指定されない場合のデフォルトがゼロである NODENUM の除いて、 |その他のフィールドはすべて必須です。 |
    6. |新規に作成したインスタンスからデータベースを開始します。
      |	db2start
    7. |ミラーリングされたデータベースを再配置し、中断状況を除去し、 |ロールフォワード保留状態のミラーを配置します。
      |	db2inidb database_name as STANDBY relocate using config_file
    8. |ユーザー出口プログラムをセットアップしてログをコピーし、1 次データベースから |ログ・ファイルを検索します。これにより、このミラーリングされたデータベースで |最新ログを使用できるようにします。
    9. |データベースをログの終わりまでロールフォワードします。
    10. |ステップ h に戻り、1 次データベースがダウンするまでこのプロセスを繰り返します。 |
    |


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