キャッシュ管理ユーザーの表領域が一杯になると、増分自動リフレッシュが完全自動リフレッシュになる場合があります。
この項の内容は次のとおりです。
増分自動リフレッシュが完全自動リフレッシュになっていないかどうかは、いくつかの方法で検出できます。
2007-08-08 08:06:51.35 Warn: ORA: 22119: ora-22119-0015-refresh05652: A full autorefresh will be performed for Incremental autorefresh table USER1.READTAB because change log table T_03_55555_L on Oracle has been truncated.
キャッシュ管理ユーザー用に個別の表領域を作成することを強くお薦めします。この表領域は、キャッシュ管理ユーザーのデフォルトの表領域として使用されます。表領域には、各Oracle表の自動リフレッシュ・トリガー、各Oracle表の変更ログ表、およびTimesTenが各キャッシュ管理ユーザーに対して必要とするその他のオブジェクトが含まれます。個別の表領域を指定しない場合、これらのオブジェクトはOracleのシステム表領域に配置されます。
Oracleでのキャッシュ管理ユーザー作成時に表領域を指定します。また、OracleのALTER USER文のDEFAULT TABLESPACE句を使用してユーザーを作成した後も表領域を指定できます。
キャッシュされた各Oracle表の変更ログ表は、キャッシュ管理ユーザーの表領域に存在します。Oracle表の各更新では、1行(1つの変更ログ・レコード)がそのOracle表の変更ログ表に挿入されます。変更ログ・レコードのサイズ(バイト)は次のようになります。
変更ログ・レコードのサイズ=Oracle表の主キーのサイズ+250
変更ログ表のレコード数は、Oracle表での更新率、およびTimesTenでの自動リフレッシュ間隔によって異なります。関連付けられているOracle表をキャッシュしているすべてのデータ・ストアに適用済の変更ログ・レコードは、20秒ごとにTimesTenによって削除されます。
変更ログが削除されると、次のようなメッセージがサポート・ログに表示されます。
16:32:26.73 Info: ORA: 5652: ora-5652-4756-ogTblGC01036: Garbage collector deleted 1 rows from TT_03_383270_L where logseq < 1
キャッシュ管理ユーザーの表領域が一杯になった場合、自動リフレッシュ・トリガーは既存の変更ログ・レコードを削除して、新しい変更ログ・レコード用の領域を確保します。これによって、一部のTimesTenデータ・ストアのいくつかの表に対して完全自動リフレッシュを行うことができます。
キャッシュ管理ユーザーの表領域が一杯になった場合は、次の状態を確認します。
autorefreshChangeLogInfo.sqlスクリプトを使用して、キャッシュされたOracle表ごとに変更ログ表の大きさを確認します。出力を調べて、データ・ストアがまだ使用中かどうかを確認します。「変更ログ表の情報の表示」を参照してください。
データ・ストアがまだ使用中である場合は、キャッシュ・エージェントが稼働していることを確認します。
TimesTenでの自動リフレッシュの処理状況を、変更ログ表の最大ログ順序番号と比較します。TimesTenの方が遅れている場合は、ttCacheAutorefreshStatsGetプロシージャをコールして、自動リフレッシュ操作が正常に行われているかどうかを確認します。「ttCacheAutorefreshStatsGetプロシージャの使用」を参照してください。
通常より長い時間InProgressの状態であるように思われる場合は、「自動リフレッシュのパフォーマンスが悪い」を参照してください。
場合によっては、自動リフレッシュ間隔を減らすか、キャッシュ管理ユーザーの表領域のサイズを大きくする必要があります。