レベル3のチェックは、最も詳細なチェックなので、すべてのレベルのチェックの中で最も多くのシステム リソースを必要とします。システム リソースの消費が大きいため、このチェック レベルはまれにしか使用してはならず、はっきりした診断の目的以外では使用しないようにすべきです。
このレベルに固有なチェックに加え、レベル3のチェックには、下位レベルのチェックで実行されるほとんどのチェックが含まれます。ラージ オブジェクト(LOB)上でレベル3のチェックはこれ以上実行されませんが、レベル3のチェックはLOBのレベル2のチェックを自動的に実行します。
利用不能なAMPがある場合、フォールバック定義されなかったテーブルについては、CheckTableはUSIチェックを実行しません。
利用不能なAMP がある場合、フォールバック指定されているテーブルについては、CheckTableは利用可能なAMPのインデックス サブテーブルおよびデータ サブテーブルのフォールバック コピーを、基本コピーの代わりに使用します。
次のテーブルは、特定のレベル3のチェックをまとめたものです。これらのチェックは、すべてのチェック レベルで実行された一般的なチェックに加えて行なわれます。これらの一般的なチェックの詳細については、CheckTableの一般的なチェックを参照してください。
チェックされたオブジェクト |
CheckTableが行なう事柄 |
データ サブテーブル |
- フォールバックを持つテーブルの場合、基本データ サブテーブルの各物理行と、フォールバック データ サブテーブルの対応する物理行を比較します。すべてのレベルでバイト単位で比較します。
- 重複行、順序や位置が誤っている行、および固有のプライマリ キーが重複していないかどうかをチェックします。
- 行のハッシュを検証します。
- データ行内の各フィールドのフィールド サイズを、対応する列に定義された最大フィールド サイズで検証します。フィールド サイズは、フォールバック データ行ではなく、基本データ行でチェックされます。フォールバック データ行内のフィールド サイズのエラーは、基本データ行とフォールバック データ行の間のバイトごとの比較で検出されます。
- 行パーティション テーブルでは、内部パーティション番号を検証します。列パーティション テーブルの場合、このチェックは実行されません。
- 列パーティション表では、各コンテナ行の物理データ行IDは、前のコンテナ行の物理行IDよりも大きいこと、さらに(該当する場合は)論理行IDがコンテナ行で示されたものよりも1つ少ないことが検証されます。コンテナ行は、形式の整合性が検証されます。
- テンポラル テーブルの場合、重複しているテンポラルな時間の値を持つ行と同等の値があるかどうかをチェックします。
- COMPRESSCHECKオプションが指定されていた場合、CheckTableは圧縮列データを検証します。例えば、多値圧縮された列の場合、CheckTableは表ヘッダー内の圧縮リストと各行の列の値を比較して、適切な値が圧縮されていることを確認します。
利用不能なAMPがあった場合は、行の代替(基本またはフォールバック)コピーがそのAMPにあったものとみなし、行に対する基本とフォールバックのデータについてチェックは実行されません。しかし、CheckTableはすべてのサブテーブルをスキャンして、基本とフォールバックの間に矛盾以外の問題がないかどうかのチェックを継続します。
複数レベルのパーティション プライマリ インデックスでは、エラー メッセージの外部パーティション番号は、パーティション式を組み合わせた結果の番号です。パーティション プライマリ インデックスおよびパーティション式の詳細については、<Teradata Vantage™ - データベースの設計、B035-1094>を参照してください。
テーブルの行のパーティションを訂正する場合は、ALTER TABLE文にREVALIDATE PRIMARY INDEX WITH DELETEまたはINSERTオプションを指定して使用します。ALTER TABLEについての詳細は、<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>を参照してください。
|
LOBサブテーブル |
- LOBサブテーブルの重複している行ID、順序が誤っている行ID、および位置が誤っている行がないかどうかをチェックします。
- LOBに対してフォールバックが存在する場合、欠落している基本行またはフォールバック行がないかどうかをチェックします。
- LOB行の基本コピーおよびフォールバック コピーのチェックサムを比較します。
- ハッシュ コードがそれぞれのサブテーブルの行位置を正しく反映しているかどうかも検証します。
- 実行のOIDの更新タグがラージLOB行の更新タグと一致していない、古くなったロケータ/OIDがないかどうかチェックします。
- LOBのずれがないかどうかをチェックします。例えば、LOBの最初の部分と3番目の部分が存在するのに、サブテーブルから2番目の部分が欠落していないかどうか。
|
USI |
- インデックス登録がない行、データ サブテーブルに存在しなくなったインデックス付きデータ行、および複数のインデックス付きデータ行を検出します。
- プライマリ インデックス サブテーブルおよびフォールバック インデックス サブテーブルの行IDが重複していないかどうか、順序や位置に誤りがないかどうかをチェックします。
- USI行内の各フィールドのフィールド サイズを、対応する列に定義された最大フィールド サイズで検証します。フィールド サイズは、フォールバックUSI行ではなく、基本USI行でチェックされます。フォールバックUSI行内のフィールド サイズのエラーは、基本USI行とフォールバックUSI行の間のバイトごとの比較で検出されます。
- フォールバックのテーブルの場合、基本およびフォールバックのインデックス サブテーブルをバイト単位で比較します。
- 基本またはフォールバックのインデックス サブテーブルでインデックス付けされている行IDのリストと、基本またはフォールバックのデータ サブテーブルの行IDとを比較します。
- 各USI行のキーを、データ行から抽出され対応するキーと比較します。
- 行のハッシュを検証します。
- すべての論理行でインデックス付けが1度きりであることを検証します。
- 基本データ サブテーブルおよびフォールバック データ サブテーブルに重複したり、順序が誤っていたり、配置が誤っている行IDがあるかをチェックします(チェックの異なる段階でそのようなチェックがまだ実行されていない場合)。
固有インデックスを持つMULTISETテーブルに対する重複していないかどうかのチェックは、パフォーマンスに関して負荷が高くなる可能性があります。このようなテーブルに同じハッシュ値を持つ行が多数ある場合、このチェックには長い時間がかかる可能性があります。これは、固有性の極めて低いPIを持つテーブルの場合と考えられます。CheckTableでは、ハッシュ値ごとに、ハッシュ全体を行ごとにスキャンして、固有インデックスについて重複していないかどうかをチェックします。NoPIテーブルとPAテーブルには、通常1つのAMPごとに1つのハッシュ値しかないため、USIチェックが遅くなる可能性があります。
|
NUSI |
|
参照インデックス サブテーブル |
- インデックス値が重複していないかどうかをチェックします。
- ハッシュ コードが正しいかどうかをチェックします。
- 親テーブルに対して参照インデックスをチェックします。CheckTableがエラーを検出すると、参照インデックス内で指定された親テーブルにREADロックをかけます。AMPが親テーブルをロックできない場合、CheckTableはエラーを報告します。
- 参照インデックス行内のフィールドごとのフィールド サイズを、対応する列に定義された最大フィールド サイズで検証します。
|
SJI |
- 重複している行ID、順序や位置が誤っている行ID、またはSJI内に閉じた行がないかどうかチェックします。
- SJIの内容をテンポラルな基本テーブルの行内の対応する列と比較します。
- 重複しているテンポラルな値を持つ行と同等の値があるかどうかをチェックします。
- SJI行内のフィールドごとのフィールド サイズを、対応する列に定義された最大フィールド サイズで検証します。
|
データ サブテーブルのスキャン時、テーブルの各行における内部パーティション番号で、テーブルの行パーティション化が検証されます。スキャンされた内部パーティション番号がパーティション化の式で算出された数と一致しない場合、CheckTableはエラー メッセージを表示します。テーブルが列パーティション化されている場合、このチェックは実行されません。