17.10 - 失敗したUpdateオペレータの回復 - Parallel Transporter

Teradata® Parallel Transporter ユーザー ガイド

Product
Parallel Transporter
Release Number
17.10
Release Date
2021年6月
Content Type
ユーザー ガイド
Publication ID
B035-2445-061K-JPN
Language
日本語 (日本)
Updateオペレータ ジョブの以下の段階で失敗が発生する可能性があります。
  • 取得フェーズの前
  • 取得フェーズ中
  • アプリケーション フェーズ中
  • アプリケーション フェーズの後

取得フェーズの前

取得フェーズの前に、Updateオペレータは以下のことを行ないます。
  • ジョブの属性の値を検証する
  • データベースにログオンする
  • コマンドをデータベースに送信して、作業テーブルを作成する
  • DML文をデータベースに送信する

修正処置:TPTジョブは、エラー メッセージを表示します。 エラーを修正し、ジョブを再実行してください。

取得フェーズ中またはアプリケーション フェーズ中

取得フェーズ中に、Updateオペレータは以下のことを行ないます。
  • コマンドをデータベースに送信して、取得フェーズを開始する
  • データベースにデータを送信し、そのデータが作業テーブルにロードされる
  • 取得フェーズを終了するコマンドをデータベースに送信する

取得フェーズで、データベースはターゲット テーブルにMultiLoadロックを置きます。

アプリケーション フェーズ中に、Updateオペレータは以下のことを行ないます。
  • コマンドをデータベースに送信し、アプリケーション フェーズを開始する。
  • コマンドをデータベースに送信し、アプリケーション フェーズを終了する。

アプリケーション フェーズでは、データベースは、作業テーブルを使用してターゲット テーブルに対するDML文を実行します。アプリケーション フェーズが完了すると、データベースはターゲット テーブルのロックを解除します。

取得フェーズまたはアプリケーション フェーズで失敗が発生すると、ロードは一時停止状態になります。 一時停止状態とは、データベースが、失敗が修正された後にロードが再開されるのを待機していることです。 取得フェーズで失敗が発生したとき、ターゲット テーブルにアクセスすることができます。アプリケーション フェーズで失敗が発生したときはターゲット テーブルにアクセスすることはできません。

修正処置:TPTジョブは、エラー メッセージを表示します。 エラーを修正し、ジョブを再実行してください。

エラーを修正できず、ロードを一時停止状態でなくする場合、以下の手順に従います。

  1. BTEQなどのユーティリティを使用します。
  2. データベースにログオンします。
  3. 以下のコマンドを指定順序で入力します。
    RELEASE MLOAD <Target Table 1>;
    DROP TABLE <Work Table 1>;
    DROP TABLE <Error Table 1>;
    DROP TABLE <Error Table 2>;
    DROP TABLE <Log Table>;

    ターゲット テーブル名、作業テーブル名、エラー テーブル名、ログ テーブル名が失敗した元のロード ジョブにあります。

    RELEASE MLOADコマンドはターゲット テーブルのMultiLoadロックを解除します。

    元のロード ジョブに複数のターゲット テーブルがある場合、その他のターゲット テーブル、作業テーブル、エラー テーブルに対しステップ3のコマンドを繰り返します。

    ログ テーブルは一度だけ削除する必要があります。

    ユーザーは自分が何をしているかを把握している場合を除いて、ターゲット テーブルを削除してはいけません。入力済みのテーブルをロードするには、通常はTPT Updateオペレータを使用します。ユーザーがターゲット テーブルを削除すると、重要なデータが失われる可能性があります。
  4. ターゲット テーブルが選択可能であることを確認します。

    BTEQなどのユーティリティを使用して、ターゲット テーブルを選択します。

    ターゲット テーブルを選択するためのサンプル要求を以下に示します。

    SELECT COUNT(*) FROM <MyTargetTable>;

    行数を取得する必要があります。つまり、ロードは一時停止状態ではなくなりました。

    結果は以下のエラーを返しません。

    RDBMS 2652: Operation not allowed: <table name> is begin Loaded

    元のロード ジョブに複数のターゲット テーブルがある場合、その他のターゲット テーブルに対しサンプル要求を繰り返します。

ターゲット テーブルがフォールバックしたときにアプリケーションのロックを解除するには、次の手順に従ってMultiLoadロックを完全に解除します。
  1. RELEASE MLOAD <table_name > IN APPLY文を使用して、アプリケーションのロックを復元ロックに変更します。
    • このクエリーはフォールバックが存在するため、エラー7745 Mloadテーブルtable_nameをリリースできませんを返します。
    • ただし、アプリケーションのロックは復元ロックに変更されます。
  2. DELETE <table_name> ALLを使用して、テーブル内のすべての行を削除します。
  3. RELEASE MLOAD < table_name > IN APPLYを使用して、テーブルを解放します。

    このクエリーは、MLOADロックを完全に削除します。テーブルはこの時点から解放されます。

  4. 必要に応じて、MultiLoadスクリプトを修正します。
  5. MultiLoadジョブを最初から実行します。

RELEASE MLOADコマンドの詳細については、RELEASE MLOADを参照してください。

アプリケーション フェーズの後

アプリケーション フェーズの後、Updateオペレータは以下を行ないます。

  • ユーザーが削除しないように要求している場合以外は、作業テーブル、エラー テーブル、およびログ テーブルを削除します。
  • データベースからセッションをログオフする

修正処置:

  1. BTEQなどのユーティリティを使用して、作業テーブル、エラー テーブル、またはログ テーブルを削除します。 ユーザーが削除を要求しなかった場合、このステップはスキップします。
  2. セッションがデータベースに残っている場合は、システム管理者にそのセッションの削除を依頼するか、20分間待ちます。20分経過すると、セッションはデータベース ゲートウェイによってログオフされます。

    ジョブを再実行する必要はありません。