Updateオペレータ ジョブの以下の段階で失敗が発生する可能性があります。
- 取得フェーズの前
- 取得フェーズ中
- アプリケーション フェーズ中
- アプリケーション フェーズの後
取得フェーズの前
取得フェーズの前に、Updateオペレータは以下を行ないます。
- ジョブの属性の値を検証する
- Teradata Databaseにログオンする
- コマンドをTeradata Databaseに送信して、作業テーブルを作成する
- DML文をTeradata Databaseに送信する
修正処置:TPTジョブは、エラー メッセージを表示します。 エラーを修正し、ジョブを再実行してください。
取得フェーズ中またはアプリケーション フェーズ中
取得フェーズ中、Updateオペレータは以下を行ないます。
- コマンドをTeradata Databaseに送信し、取得フェーズを開始する
- データをTeradata Databaseに送信する データは作業テーブルにロードされる
- コマンドをTeradata Databaseに送信して、取得フェーズを終了する
取得フェーズで、Teradata Databaseはターゲット テーブルにMultiLoadロックを置きます。
アプリケーション フェーズ中、Updateオペレータは以下を行ないます。
- コマンドをTeradata Databaseに送信し、アプリケーション フェーズを開始する。
- コマンドをTeradata Databaseに送信し、アプリケーション フェーズを終了する。
アプリケーション フェーズで、Teradata Databaseは作業テーブルを使用してターゲット テーブルのDML文を実行します。 アプリケーション フェーズが完了すると、Teradata Databaseはターゲット テーブルのロックを解除します。
取得フェーズまたはアプリケーション フェーズで失敗が発生すると、ロードは一時停止状態になります。 一時停止状態とは、Teradata Databaseが、失敗が修正された後にロードが再開されるのを待機していることです。 取得フェーズで失敗が発生したとき、ターゲット テーブルにアクセスすることができます。アプリケーション フェーズで失敗が発生したときはターゲット テーブルにアクセスすることはできません。
修正処置:TPTジョブは、エラー メッセージを表示します。 エラーを修正し、ジョブを再実行してください。
エラーを修正できず、ロードを一時停止状態でなくする場合、以下の手順に従います。
- BTEQなどのユーティリティを使用します。
- Teradata Databaseにログオンします。
- 以下のコマンドを指定順序で入力します。
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オペレータは通常、入力されたテーブルのロードに使用されます。 ターゲット テーブルを削除すると、重要なデータの多くが失われる可能性があります。 - ターゲット テーブルが選択可能であることを検証します。
BTEQなどのユーティリティを使用して、ターゲット テーブルを選択します。
ターゲット テーブルを選択するためのサンプル要求を以下に示します。
SELECT COUNT(*) FROM <MyTargetTable>;
行数を取得する必要があります。つまり、ロードは一時停止状態ではなくなりました。
結果は以下のTeradata Databaseエラーを返しません。
RDBMS 2652: Operation not allowed: <table name> is begin Loaded
元のロード ジョブに複数のターゲット テーブルがある場合、その他のターゲット テーブルに対しサンプル要求を繰り返します。
- RELEASE MLOAD <table_name > IN APPLY文を使用して、アプリケーションのロックを復元ロックに変更します。
- このクエリーはフォールバックが存在するため、エラー7745 Mloadテーブルtable_nameをリリースできませんを返します。
- ただし、アプリケーションのロックは復元ロックに変更されます。
- DELETE <table_name> ALLを使用して、テーブル内のすべての行を削除します。
- RELEASE MLOAD < table_name > IN APPLYを使用して、テーブルを解放します。
このクエリーは、MLOADロックを完全に削除します。テーブルはこの時点から解放されます。
- 必要に応じて、MultiLoadスクリプトを修正します。
- MultiLoadジョブを最初から実行します。
RELEASE MLOADコマンドの詳細については、RELEASE MLOADを参照してください。
アプリケーション フェーズの後
アプリケーション フェーズの後、Updateオペレータは以下を行ないます。
作業テーブル、エラー テーブル、ログ テーブルを削除する(ユーザーが削除しないように要求した場合を除く)。
- Teradata Databaseからセッションをログオフする
修正処置:
- BTEQなどのユーティリティを使用して、作業テーブル、エラー テーブル、またはログ テーブルを削除します。 ユーザーが削除を要求しなかった場合、このステップはスキップします。
- セッションがTeradata Databaseに残っている場合、システム管理者にセッションの削除を依頼するか、20分待ちます。 20分後、セッションはTeradata Databaseゲートウェイによってログオフされます。
ジョブを再実行する必要はありません。