PPIとRI検証エラーの解決 - 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/tgx1512080410608.ditamap
dita:ditavalPath
ja-JP/tgx1512080410608.ditaval
dita:id
B035-1093
Product Category
Software
Teradata Vantage

パーティションおよび参照を使用するテーブルの中のエラーは、以下の手順とツールを使用して検出および訂正できます (詳細については、<Teradata Vantage™ データベース設計、B035-1094>の「パーティション プライマリ インデックスと非パーティション プライマリ インデックス」および「FOREIGN KEY … REFERENCES制約」を参照してください。)

目的 結果
計算エラー(ゼロによる除算など)のためにトランザクション ロールバックを引き起こしているパーティション式を訂正する 以下のうちの1つを行なう。
  • パーティション式を変更する
  • 問題の原因になっている行を消去する
  • パーティションをテーブルから除去する
  • テーブルを削除する
無効なテーブルのステータスまたは内部構造を検出する CheckTable utility LEVEL 3コマンドを実行する。
パーティション化のあるテーブルの中のヘッダーのみを再生成する ALTER TABLE … REVALIDATE文を使用する。
列パーティション テーブルまたは結合インデックスを検証する。 ALTER TABLEリクエストのREVALIDATEオプションを使用する。
パーティション化のあるテーブルの場合:
  • テーブル ヘッダーを再生成する
  • パーティション式を再計算する
  • 行ハッシュ値を再計算する
  • 適切なAMPおよび行パーティションに行を移動する
  • テーブルに定義されているSI、JI、およびHIを更新する
ALTER TABLE … REVALIDATE WITH DELETE/INSERT[INTO]文を使用する。
  • WITH DELETEは、範囲外のパーティション番号を持つ行を消去する。
  • WITH INSERT[INTO]は、有効範囲外のnullのパーティション番号を持つ行を消去し、それらをsave_tableに挿入する。
REVALIDATEは、テーブルのバージョンを変更します。
ARC RESTORE操作の後にRIテーブルの状態をリセットする ARCユーティリティのREVALIDATE REFERENCES FORコマンドを使用する。 詳細は、<Teradata® Archive/Recovery Utilityリファレンス、B035-2412>を参照してください。
RI制約のあるテーブルでのWITH NO CHECK OPTIONを使用した更新操作や削除操作の実行後に、破壊された行を検出する 次のような構造のRI検証問合わせを実行依頼する。
SELECT DISTINCTchildtablename .* 
 FROM  childtablename,parenttablename  WHERE childtablename .fkcol   NOT IN (SELECT pkcol FROM parenttablename ) 
 AND childtablename .fkcol IS NOT NULL;

この問合わせは、対応するPK値がないFK値を持つ子テーブルの中のすべての行を報告します (FK nullの表わす値は判別できないので、FK nullは除外されます)。

RI検証問合わせで破壊行が報告された子テーブルを純化する データベースの整合性を維持するため、報告された行をできるだけ速やかに子テーブルから消去します。