自動リフレッシュの変更時にロック・タイムアウト状態を回避する

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の例を示します。

    1. キャッシュ・エージェントを停止します。

      Command> call ttCacheStop;
      
    2. 自動リフレッシュ状態を、目的の状態に変更します。この例では、自動リフレッシュ状態を停止するように設定します。

      Command> ALTER CACHE GROUP new_customers SET AUTOREFRESH STATE PAUSED;
      
    3. キャッシュ・エージェントを起動します。

      Command> call ttCacheStart;
      

    ALTER CACHE GROUPの詳細は、『Oracle TimesTen In-Memory Database SQLリファレンス』「ALTER CACHE GROUP」を参照してください。ttLockWait組込みプロシージャの詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』「ttLockWait」を参照してください。