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

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

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/qxr1512078764562.ditamap
dita:ditavalPath
ja-JP/qxr1512078764562.ditaval
dita:id
B035-1102
Product Category
Software
Teradata Vantage

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

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

ロールバック リストにないテーブルでロールバックをキャンセルすることはできません。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を実行する前に、無効なテーブルをどのように扱うかを決めておく必要があります。また、その処理を即時に行なって、Teradata Databaseシステムをオンラインに復帰させる必要があります。

テーブルを再利用できるのは、以下のいずれかの場合のみです。
  • テーブルを削除して再作成する場合。
  • アーカイブ バックアップからテーブルを復元する場合。
  • テーブルに関連した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 ***

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

    Teradata Databaseシステムへのログオンに成功すると、次のメッセージが表示されます。

    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 Modifierを参照してください。