自動リフレッシュの問題について、考えられる原因を次の表に示します。
考えられる原因
|
対処
|
---|---|
キャッシュ・エージェントがキャッシュ管理ユーザーによって起動されていない | キャッシュ・エージェントの起動時に、キャッシュ管理ユーザーの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オブジェクトを再作成します。
ALTER CACHE GROUP cache_group_name SET AUTOREFRESH STATE OFF;
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';
Cleanup of the Oracle objects completed
ALTER CACHE GROUP cache_group_name SET AUTOREFRESH STATE ON;