AWTキャッシュ・グループの制約の欠落チェックの手動開始
ttCacheCheck組込みプロシージャは、TimesTenが自動的に実行するのと同じ制約の欠落チェックを、Oracle Databaseのキャッシュ表に対して実行します。
ttCacheCheckは、伝播のシリアライズを行うようにマークされた表と制約の欠落に関して該当するメッセージを提供します。ttCacheCheck組込みプロシージャを使用すると、TimesTen内の指定されたキャッシュ・グループまたはすべてのキャッシュ・グループに対して制約の欠落のチェックを行い、すべてのキャッシュ・グループにおいて制約が欠落していない状態にできます。
ノート:
ttCacheCheckはシステム表を更新して、1つの表に対して実行されたDMLをシリアライズする必要があるかないかを示すため、ttCacheCheck組込みプロシージャの完了後にコミットまたはロールバックを行う必要があります。
『Oracle TimesTen In-Memory Databaseリファレンス』の「ttCacheCheck」を参照してください。
次のシナリオのいずれかの後に、ttCacheCheck組込みプロシージャを手動でコールし、既知の依存性を更新する必要があります。
-
DROP CACHE GROUP文によりTimesTenで一連のAWTキャッシュ・グループを削除した後。 -
AWTキャッシュ・グループにキャッシュされているOracle Databaseにおいて一意索引、一意制約または外部キーを追加または削除した後。制約の追加後に
ttCacheCheck組込みプロシージャをコールしない場合、AWTキャッシュ・グループでランタイム・エラーが発生する可能性があります。制約を削除すると、TimesTenは必要がない場合でもトランザクションをシリアライズすることがあります。ttCacheCheck組込みプロシージャをコールすると、シリアライズが必要かどうかが確認されます。 -
この組込みプロシージャを使用すると、いくつかのトランザクションがシリアライズされている理由を判別できます。
ノート:
ttCacheCheck組込みプロシージャは、レプリケーション・エージェントの実行中にはコールできません。
ttCacheCheckのコール時にAWTキャッシュ・グループでDDL文を実行すると、ttCacheCheckは、文が完了するか、タイムアウト時間に達するまで待機します。
複数のキャッシュ・グループでCacheAwtParallelismデータ・ストア属性を定義していないか、または指定したキャッシュ・グループがAWTキャッシュ・グループではない場合、ttCacheCheck組込みプロシージャは空の結果セットを返します。
次の例では、ユーザーがttCacheCheck組込みプロシージャを手動で実行し、cacheuserが所有しているAWTキャッシュ・グループupdate_ordersで制約が欠落しているかどうかを判別することを示します。エラー・メッセージを含む結果セットが返されています。update_ordersキャッシュ・グループのordertab表に対して、トランザクションをシリアルに伝播するようにマークされています。
Command> call ttCacheCheck(NULL, 'cacheadmin', 'update_orders'); < CACHEADMIN, UPDATE_ORDERS, CACHEADMIN, ORDERTAB, Foreign Key, CACHEADMIN, CUST_FK, 1, Transactions updating this table will be serialized to Oracle because: The missing foreign key connects two AWT cache groups., table CACHEADMIN.ORDERTAB constraint CACHEADMIN.CUST_FK foreign key(CUSTID) references CACHEADMIN.ACTIVE_CUSTOMER(CUSTID) > 1 row found.
TimesTenデータベースまたはOracle Databaseでキャッシュ・グループ・スキーマが変更されるたびに、すべてのAWTキャッシュ・グループに対してttCacheCheckをコールすることにより、すべての制約を確認できます。次に、ユーザーがttCacheCheck組込みプロシージャを手動で実行し、すべての入力パラメータに対してNULL値を指定することにより、全TimesTenデータベース内のAWTキャッシュ・グループで制約が欠落しているかどうかを判別する例を示します。エラー・メッセージを含む結果セットが返されています。
Command> call ttCacheCheck(NULL, NULL, NULL); < CACHEADMIN, UPDATE_ORDERS, CACHEADMIN, ORDERTAB, Foreign Key, CACHEADMIN, CUST_FK, 1, Transactions updating this table will be serialized to Oracle because: The missing foreign key connects two AWT cache groups., table CACHEADMIN.ORDERTAB constraint CACHEADMIN.CUST_FK foreign key(CUSTID) references CACHEADMIN.ACTIVE_CUSTOMER(CUSTID) > 1 row found.