ヘッダーをスキップ
Oracle TimesTen In-Memory Databaseトラブルシューティング・プロシージャ・ガイド
リリース7.0
E05173-03
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

自動リフレッシュ時に指定した間隔でキャッシュがリフレッシュされない

自動リフレッシュの問題について、考えられる原因を次の表に示します。

考えられる原因
対処
キャッシュ・エージェントがキャッシュ管理ユーザーによって起動されていない
キャッシュ・エージェントの起動時に、キャッシュ管理ユーザーのIDとパスワードを指定する(『Oracle TimesTen Cache Connect to Oracle開発者および管理者ガイド』のキャッシュ・エージェントの起動と停止に関する説明を参照)。
実表のオブジェクトIDが変更された
自動リフレッシュ・トリガーが有効でない
TT_version_USER_COUNT表に記録されている現在のログ順序番号が、自動リフレッシュ・ログ表の最大ログ順序番号より小さい
TT_version_USER_COUNT表に、アクティブな増分自動リフレッシュ表のusercount > 0である行がない
変更ログ表が空である
ユーザー・カウントが0未満か、TT_version_USER_COUNTログ順序が異常
キャッシュされた表に関連付けられている自動リフレッシュ・ログ表、トリガーまたは順序が存在しないか、有効でない
キャッシュ・エージェントが、正しいキャッシュ管理ユーザーIDで起動されたかどうかを確認する。キャッシュ管理ユーザーIDが正しい場合は、「自動リフレッシュOracleオブジェクトをリカバリしてリセットする」の手順に従う。
ユーザー・エラー・ログで、致命的な異常についてのメッセージを確認する。これには、Oracleオブジェクトの破損または欠落が示されている。
TT_version_USER_COUNT表がない
キャッシュ・エージェントが、正しいキャッシュ管理ユーザーIDで起動されたかどうかを確認する。キャッシュ管理ユーザーIDが正しい場合は、「自動リフレッシュOracleオブジェクトをリカバリしてリセットする」の手順に従う。
ユーザー・エラー・ログで、致命的な異常についてのメッセージを確認する。これには、Oracleオブジェクトの破損または欠落が示されている。
TT_version_USER_COUNT表に記録されている現在のログ順序番号が変化する場合は、ブックマークと異なり、関連付けられているキャッシュ表が次にコミットされる自動リフレッシュでリフレッシュされない
まず、キャッシュ・エージェントを再起動する。これによって解決しない場合は、「自動リフレッシュOracleオブジェクトをリカバリしてリセットする」の手順に従う。
リソースの問題
キャッシュ・エージェントを再起動する。

自動リフレッシュ状態をリセットする

増分自動リフレッシュは、Oracle実表でTRUNCATE文が使用されている場合は、正しく動作しません。Oracle実表でTRUNCATE文が使用されている場合は、ALTER CACHE GROUP文を使用して自動リフレッシュをリセットし、自動リフレッシュの状態をOFFに設定してから、別のALTER CACHE GROUP文で自動リフレッシュの状態をONに戻します。

自動リフレッシュOracleオブジェクトをリカバリしてリセットする

問題の原因が、自動リフレッシュで使用するOracleオブジェクトにある場合、またはその可能性がある場合は、次の手順でOracleオブジェクトを再作成します。

  1. 問題のキャッシュ表があるすべてのデータ・ストア上のすべてのキャッシュ・グループについて、ALTER CACHE GROUPを使用して自動リフレッシュの状態をOFFにリセットします。
  2. ALTER CACHE GROUP cache_group_name SET AUTOREFRESH STATE OFF;

  3. 対象となるすべてのデータ・ストア上のすべてのキャッシュ・エージェントを停止します。
  4. キャッシュ・グループ内の各表について、ユーザー・カウントが0(ゼロ)かどうかを確認します。
  5. Oracleデータベースで、次の文を実行します。

    SELECT usercount FROM autorefresh_id.tt_version_user_count

        WHERE tablename ='owner.tablename';

    カウントが0(ゼロ)でない場合は、次の文を実行して0(ゼロ)に設定します。

    UPDATE autorefresh_id.tt_version_user_count SET usercount = 0

        WHERE tablename ='owner.tablename';

  6. いずれかのキャッシュ・エージェントを起動します。そのキャッシュ・エージェントによって、クリーンアップ操作が実行されます。クリーンアップが終了すると、次のメッセージがサポート・ログに表示されます。
  7. Cleanup of the Oracle objects completed

  8. キャッシュ・エージェントによるクリーンアップが終了したら、ALTER CACHE GROUPを使用して自動リフレッシュの状態をONに戻します。
  9. ALTER CACHE GROUP cache_group_name SET AUTOREFRESH STATE ON;

  10. 他のすべてのキャッシュ・エージェントを起動します。
  11. すべてのデータ・ストアの対象となるすべてのキャッシュ・グループについて、ALTER CACHE GROUPを使用して自動リフレッシュの状態をONに戻します。