17.00 - 17.05 - エラー テーブル固有の列に関するシステム定義属性 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 詳細トピック

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Release Date
2020年6月
Content Type
プログラミング リファレンス
Publication ID
B035-1184-170K-JPN
Language
日本語 (日本)

次の表では、システム定義および生成されたエラー テーブル固有列の特性を説明しています。ETC接頭辞は、エラー テーブル列を表わします。

Column Name 列定義 データ型と属性
ETC_DBQL_QID データベースクエリー ログのクエリーID。

システムは、DBQLが有効になっているかどうかに関係なく、所定のリクエストのエラー行すべてを一意に識別するために、タイムベースのクエリー IDを設定します。

クエリー IDは、新しいリクエストごとに1つずつ増えます。

DECIMAL(18,0) NOT NULL
ETC_DMLType エラーの発生したDMLリクエストの種類のコードで、次のとおりです。
  • Dは削除操作を表わします。
  • Iは挿入操作を表わします。

    INSERT ... SELECTエラーまたはMERGE挿入エラーのいずれかを示します。

  • Uは更新操作を表わします。

    MERGE更新エラーまたは結合UPDATEエラーのいずれかを示します。

CHARACTER(1)
ETC_ErrorCode DBCエラー コードまたは値0のいずれか。

ETC_ErrorCode = 0の行は、リクエストが正常に完了したものの、1つ以上のエラーがLOGGING ERRORS操作で記録されたことを確認する特別なマーカー行です。

0以外のETC_ErrorCodeの値を持つ行は、記録されたDBCエラー コードおよびLOGGING ERRORS操作での1つ以上のエラーのためにリクエストがアボートしたことを示します。

システムは、エラーを記録せずに正常に完了したリクエストのマーカー行は書き込みません。

INTEGER NOT NULL
ETC_ErrSeq エラー シーケンス番号。

値は数字のシーケンスを提供し、これによりETC_TimeStampのタイムスタンプ値よりも、分析や回復のためにエラーを参照しやすくなっています。

ETC_ErrSeqに格納される値では、特定のリクエストの最初のエラーにシーケンス番号1が割り当てられ、その後記録されるエラーごとに1ずつ増加します。

例えば、最初に違反を検出したときではなく、インデックスのデータ行違反があることをAMPに知らせるときに、システムが参照整合性エラーにシーケンス番号を割り当てるので、ETC_ErrSeq値はUSIまたは参照整合性エラーの原因となっているインデックス行の実際の処理の順番を反映しているわけではありません。

INTEGER NOT NULL
ETC_IndexNumber USIまたは参照整合性違反の原因となっている、またはnullに設定されている、いずれかのインデックスのIDを含みます。 SMALLINT
ETC_IdxErrType ETC_IndexNumberに格納されているインデックスIDがUSI違反または参照整合性違反を参照しているかどうかを示します。
  • NullはETC_IndexNumberがnullであることを示します。
  • rは親が削除する参照整合性違反を示します。
  • Rは子が挿入する参照整合性違反を示します。
  • Uは固有セカンダリ インデックス違反を示します。

ETC_IdxErrTypeはNOT CASESPECIFIC属性で定義されているため、WHERE ETC_IdxErrType = 'R'の述部条件を指定するときには、子と親の両方の参照整合性違反が選択されます。

この問題の次善策としては、次のように述部条件を大文字小文字を特定します。

  • 子の挿入エラーのみを選択するには、WHERE条件をetc_idxerrtype (CS) = ‘R’と指定します。
  • 親の削除エラーのみを選択するには、WHERE条件をetc_idxerrtype (CS) = ‘r’と指定します。

これにより、子対親の参照整合性エラー、および親対子のETC_RITableIdで識別されるテーブルの簡単で信頼性のあるチェックを行なえます。

CHARACTER(1) NOT CASESPECIFIC
ETC_RowId リストになっているエラー条件の次のテーブルで指定された行IDまたは行キーの値を記録します。
  • 挿入行がターゲット テーブルにある既存の行と重複する場合、値はターゲット テーブルの行のrowIDです。
  • 挿入行がCHECK制約に失敗した場合、値は固有部分が0になっている挿入行の行キーです。
  • ゼロで割る計算エラーなどの内部エラーが発生したために挿入行が組み込みに失敗した場合、値は固有部分が0になっている挿入行の行キーです。
  • MERGEリクエストの更新行ががターゲット テーブルにある既存の行と重複する場合、値は更新しているターゲット テーブルの行の元のイメージのrowIDです。
  • 更新行がCHECK制約に失敗した場合、値は更新しているターゲット テーブルの行の元のイメージのrowIDです。
  • ゼロで割る計算エラーなどの内部エラーによりMERGEリクエストの更新行が組み込みに失敗した場合、値は更新しているターゲット テーブルの行のrowIDです。
  • MERGEリクエストの複数ソース行が同じターゲット テーブルの行を更新しようとしている場合(これはANSI SQL:2011規格では許可されていません)、値はターゲット テーブルの行のrowIDです。
  • その他の操作エラーでは、システムはnullを格納します。

この情報は、Teradataサポート担当者を対象としています。

BYTE(10)
ETC_TableId ETC_FieldIdに格納された値に関連付けられたテーブルを識別します。 BYTE(6)
ETC_FieldId エラー状態の原因となっている列のIDを格納します。このIDは、DBC.TVFieldsに格納されているフィールドIDです。
  • 複合キー違反エラーまたはインデックス違反エラーの場合、値は複合キーまたはインデックスの最初の列の列IDです。
  • 列違反または制約違反の場合、値は制約違反に対してシステムが返した列の列IDです。
  • 重複行エラーの場合、システムはnullを格納します。

テーブル制約に2つの列が含まれている場合、システムは制約式の右側にある列のIDを格納します。

例えば、CHECK (y>x)エラーでは、列xのフィールドIDがキャプチャされます。

SMALLINT
ETC_RITableId 参照整合性違反に関係する他のテーブルを識別します。
  • 子の挿入エラーの場合、値は参照元の親です。
  • 親の挿入エラーの場合、値は参照元の子です。
BYTE(6)
ETC_RIFieldId RI違反に関連付けられたテーブルに含まれている列を識別します。
  • 親テーブルの場合、値は挿入された子の行により参照される紛失したUPI列またはUSI列を識別します。
  • 子テーブルの場合、値は削除された親の行のUPIキーまたはUSIキーを参照していた外部キー列を識別します。

複合キーの場合、ETC_RIFieldIdは、キーを一意に識別するのに十分な情報である、キーに定義された最初の列のみを識別します。

SMALLINT
ETC_TimeStamp システムがエラー行をエラー テーブルに書き込んだ時刻ではなく、システムがエラーを検出した時刻を示します。 TIMESTAMP(2) NOT NULL
ETC_Blob 現在は使用されていません。

この列は、エラー テーブルから行を取得するときに領域を消費します。

エラー テーブルに多数のデータ テーブル列がある場合、選択リストにこの列に含めることによって、クエリーが内部Teradataデータベースの制限に達し、「Row size or Sort Key size overflow (行サイズまたはソート キー サイズのオーバーフロー)」エラーが返されます。

この状態が発生した場合、選択リストからETC_Blob列を削除します。

ETC_Blobのサイズ制限は2MBで、データ変換エラーが発生するステップの最大サイズ メモリ セグメントを格納するのに十分なサイズです。

BLOB