17.10 - テーブルに対するロールバックのキャンセル - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - データベース ユーティリティ

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
構成
Publication ID
B035-1102-171K-JPN
Language
日本語 (日本)

rcvmanagerには、データベース システムの再始動中、またはアボートされたオンライン トランザクション中に、指定したテーブルのロールバックのキャンセルやスキップを実行するメカニズムが備わっています。実行に時間がかかるトランザクションや不要なテーブルのロールバックをキャンセルすると、Teradataシステム リソースの可用性が改善され、クラッシュ後のデータベースの起動時間が短縮されます。

テーブルに対してCANCEL ROLLBACK ON TABLEコマンドを実行すると、データベースは、関連したテーブル ヘッダーを無効とマークします。トランザクションの中の指定したテーブルに関するロールバックのみがキャンセルされます。トランザクションの残りの部分のロールバック処理は影響を受けません。

ロールバック リストにないテーブルでロールバックをキャンセルすることはできません。CANCEL ROLLBACK ON TABLEコマンドを出す前に、LIST ROLLBACK TABLESコマンドを使用して、どのテーブルがロールバック中であるかを調べる必要があります。ロールバックをキャンセルできるのは、リストに表示されたテーブルのみです。
CANCEL ROLLBACK ON TABLEコマンドは、以下のいずれかの場合に使用します。
  • テーブルの復元よりテーブルのロールバックに長い時間がかかる可能性が高い場合。
  • テーブルの重要性が低い場合(一時テーブルなど)。
CANCEL ROLLBACK ON TABLEコマンドを実行すると、ターゲット テーブルが無効になり使用できなくなるため、このコマンドは慎重に使用してください。テーブルに対するロールバックをキャンセルした後は、そのテーブルに対してDELETE ALL操作を実行することを強く推奨します。

テーブルに対するロールバックの一般的なプロセスは、次のとおりです。

  1. ロールバックに長い時間がかかっている。
  2. ロールバックよりも短い時間で復元できる大きなテーブルを見つける。
  3. LIST ROLLBACK TABLESを実行して、どのテーブルがロールバック中であるかを調べる。
  4. CANCEL ROLLBACK ON TABLEを実行する。
  5. DELETE ALLを実行してテーブルを復元する。

テーブルを即時に復元しないのは、そのテーブルが不要な場合のみです。DELETE ALLは即時に実行する必要があります。CANCEL ROLLBACK ON TABLEを実行する前に、無効なテーブルをどのように扱うかを決めておく必要があります。また、その処理を即時に行なって、データベースをオンラインに復帰させる必要があります。

テーブルを再利用できるのは、以下のいずれかの場合のみです。
  • テーブルを削除して再作成する場合。
  • アーカイブ バックアップからテーブルを復元する場合。
  • テーブルに関連したDLLが失われないようにするために、そのテーブルに対してDELETE ALL操作を実行する場合。DELETE ALLを実行すると、部分的にロールバックされた行が削除され、テーブルが使用できる状態になります。

テーブルに対するロールバックをキャンセルする前に、CANCEL ROLLBACK ON TABLEを参照してください。

テーブルに対するロールバックをキャンセルするには、次のようにします。

  1. rcvmanagerを開始する。
  2. コマンド プロンプトで、次のコマンドを入力する。

    LIST ROLLBACK TABLES;

    rcvmanagerによって、ロールバック中のテーブルの名前と詳細が表示されます。

  3. コマンド プロンプトで、次のコマンドを入力する。

    CANCEL ROLLBACK ON TABLE nnnn:mmmm, nnnn:mmmm, ...;

    手順2で表示されたロールバック リストに、指定されたテーブルIDが含まれているはずです。

    rcvmanagerによって、次のように表示されます。

    Type the password for user DBC or press the Enter key to return:
    DBCパスワードを指定する必要があるのは、rcvmanagerセッションでCANCEL ROLLBACK ON TABLEコマンドを初めて使用する場合のみです。それ以降は、このコマンドを使用するときにDBCパスワードは要求されません。
  4. ユーザーDBCのパスワードを入力するか、Enterキーを押す。

    不正なパスワードまたは他の理由のためにログオンに失敗した場合は、次のメッセージが表示されます。

    *** Logon failed ***

    Vantageは、RcvManagerのコマンド プロンプトに戻ります。この場合、ステップ2に戻ります。

    Vantageへのログオンに成功すると、次のメッセージが表示されます。

    Rollback will be cancelled for:
       mmmm:nnnn "DBname"."TableName"
       Confirm y/n ?
  5. Yと入力して確認する。
ロールバックの詳細については、以下のコマンドを参照してください。

テーブルの取り出し

ロールバックがキャンセルされた複数のテーブルに対して、単一のテーブル取得操作を実行することができます。そのためには、LOCKINGリクエスト修飾子をREAD OVERRIDEオプションと組み合わせて使用します。これらのテーブルに更新操作(UPDATE、INSERT、DELETE、およびMERGEリクエスト)を実行することはできません。詳細については、<Teradata Vantage™ - SQLデータ操作言語、B035-1146>のLOCKING修飾子に関する情報も参照してください。