問題判別の手引き

ドロップされた表の時刻指定回復

この機能を使用して、ドロップされた表を表スペースに回復することができます。 そのため、表がドロップされたときに備えて、表ごとに時刻指定 (PIT) 回復の準備をしておきます。

誤って表をドロップしてしまった
時折、誤って表をドロップしてしまうことがあります。 ドロップ・ステートメントは、1 度実行してしまうとロールバックすることができません。 ドロップしてしまった表を復元するには、データベース全体を復元し、 ドロップの前の時点までロールフォワードしなければなりません。 しかし、それには、 ロールフォワードが終了するまでデータベース全体を使用不可にする必要があります。 また、表のドロップ後に行われたトランザクションはすべて失われます。 そのため、 実際には表スペースの復元やロールフォワードを使用することはできません。

ドロップされた表の回復が可能な場合
ドロップされた表の回復が可能な場合は、DROP TABLE ステートメントが実行されると、DB2 がログ・ファイルに追加のログ項目を書き込みます。 このログ項目には、次の内容が含まれています。

ヒストリー・ファイルの項目
DB2 は、ヒストリー・ファイルにも項目を書き込みます。 ここには、ログ・レコードのコピーとともに、 表の再作成に使用する DDL ステートメントが含まれています。 ヒストリー・ファイルが提供する管理情報には、以下のようなものがあります。

ドロップされた表の回復方法
  1. ドロップされた表を表す特別な ID を取得する。 この ID は、LIST HISTORY DROPPED TABLE ALL コマンドを使用して、 ヒストリー・ファイルから取得することができます。 このコマンドを実行すると、これまでにドロップされた表のリストが表示されます。 ここには、表の名前、ドロップされた時刻、 ロールフォワードの過程で表を識別するための特別な ID のストリング、 さらに表の再作成に使用する DDL コマンドが含まれています。
  2. 誤って表をドロップしてしまう前にとっておいたバックアップを復元する。
  3. ROLLFORWARD DATABASE ... RECOVER DROPPED TABLE TableID を /expdir に対して実行する。 RECOVER DROPPED TABLE <tableID> TO <export_dir> オプションを使用して、 ログの最後までロールフォワードします。 ここで、Table ID にはステップ (1) で取得した ID のストリング、 また、export_dir は出力ファイルを書き込むディレクトリーです。
  4. CREATE TABLE を実行する。 ステップ (1) で取得した CREATE TABLE DDL ステートメントを使用して、 表を再作成します。
  5. ロールフォワード時にエクスポートされたデータを表にインポートする。

注:

  1. 1 回の操作で回復できる表は 1 つだけです。 誤ってドロップしてしまった表を複数復元する場合は、 復元したい表ごとに回復の手順を繰り返す必要があります。

  2. RECOVERABLE TABLES オプション (ON または OFF) は、 正規表スペースでしか使用できません。

  3. 厳密には、表そのものが再作成される訳ではありません。 実際には、ドロップされた表のデータをログ・ファイルから取り出し、 指定されたエクスポート・ディレクトリーに DEL ASC 形式で書き込む、 という処理が行われます。


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