制約にNOVALIDATEを宣言すると、キャッシュ・グループが失敗する
キャッシュ・グループを作成するOracle Database表が、主キー、UNIQUEまたはNOT NULL制約を持つ列にNOVALIDATEを宣言すると、キャッシュ・グループの作成は失敗します。
ノート:
これは、外部キー制約にはあてはまりません。ただし、TimesTenは、一致する外部キーを、有効化されたVALIDATE状態にすることを推奨します。外部キー列を、有効化されたVALIDATE状態に変更すると、ワークロード・パフォーマンスに影響する場合があります。
TimesTenは、主キーのNOVALIDATEまたはNOT NULL表の列の定義を、NULLとして認識するため、キャッシュ・グループを作成する列としてみなされません。したがって、Oracle Database表からキャッシュ・グループを作成する際に、主キーのすべての列、UNIQUEおよびNOT NULL列制約をVALIDATE状態で有効化する必要があります。
これらのうち1つ以上の制約を持つOracle Database表からキャッシュ・グループを作成すると、次のエラーが発生します。
5124: Autorefresh/propagate are not allowed on restricted cache group 5168: Restricted cache groups are deprecated 5120: No matching unique index with not null columns, unique key constraint with not null columns, or primary key constraint on table EVENTLOG, cache operations are restricted.
これらのエラーを受信した場合、SELECT文を実行して、Oracle Database表に既存のNOVALIDATE制約がないかを確認することができます。次のSELECT文を実行すると、MyTable表にある制約がすべて表示されます。
SQL> select constraint_name, constraint_type, validated, status from
all_constraints where table_name = 'MyTable';
CONSTRAINT_NAME C VALIDATED STATUS
------------------------------ - ------------- --------
REFID_CONSTRAINT C VALIDATED ENABLED
PKEY_CONSTRAINT P NOT VALIDATED DISABLED
キャッシュ表の主キーとなる表の列がNOVALIDATEとして有効化されている場合、次のステップを実行して、列をVALIDATE状態に有効化します。