この項の内容は次のとおりです。
ttCacheAutorefreshStatsGetプロシージャでは、指定したキャッシュ・グループで実行された最近10回の自動リフレッシュ操作に関する情報が返されます。
ttCacheAutorefreshStatsGetで情報が返されるのは、キャッシュ・エージェントが実行中で、自動リフレッシュの状態がONまたはPAUSEDになっている場合のみです。キャッシュ・エージェントが再起動されたり、自動リフレッシュの状態がOFFに変更された場合、すべての戻りフィールドは0(ゼロ)に設定されます。
testcacheは、1つの表を持ち、増分自動リフレッシュ間隔が10秒のREADONLYキャッシュ・グループです。
Command> call ttcacheautorefreshstatsget('user1','testcache');
< 1164260, 2007-07-23 15:43:52.000000, 850280, 44, 0, 75464, 528255, 75464, 310, 110, 6800, 1890912, 12439795, 1890912, 160020, InProgress >
< 1164260, 2007-07-23 15:43:33.000000, 831700, 43, 13550, 108544, 759808, 108544, 1030, 230, 12290, 1815448, 11911540, 1815448, 160020, Complete >
< 1164260, 2007-07-23 15:43:12.000000, 810230, 42, 17040, 115712, 809984, 115712, 610, 330, 16090, 1706904, 11151732, 1706904, 146470, Complete >
< 1164260, 2007-07-23 15:42:52.000000, 790190, 41, 14300, 94208, 659456, 94208,560, 320, 13410, 1591192, 10341748, 1591192, 129430, Complete >
< 1164260, 2007-07-23 15:42:32.000000, 770180, 40, 12080, 99328, 695296, 99328,450, 290, 11340, 1496984, 9682292, 1496984, 115130, Complete >
< 1164260, 2007-07-23 15:42:12.000000, 750130, 39, 10380, 86016, 598368, 86016,430, 230, 9720, 1397656, 8986996, 1397656, 103050, Complete >
< 1164260, 2007-07-23 15:41:52.000000, 730130, 38, 13530, 112640, 700768, 112640, 530, 220, 12780, 1311640, 8388628, 1311640, 92670, Complete >
< 1164260, 2007-07-23 15:41:32.000000, 710120, 37, 9370, 56320, 326810, 56320, 310, 160, 8900, 1199000, 7687860, 1199000, 79140, Complete >
< 1164260, 2007-07-23 15:41:22.000000, 700120, 36, 2120, 10240, 50330, 10240, 50, 200, 1870, 1142680, 7361050, 1142680, 69770, Complete >
< 1164260, 2007-07-23 15:41:12.000000, 690110, 35, 0, 0, 0, 0, 0, 0, 0, 1132440, 7310720, 1132440, 67650, Complete >
10 rows found.
表4.1に、出力の最初の行の結果を示します。
この例では子表がないため、自動リフレッシュされた行の総数(1890912)は、自動リフレッシュされたルート表の行の総数と同じになります。
Oracleで更新される行数が、TimesTenで自動リフレッシュされる行数に反映されるとはかぎりません。Oracleの更新がTimesTenで複数回適用されたり、Oracleの同じ行への複数の更新がTimesTenでは1回の更新として適用される場合もあります。
TimesTenには、Oracleデータベースに存在する変更ログ表から、自動リフレッシュ・キャッシュ・グループの情報を収集するSQLスクリプトが用意されています。変更ログ表の詳細は、『Oracle TimesTen Cache Connect to Oracle開発者および管理者ガイド』のREADONLY、AUTOREFRESHおよびAWTキャッシュ・グループのOracleオブジェクトの管理に関する説明を参照してください。
スクリプトでは、キャッシュされた各表について次の情報が表示されます。
****************************
* Host name: my-pc
* Timesten datastore name: c:\data\tt70
* Cache table name: USER1.TESTCACHE
* Change log table name: tt_03_55555_L
* number of rows in change log table: 100000
* Maximum logseq on the change log table: 38
* Timesten has autorefreshed updates up to logseq: 38
* Number of updates waiting to be autorefreshed: 0
* Number of updates that has not been marked with a valid logseq: 0
****************************
ログ順序番号(logseq
)は、自動リフレッシュ操作のマーカーとして機能します。
SQL*Plusを使用して、Oracleデータベースでキャッシュ管理ユーザーとしてスクリプトを実行します。別のユーザーとしてスクリプトを実行すると、変更ログ表が存在しないことがレポートされます。
スクリプトの場所は次のとおりです。
install_dir/bin/autorefreshChangeLogInfo.sql
サポート・ログには、自動リフレッシュの処理状況を示すメッセージが含まれます。たとえば、自動リフレッシュ間隔が10秒(10,000ミリ秒)に設定されたREADONLYキャッシュ・グループtestcacheがあるとします。
自動リフレッシュが開始されると、サポート・ログには次のように表示されます。
15:43:33.96 Info: ORA: 5264: ora-5264-5676-refresh03918: Starting autorefresh number 43 for interval 10000ms
メッセージに含まれる情報は次のとおりです。
自動リフレッシュ番号は特定の時間隔に対してのみ一意であるため、スレッドIDは重要です。特定の自動リフレッシュ操作を追跡する際は、スレッドIDと自動リフレッシュ番号の両方を確認するようにしてください。
サポート・ログには、ttCacheAutorefreshStatsGetプロシージャに似た情報をレポートする長いメッセージも含まれます。この自動リフレッシュ間隔では、108544行が更新され、キャッシュ・エージェントの起動後に1815448行が更新されています。このメッセージでは、行の総数とルート表の行の総数が同じであることに注意してください。これは、キャッシュ・グループに表が1つしかないためです。Numberは自動リフレッシュ番号です。すべての時間はミリ秒単位で表されます。
15:43:51.81 Info: ORA: 5264: ora-5264-5676-refresh04387: Cache agent refreshed cache group USER1.TESTCACHE: Number - 43, Duration - 13550, NumRows - 108544, NumRootTblRows - 108544, NumOracleBytes - 759808, queryExecDuration - 230, queryFetchDuration - 1030, ttApplyDuration - 12290, totalNumRows - 1815448, totalNumRootTblRows - 1815448, totalNumOracleBytes - 11911540, totalDuration - 160020
追加メッセージに、自動リフレッシュ操作が正常に完了したことが示されます。
15:43:51.81 Info: ORA: 5264: ora-5264-5676-refresh04449: Autorefresh number 43 finished for interval 10000ms successfully
15:43:51.81 Info: ORA: 5264: ora-5264-5676-fresher01619: Autorefresh number 43 succeeded for interval 10000 milliseconds
タイムスタンプを調べ、自動リフレッシュが予想どおり処理されているかどうかを確認します。
サポート・ログの場所の設定方法については、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のTimesTenデーモン・オプションの管理に関する説明を参照してください。
ttCacheAutorefreshStatsGetで自動リフレッシュ操作の状態がFailedと表示された場合は、ttCacheAutorefreshStatsGetの出力に表示された番号の自動リフレッシュ操作に関連するメッセージをサポート・ログで確認します。自動リフレッシュ操作の開始後に発生したエラーがないかどうかを探します。
ttCacheAutorefreshStatsGetの出力の次の行が、失敗した自動リフレッシュ操作を示しています。
< 1164260, 2007-08-01 14:56:36.000000, 959350, 9, 0, 0, 0, 0, 0, 0, 0, 1, 7, 1, 50, Failed >
自動リフレッシュ番号は9です。
サポート・ログに、自動リフレッシュ番号9の開始メッセージが表示されています。
14:56:36.10 Info: ORA: 5988: ora-5988-4724-refresh03926: Starting autorefresh number 9 for interval 15000ms
自動リフレッシュ番号9のスレッドIDは4724です。このスレッドIDを持つエラー・メッセージを検索します。
サポート・ログに次のメッセージが表示されています。
14:56:36.10 Info: ORA: 5988: ora-5988-4724-refresh03953: Autorefresh thread for interval 15000ms is connected to instance inst1 on host host1. Server handle 231976252
14:56:36.12 Err : ORA: 5988: ora-5988-4724-refresh07567: TimesTen error code:5901, msg The Oracle refresh log table, "USER2"."TT_03_81799_L", for base table, USER2.READTAB2, cannot be found.
14:56:36.12 Info: ORA: 5988: ora-5988-4724-refresh05559: Autorefresh rolled back.
14:56:36.12 Info: ORA: 5988: ora-5988-4724-refresh04458: Autorefresh number 9 finished for interval 15000ms with error.
14:56:36.12 Err : ORA: 5988: ora-5988-4724-fresher01606: Autorefresh number 9 failed for cache groups with interval 15000 ms after 10 retries.
スレッドID 4724のエラー・メッセージは、変更ログ表TT_03_81799_Lが欠落していることを示しています。この状況での対処方法については、「自動リフレッシュ時に指定した間隔でキャッシュがリフレッシュされない」の表を参照してください。
ttTraceMonユーティリティを使用すると、自動リフレッシュのパフォーマンス問題を診断できます。「AUTOREFRESHトレース」を参照してください。
トレースの出力をファイルに行うと、TimesTenのトレース処理は、アプリケーションのパフォーマンスに大きく影響し、大量のディスク領域を消費します。診断が終了したら、トレースをデフォルト値にリセットしてください。
SNMPトラップを有効にして、自動リフレッシュの問題が発生した場合にアラートが表示されるようにします。自動リフレッシュに関連するSNMPトラップは次のとおりです。
『Oracle TimesTen In-Memory Databaseエラー・メッセージおよびSNMPトラップ』のSNMPトラップによる診断に関する説明を参照してください。