自動リフレッシュの変更時にロック・タイムアウト状態を回避する
ALTER CACHE GROUP文を使用して自動リフレッシュのモード、状態または間隔を変更するのと同時に、スケジュール済自動リフレッシュが開始されると(自動リフレッシュ間隔によるスケジュール)、ロック・タイムアウトが発生する場合があります。
-
自動リフレッシュは、キャッシュ表および
SYS.CACHE_GROUP表内の行をロックします。 -
ALTER CACHE GROUP SET AUTOREFRESH文が、SYS.CACHE_GROUP表内のキャッシュ・グル・ステートを更新します。
これにより、次のエラーが発生します。
Error TT6003: Lock request denied because of time-out.
次の回避策を実行します。
-
ttLockWait組込みプロシージャを使用して、ロック・タイムアウトを増加します。 -
ALTER CACHE GROUP SET AUTOREFRESH文を実行して、自動リフレッシュのモード、状態または間隔を変更する前に、キャッシュ・エージェントを停止します。次に、自動リフレッシュ状態を一時停止する設定を示すTimesTen Classicの例を示します。
-
キャッシュ・エージェントを停止します。
Command> call ttCacheStop;
-
自動リフレッシュ状態を、目的の状態に変更します。この例では、自動リフレッシュ状態を停止するように設定します。
Command> ALTER CACHE GROUP new_customers SET AUTOREFRESH STATE PAUSED;
-
キャッシュ・エージェントを起動します。
Command> call ttCacheStart;
ALTER CACHE GROUPの詳細は、『Oracle TimesTen In-Memory Database SQLリファレンス』の「ALTER CACHE GROUP」を参照してください。ttLockWait組込みプロシージャの詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』の「ttLockWait」を参照してください。 -