PPIとRI検証エラーの解決 - Advanced SQL Engine - Teradata Database

Teradata Vantage™- データベースの管理

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/upb1600054424724.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1093
Product Category
Software
Teradata Vantage

次の手順とツールを使用して、パーティショニングと参照を使用するテーブルのエラーを検出して修正します(詳細については、<Teradata Vantage™ - データベースの設計、B035-1094>を参照してください)。

目的 結果
計算エラー(ゼロによる除算など)のためにトランザクション ロールバックを引き起こしているパーティション式を訂正する 以下のうちの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は、テーブルのバージョンを変更します。
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検証問合わせで破壊行が報告された子テーブルを純化する データベースの整合性を維持するため、報告された行をできるだけ速やかに子テーブルから消去します。