Teradata ARCには、ジャーナル テーブルからデータベースまたはテーブルをロールバックまたはロールフォワードする機能があります。 回復するデータベースかデータ テーブル、またはその両方を識別するためには、Teradata ARC文を使用します。 複数のデータベースまたはデータ テーブルを指定する場合は、すべて同一のジャーナル テーブルを使用する必要があります。これは、回復操作で使用される変更イメージは1つのジャーナルになければならないからです。
また、Teradata ARC文では、回復に使用されるサブテーブル(保存ジャーナル サブテーブルまたは現在のジャーナル サブテーブル)を識別します。
複数のジャーナル アーカイブからデータ テーブルを回復する場合は、回復操作を次の3つの手順で実行します。
- ジャーナルを復元します。
- 復元されたジャーナルを使用してデータ テーブルを回復します。
- すべてのテーブルが復元されるまで、手順1と2を繰り返します。
回復処理が完了するのは、テーブルの構造が変更イメージと同じ場合のみです。 構造が異なる場合、Teradata ARCは、データ テーブルの回復リクエストを停止し、エラー メッセージを返します。 複数のテーブルを回復している場合は、1つのテーブルの回復が停止しても、その他のテーブルの回復には影響しません。
ロールバックまたはロールフォワード操作時に、一時ジャーナル イメージは生成されません。 そのため、途中で処理が終了した場合には、回復しようとしていたデータ テーブルがどのような状態にあるかを推測することができません。
ロールバックまたはロールフォワードが完了しなかった場合は、その原因に応じて以下のように処理します。
- ハードウェアの障害が原因の場合は、Teradata ARCによって回復操作が自動的に再開されます。
- クライアントの障害が原因の場合は、RESTARTオプションを指定してTeradata ARCを再実行します。
Teradata ARCロールバックまたはロールフォワードの操作を再開して完了する前にデータ テーブルのHUTロックを解除する場合、データの状態は予測できません。
ロールバックまたはロールフォワード操作時に、永久ジャーナル イメージは生成されません。 したがって、ロールバック操作が適切に行なわれない場合もあります。
例えば、次のような場合です。
- バッチ ジョブがデータ テーブルを更新して、更新前および更新後イメージを作成する。
- バッチ ジョブが完了する。
- 後で(バッチ更新のエラーが原因で)更新前イメージを使用してテーブルをロールバックする。
- ディスクを交換し、最新のアーカイブを復元する。 ロールフォワードを実行して、変更を適用する。
上記のロールバックで使用したジャーナルをロールフォワードでも使用した場合には、バッチ ジョブでロールバックが行なわれているため、バッチ ジョブでの更新の結果が、ロールフォワードで反映されないと思うユーザーもいるでしょう。 回復操作ではジャーナル テーブルは変更されません。その結果、バッチ プログラムでの更新がロールフォワードでデータ テーブルに再度適用されることになります。