ヘッダーをスキップ
Oracle In-Memory Database Cacheユーザーズ・ガイド
リリース11.2.1
B56054-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

7 キャッシュ環境の管理

この章では、キャッシュ・グリッド、キャッシュ・グループ、キャッシュ・エージェント・プロセスなどキャッシュ・システムの様々な側面を管理および監視する方法について説明します。内容は次のとおりです。

キャッシュ・エージェントおよびレプリケーション・エージェントのステータスの確認

ttAdminユーティリティまたはttStatusユーティリティを使用すると、TimesTenキャッシュ・エージェント・プロセスおよびレプリケーション・エージェント・プロセスが実行されているかどうかをチェックできる以外に、各エージェントの起動ポリシーを確認できます。

例7-1 ttAdminによるキャッシュ・エージェントおよびレプリケーション・エージェントのステータスの確認

ttAdmin -queryユーティリティ・コマンドを使用すると、キャッシュ・エージェントおよびレプリケーション・エージェントが実行されているかどうか、およびTimesTenデータベース用のキャッシュ・エージェントとレプリケーション・エージェントの起動ポリシーを確認できます。

% ttAdmin -query cachealone1
RAM Residence Policy            : inUse
Replication Agent Policy        : manual
Replication Manually Started    : True
Cache Agent Policy              : always
Cache Agent Manually Started    : True

ttAdminユーティリティの詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のttAdminに関する説明を参照してください。

例7-2 ttStatusによるキャッシュ・エージェントおよびレプリケーション・エージェントのステータスの確認

ttStatusユーティリティを使用すると、キャッシュ・エージェントおよびレプリケーション・エージェントが実行されているかどうか、およびインストール済インスタンスにおける、すべてのTimesTenデータベース用のキャッシュ・エージェントとレプリケーション・エージェントの起動ポリシーを確認できます。

% ttStatus
TimesTen status report as of Thu May  7 13:42:01 2009

Daemon pid 9818 port 4173 instance myinst
TimesTen server pid 9826 started on port 4175
------------------------------------------------------------------------
Data store /users/OracleCache/alone1
There are 38 connections to the data store
Shared Memory KEY 0x02011c82 ID 895844354
PL/SQL Memory KEY 0x03011c82 ID 895877123 Address 0x10000000
Type            PID     Context     Connection Name              ConnID
Cache Agent     1019    0x0828f840  Handler                           2
Cache Agent     1019    0x083a3d40  Timer                             3
Cache Agent     1019    0x0842d820  Aging                             4
Cache Agent     1019    0x08664fd8  Garbage Collector(-1580741728)    5
Cache Agent     1019    0x084d6ef8  Marker(-1580213344)               6
Cache Agent     1019    0xa5bb8058  DeadDsMonitor(-1579684960)        7
Cache Agent     1019    0x088b49a0  CacheGridEnv                     14
Cache Agent     1019    0x0896b9d0  CacheGridSend                    15
Cache Agent     1019    0x089fb020  CacheGridSend                    16
Cache Agent     1019    0x08a619f8  CacheGridSend                    17
Cache Agent     1019    0x08ace538  CacheGridRec                     18
Cache Agent     1019    0x08b42e88  CacheGridRec                     19
Cache Agent     1019    0x08bb77d8  CacheGridRec                     20
Cache Agent     1019    0x08c2c128  CacheGridRec                     21
Cache Agent     1019    0x08ca0a78  CacheGridRec                     22
Cache Agent     1019    0x08d153c8  CacheGridRec                     23
Cache Agent     1019    0x08d89d18  CacheGridRec                     24
Cache Agent     1019    0x08dfe668  CacheGridRec                     25
Cache Agent     1019    0x08e72fb8  CacheGridRec                     26
Cache Agent     1019    0x08ee8020  CacheGridRec                     27
Cache Agent     1019    0x08f5d088  CacheGridRec                     28
Cache Agent     1019    0x08fd23f8  CacheGridRec                     29
Cache Agent     1019    0x09047768  CacheGridRec                     30
Replication     18051   0x08c3d900  RECEIVER                          8
Replication     18051   0x08b53298  REPHOLD                           9
Replication     18051   0x08af8138  REPLISTENER                      10
Replication     18051   0x08a82f20  LOGFORCE                         11
Replication     18051   0x08bce660  TRANSMITTER                      12
Subdaemon       9822    0x080a2180  Manager                        2032
Subdaemon       9822    0x080ff260  Rollback                       2033
Subdaemon       9822    0x08548c38  Flusher                        2034
Subdaemon       9822    0x085e3b00  Monitor                        2035
Subdaemon       9822    0x0828fc10  Deadlock Detector              2036
Subdaemon       9822    0x082ead70  Checkpoint                     2037
Subdaemon       9822    0x08345ed0  Aging                          2038
Subdaemon       9822    0x083a1030  Log Marker                     2039
Subdaemon       9822    0x083fc190  AsyncMV                        2040
Subdaemon       9822    0x084572f0  HistGC                         2041
Replication policy  : Manual
Replication agent is running.
Cache Agent policy  : Always
TimesTen's Cache agent is running for this data store
PL/SQL enabled.
------------------------------------------------------------------------

ttStatusユーティリティによって表示される情報は次のとおりです。いずれも、インストール済インスタンスのTimesTenデータベースごとに用意されるOracle In-Memory Database Cacheに関する情報です。

ttStatusユーティリティの詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』ttStatusに関する説明を参照してください。

キャッシュ・グループおよびキャッシュ・グリッドの監視

次の項では、キャッシュ・グリッドおよびキャッシュ・グループに関する情報を取得する方法およびキャッシュ・グループ処理のステータスを監視する方法について説明します。

ttIsqlユーティリティのcachegroupsコマンドの使用

TimesTenデータベースのキャッシュ・グループに関する情報を取得するには、ttIsqlユーティリティのcachegroupsコマンドを使用します。

例7-3 ttIsqlユーティリティのcachegroupsコマンド

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> cachegroups;

Cache Group CACHEUSER.RECENT_SHIPPED_ORDERS:

  Cache Group Type: Read Only
  Autorefresh: Yes
  Autorefresh Mode: Incremental
  Autorefresh State: On
  Autorefresh Interval: 1440 Minutes
  Autorefresh Status: ok
  Aging: Timestamp based uses column WHEN_SHIPPED lifetime 30 days cycle 24 hours on

  Root Table: ORATT.ORDERS
  Table Type: Read Only


Cache Group CACHEUSER.SUBSCRIBER_ACCOUNTS:

  Cache Group Type: Asynchronous Writethrough global (Dynamic)
  Autorefresh: No
  Aging: LRU on

  Root Table: ORATT.SUBSCRIBER
  Table Type: Propagate

Cache Group CACHEUSER.WESTERN_CUSTOMERS:

  Cache Group Type: User Managed
  Autorefresh: No
  Aging: No aging defined

  Root Table: ORATT.ACTIVE_CUSTOMER
  Where Clause: (oratt.active_customer.region = 'West')
  Table Type: Propagate

  Child Table: ORATT.ORDERTAB
  Table Type: Propagate

  Child Table: ORATT.ORDERDETAILS
  Where Clause: (oratt.orderdetails.quantity >= 5)
  Table Type: Not Propagate

  Child Table: ORATT.CUST_INTERESTS
  Table Type: Read Only

3 cache groups found.

ttIsqlユーティリティのcachegroupsコマンドによって表示される情報は、次のとおりです。

  • キャッシュ・グループが動的であるかグローバルであるかを含むキャッシュ・グループ・タイプ

  • 自動リフレッシュ属性(モード、状態、間隔)およびステータス(適用可能な場合)

  • エージング・ポリシー(適用可能な場合)

  • ルート表の名前および(適用可能な場合は)子表の名前

  • キャッシュ表のWHERE句(適用可能な場合)

  • キャッシュ表属性(読取り専用、伝播、伝播なし)

ttIsqlユーティリティのcachegroupsコマンドの詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のttIsqlに関する説明を参照してください。

キャッシュ・グループでの自動リフレッシュ処理の監視

キャッシュ・グループの自動リフレッシュ処理に関する情報および統計を取得し、キャッシュ・グループが自動的にリフレッシュされるタイミングを監視するには、次のメカニズムを使用します。

  • ttCacheAutorefreshStatsGet組込みプロシージャをコールすると、指定されたキャッシュ・グループに対して実行された最後の10個の自動リフレッシュ処理に関する情報を取得できます。

    % ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
    Command> call ttCacheAutorefreshStatsGet('cacheuser','recent_shipped_orders');
    

    戻される情報には、各自動リフレッシュ処理の開始時間および所要時間や、各処理でキャッシュ表にリフレッシュされた行数などがあります。

    ttCacheAutorefreshStatsGet組込みプロシージャの詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』および『Oracle TimesTen In-Memory Databaseトラブルシューティング・プロシージャ・ガイド』のttCacheAutorefreshStatsGetプロシージャの使用に関する説明を参照してください。

  • キャッシュ管理ユーザーとしてSQL*PlusスクリプトTimesTen_install_dir/oraclescripts/cacheInfo.sqlを実行すると、自動リフレッシュ・キャッシュ・グループにキャッシュされたすべてのOracle表の変更ログ表情報を表示できます。

    % cd TimesTen_install_dir/oraclescripts
    % sqlplus cacheuser/oracle
    SQL> @cacheInfo
    *************Autorefresh Objects Information  ***************
    Host name: sys1
    Timesten datastore name: /users/OracleCache/alone1
    Cache table name: ORATT.ORDERS
    Change log table name: tt_05_69245_L
    Number of rows in change log table: 1
    Maximum logseq on the change log table: 0
    Timesten has autorefreshed updates upto logseq: 0
    Number of updates waiting to be autorefreshed: 0
    Number of updates that has not been marked with a valid logseq: 0
    ****************************
    

    変更ログ表ごとに戻される情報には、変更ログ表の名前、それに対応するTimesTenキャッシュ表の名前、変更ログ表の行数、変更ログ表内の更新のうちキャッシュ表に自動的にリフレッシュされなかった更新の数などが含まれています。

    cacheInfo.sqlスクリプトから戻される情報の詳細は、『Oracle TimesTen In-Memory Databaseトラブルシューティング・プロシージャ・ガイド』で、変更ログ表の情報の表示に関する説明を参照してください。

  • ttDaemonLogユーティリティを使用すると、サポート・ログ内の自動リフレッシュ処理に関する情報メッセージ、警告メッセージおよびエラー・メッセージを表示できます。

    % ttDaemonLog -show ora
    

    ttDaemonLogユーティリティの詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』を参照してください。

    サポート・ログ内の自動リフレッシュ処理に関するメッセージの詳細は、『Oracle TimesTen In-Memory Databaseトラブルシューティング・プロシージャ・ガイド』のサポート・ログ内の自動リフレッシュについてのメッセージおよび自動リフレッシュ障害の診断に関する説明を参照してください。

  • ttTraceMonユーティリティを使用すると、AUTOREFRESHコンポーネントのトレース・レコードを生成できます。

    % ttTraceMon cachealone1
    Trace monitor; empty line to exit
    Trace> level autorefresh 2
    Trace> flush
    Trace> outfile autorefresh.out
    Trace> <Press Enter to exit ttTraceMon>
    

    トレース・レコードに表示される情報には、各自動リフレッシュ処理が実行されたキャッシュ・グループの名前、各処理の所要時間、各処理でキャッシュ表にリフレッシュされた行数などがあります。

    ttTraceMonユーティリティの詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』を参照してください。

    自動リフレッシュ・トレース・レコードの詳細は、『Oracle TimesTen In-Memory Databaseトラブルシューティング・プロシージャ・ガイド』のAUTOREFRESHトレースに関する説明を参照してください。

  • TimesTen_install_dir/info/snmp.ini-enabledフラグを1に設定することによって、SNMPトラップのスローを有効にし、TimesTen_install_dir/mibs/TimesTen-MIB.txtファイルから、自動リフレッシュ・エラー条件に適用される様々なトラップを監視します。

    SNMPトラップおよび自動リフレッシュ処理に関するトラップの詳細は、『Oracle TimesTen In-Memory Databaseエラー・メッセージおよびSNMPトラップ』のSNMPトラップを介した診断に関する説明、および『Oracle TimesTen In-Memory Databaseトラブルシューティング・プロシージャ・ガイド』の自動リフレッシュ問題のアラートのためのSNMPトラップの使用に関する説明を参照してください。

AWTキャッシュ・グループ処理の監視

AWTキャッシュ・グループのパフォーマンスを監視し、AWTキャッシュ・グループ・ワークフローの各コンポーネントで特定のタスクを実行するためにかかる時間を割り出すには、次の手順を使用します。

  1. キャッシュ・マネージャ・ユーザーとしてttCacheAWTMonitorConfig組込みプロシージャをコールして、AWT監視を有効にし、AWTワークフロー・サンプリング係数を指定します。

    % ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
    Command> call ttCacheAWTMonitorConfig('ON',16);
    Command> exit
    

    AWTキャッシュ・グループを監視できるようにするには、レプリケーション・エージェントを実行する必要があります。

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

  2. ttRepAdmin -showstatus -awtmoninfoユーティリティ・コマンドを実行して、監視結果を表示します。

    % ttRepAdmin -showstatus -awtmoninfo cachealone1
    

    ttRepAdmin -showstatus -awtmoninfoユーティリティ・コマンドの出力の詳細は、『Oracle TimesTen In-Memory Databaseトラブルシューティング・プロシージャ・ガイド』のAWTパフォーマンスの監視に関する説明を参照してください。

非同期ライトスルー処理がAWTキャッシュ・グループのキャッシュ表の更新速度に遅れることなく対応しているかどうかを確認するには、SYS.MONITORシステム表のLAST_LOG_FILE、REPHOLD_LOG_FILE、REPHOLD_LOG_OFFの各列を問い合せます。 LAST_LOG_FILE列の値とREPHOLD_LOG_FILE列の値の差が時間の経過とともに増大し、かつREPHOLD_LOG_OFF列の値の増加速度が遅いかまたは変化しない場合は、キャッシュ表の更新速度が更新のレプリケートよりも速くなっています。

次に、ttRepAdmin -receiver -listユーティリティ・コマンドを実行し、_ORACLEが「Peer name」フィールドに存在する行を探します。 その同じ行内の「Last Msg Sent」、「Last Msg Recv」、「Latency」、「TPS」の各フィールドの値を参照して、遅れているレプリケーション・アクティビティが非同期ライトスルー処理であるかどうかを確認します。

非同期ライトスルーのパフォーマンス低下の考えられる原因とその解決策の詳細は、『Oracle TimesTen In-Memory Databaseトラブルシューティング・プロシージャ・ガイド』のAWTキャッシュ・グループのトラブルシューティングに関する説明を参照してください。

AWTキャッシュ・グループのトランザクション・ログ・ファイルのしきい値の設定

レプリケーション・エージェントは、トランザクション・ログを使用して、AWTキャッシュ・グループのキャッシュ表に対するどの更新がキャッシュされたOracle表に伝播され、どの更新が伝播されていないかを判別します。 レプリケーション・エージェントが実行されていないか、Oracleサーバーが使用不可能であるなどの障害により、更新がOracleに自動的に伝播されていない場合は、トランザクション・ログ・ファイルがディスクに蓄積されます。

蓄積可能なトランザクション・ログ・ファイルの数のしきい値を設定し、その値を超えた場合にAWTキャッシュ・グループのキャッシュ表に対する更新の追跡を停止するには、キャッシュ管理ユーザーとしてttCacheAWTThresholdSet組込みプロシージャをコールします。 デフォルトのしきい値は0です。 この組込みプロシージャをコールできるのは、TimesTenデータベースにAWTキャッシュ・グループが含まれている場合のみです。

このしきい値を超えた場合は、UNLOAD CACHE GROUP文の後にLOAD CACHE GROUP文を続けて使用することによって、キャッシュ表を、キャッシュされたOracle表と手動で同期化する必要があります。 トランザクション・ログ・ファイルに、キャッシュされたOracle表に伝播されなかった更新が含まれている場合も、TimesTenによってそのファイルが消去されることがあります。

例7-4 AWTキャッシュ・グループのトランザクション・ログ・ファイルのしきい値の設定

この例では、AWTキャッシュ・グループのキャッシュ表に対する更新を含むトランザクション・ログ・ファイルの数が5を超えると、更新の追跡が停止されます。伝播されない更新が含まれている可能性のあるトランザクション・ログ・ファイルが消去されることがあります。

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> call ttCacheAWTThresholdSet(5);

現在のトランザクション・ログ・ファイルのしきい値設定を確認するには、ttCacheAWTThresholdGet組込みプロシージャをコールします。

Command> call ttCacheAWTThresholdGet;
< 5 >
Command> exit

キャッシュ・グリッド情報の取得

キャッシュ・グリッドおよびそのグリッド・メンバーに関する情報を表示するには、次のメカニズムを使用します。

  • 指定のキャッシュ・グリッドまたはすべての既存のキャッシュ・グリッドについて、グリッド名、キャッシュ管理ユーザー名、オペレーティング・システム・プラットフォームおよびTimesTenメジャー・リリース番号を戻すには、キャッシュ・マネージャ・ユーザーとしてttGridInfo組込みプロシージャをコールします。

    % ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
    Command> call ttGridInfo('ttGrid');
    < TTGRID, CACHEUSER, Linux Intel x86, 32-bit, 11, 2, 1 >
    

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

  • 指定のキャッシュ・グリッドまたはすべての既存のキャッシュ・グリッドのすべてのメンバーについて、グリッド名、メンバーID、ノード番号、ホスト名、メンバー名、IPアドレスおよびキャッシュ・エージェントTCP/IPポート番号を戻すには、キャッシュ・マネージャ・ユーザーとしてttGridNodeStatus組込みプロシージャをコールします。

    % ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
    Command> call ttGridNodeStatus;
    < TTGRID, 1, 1, T, sys1, TTGRID_alone1_1, 140.87.0.201, 5001, <NULL>, <NULL>,
    <NULL>, <NULL>, <NULL> >
    < TTGRID, 2, 1, T, sys2, TTGRID_alone2_2, 140.87.0.202, 5002, <NULL>, <NULL>,
    <NULL>, <NULL>, <NULL> >
    < TTGRID, 3, 1, T, sys3, TTGRID_cacheact_3A, 140.87.0.203, 5003, T, sys4, TTGRID_cachestand_3B, 140.87.0.204, 5004 >
    

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

キャッシュされたOracle表に対して発行されたDDL文の追跡

キャッシュされたOracle表にDDL文が発行された場合、Oracle表に行を挿入するためにOracle TT_version_schema-ID_DDL_Tトリガーが起動されたとき、そのDDL文をOracle TT_version_DDL_L表で追跡できます。versionはTimesTenの内部バージョン番号、schema-IDはキャッシュされたOracle表を所有するユーザーのIDです。 キャッシュされたOracle表を所有するOracleユーザーごとに、トリガーが作成されます。 キャッシュされたOracle表に対して発行されたDDL文を保存するために、DDL追跡表が1つ作成されます。 キャッシュ管理ユーザーは、TT_version_DDL_L表およびTT_version_schema-ID_DDL_Tトリガーを所有します。

キャッシュされたOracle表に対して発行されたDDL文を追跡できるようにするには、キャッシュ・マネージャ・ユーザーとしてttCacheDDLTrackingConfig組込みプロシージャをコールします。 デフォルトでは、DDL文は追跡されません。

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

例7-5 キャッシュされたOracle表に対して発行されたDDL文の追跡の有効化

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> call ttCacheDDLTrackingConfig('enable');

キャッシュ管理ユーザーにRESOURCEやCREATE ANY TRIGGERなどの必要な権限のセットが付与されている場合は、TT_version_DDL_L表およびTT_version_schema-ID_DDL_Tトリガーが自動的に作成されます。 DDL文の追跡が有効化されている場合、キャッシュ・グループを作成したとき、これらのOracleオブジェクトが作成されます。

Oracleデータのキャッシュを管理するために使用するOracleオブジェクトを手動で作成した場合は、キャッシュ・マネージャ・ユーザーとして、ttIsqlユーティリティのcachesqlgetコマンドにORACLE_DDL_TRACKINGオプションおよびINSTALLフラグを指定して実行する必要があります。 このコマンドは、DDL文を追跡する必要がある、キャッシュされたOracle表を所有するOracleユーザーごとに実行する必要があります。 このコマンドを実行すると、SQL*Plusスクリプトが生成されます。このスクリプトは、Oracle DatabaseにTT_version_DDL_L表およびTT_version_schema-ID_DDL_Tトリガーを作成するために使用されます。

スクリプトの生成後、SQL*Plusを使用してsysユーザーとしてスクリプトを実行します。

例7-6 Oracleオブジェクトを手動で作成した場合のDDL追跡表およびトリガーの作成

この例では、ttIsqlユーティリティのcachesqlgetコマンドによって生成されるSQL*Plusスクリプトは、/tmp/trackddl.sqlファイルに保存されます。 キャッシュされたOracle表orattの所有者が、引数としてこのコマンドに渡されます。

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> cachesqlget ORACLE_DDL_TRACKING oratt INSTALL /tmp/trackddl.sql;
Command> exit

% sqlplus sys as sysdba
Enter password: password
SQL> @/tmp/trackddl
SQL> exit

Oracleスキーマに変更を加えるために、キャッシュされたOracle表に対してCREATE、DROP、ALTERなどのDDL文を発行する必要がある場合は、次のタスクを実行します。

  1. DROP CACHE GROUP文を使用して、処理対象のOracle表をキャッシュするすべてのキャッシュ・グループを削除します。 AWTキャッシュ・グループを削除する場合は、そのキャッシュ・グループを削除する前に、ttRepSubscriberWait組込みプロシージャを使用して、そのグループのキャッシュ表にコミットされたすべての更新をキャッシュされたOracle表に伝播します。

    % ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
    Command> call ttRepSubscriberWait('_AWTREPSCHEME','TTREP','_ORACLE','sys1',-1);
    
  2. キャッシュ・エージェントを停止します。

  3. 必要な変更をOracleスキーマに対して行います。

  4. CREATE CACHE GROUP文を使用してキャッシュ・グループを再作成します(可能な場合)。

Oracleスキーマを変更する前に、処理対象のキャッシュ・グループを削除しないと、自動リフレッシュなどキャッシュ・グループに対する処理が失敗する場合があります。

自動リフレッシュ・キャッシュ・グループにキャッシュされるOracle表を切り捨てる場合は、次のタスクを実行します。

  1. ALTER CACHE GROUP文を使用して、キャッシュ・グループの自動リフレッシュ状態をPAUSEDに設定します。

  2. Oracle表を切り捨てます。

  3. WHERE句またはWITH ID句を指定せずにREFRESH CACHE GROUP文を使用して、キャッシュ・グループを手動でリフレッシュします。

キャッシュ・グループをリフレッシュすると、自動リフレッシュ処理が再開されます。

キャッシュされたOracle表に対して発行されたDDL文の追跡に使用されるOracleオブジェクトの情報を表示するには、キャッシュ管理ユーザーとしてSQL*PlusスクリプトTimesTen_install_dir/oraclescripts/cacheInfo.sqlを実行します。

% cd TimesTen_install_dir/oraclescripts
% sqlplus cacheuser/oracle
SQL> @cacheInfo
*************DDL Tracking Object Information  ***************
Common DDL Log Table Name: TT_05_DDL_L
DDL Trigger Name: TT_05_315_DDL_T
Schema for which DDL Trigger is tracking: ORATT
Number of cache groups using the DDL Trigger: 10
****************************

キャッシュされたOracle表を所有するOracleユーザーごとに戻される情報には、DDL追跡表の名前、その対応するDDLトリガーの名前、DDLトリガーが関連付けられているユーザーの名前、DDLトリガーに関連付けられているユーザーが所有する表をキャッシュするキャッシュ・グループの数などがあります。

特定の表が複数のグリッド・メンバーにキャッシュされる場合、各グリッド・メンバーがキャッシュ・グループの数にカウントされます。 アクティブ・スタンバイ・ペアは、1つのグリッド・メンバーとしてカウントされます。 1つのキャッシュ・グループに複数のキャッシュ表が含まれている場合、DDLトリガーに関連付けられているユーザーが所有する各キャッシュ表がキャッシュ・グループの数にカウントされます。

キャッシュ環境の管理に使用するOracleオブジェクト

自動リフレッシュ・キャッシュ・グループの場合、TimesTenはそのキャッシュ・グループのキャッシュ表ごとに変更ログ表およびトリガーをOracle Databaseに作成します。 トリガーは、キャッシュされたOracle表で挿入、更新または削除処理がコミットされるたびに起動されます。 そのトリガーは、更新行の主キーを変更ログ表に記録します。 キャッシュ・エージェントは、定期的に変更ログ表で更新キーをスキャンし、変更ログ表をキャッシュされたOracle表と結合して最新の更新のスナップショットを取得します。

AUTOREFRESH MODE INCREMENTALキャッシュ・グループ属性を指定してキャッシュ・グループを作成すると、自動リフレッシュ処理に使用されるOracleオブジェクトを自動的に作成できます(「Oracleデータのキャッシュ管理に使用されるOracleオブジェクトの自動作成」を参照)。 また、セキュリティを確保するために、これらのオブジェクトの自動作成に必要なRESOURCEおよびCREATE ANY TRIGGER権限をキャッシュ管理ユーザーに付与しない場合は、キャッシュ・グリッド処理またはキャッシュ・グループ処理を実行する前に、これらのオブジェクトを手動で作成することもできます(「Oracleデータのキャッシュ管理に使用されるOracleオブジェクトの手動による作成」を参照)。

Oracleオブジェクトを自動または手動で作成するには、あらかじめ次の処理を実行しておく必要があります。

TimesTenは、キャッシュ管理ユーザーごとに次のOracle表を作成します。ここで、versionはTimesTenの内部バージョン番号、object-IDはキャッシュされたOracle表のIDです。

表名 説明
TT_version_AGENT_STATUS 最初のキャッシュ・グループの作成時に作成されます。 自動リフレッシュ・キャッシュ・グループにキャッシュされた各Oracle表に関する情報を保存します。
TT_version_AR_PARAMS キャッシュ管理ユーザーの名前およびパスワードが設定されたときに作成されます。 キャッシュ管理ユーザーの表領域が一杯になったときに実行するアクションを保存します。
TT_version_CACHE_STATS キャッシュ管理ユーザーの名前およびパスワードが設定されたときに作成されます。
TT_version_DATABASES キャッシュ管理ユーザーの名前およびパスワードが設定されたときに作成されます。 Oracle DatabaseからデータをキャッシュするすべてのTimesTenデータベースの自動リフレッシュ・ステータスを保存します。
TT_version_DB_PARAMS キャッシュ管理ユーザーの名前およびパスワードが設定されたときに作成されます。 キャッシュ・エージェント・タイムアウト、使用不可能なキャッシュ・グループのリカバリ方法およびキャッシュ管理ユーザーの表領域使用量しきい値を保存します。
TT_version_DDL_L キャッシュ管理ユーザーの名前およびパスワードが設定されたときに作成されます。 キャッシュされたOracle表に対して発行されたDDL文を追跡します。
TT_version_DDL_TRACKING キャッシュ管理ユーザーの名前およびパスワードが設定されたときに作成されます。 キャッシュされたOracle表に対するDDL文の追跡が有効であるか無効であるかを示すフラグを保存します。
TT_version_REPACTIVESTANDBY 最初のAWTキャッシュ・グループの作成時に作成されます。 アクティブ・スタンバイ・ペアのレプリケーション・スキームでレプリケートされるAWTキャッシュ・グループのキャッシュ表を含むTimesTenデータベースの状態およびロールを追跡します。
TT_version_REPPEERS 最初のAWTキャッシュ・グループの作成時に作成されます。 キャッシュされたOracle表に非同期に伝播されたキャッシュ表に対する最終更新の時間およびコミット順序番号を追跡します。
TT_version_SYNC_OBJS 最初のキャッシュ・グループの作成時に作成されます。
TT_version_USER_COUNT 最初のキャッシュ・グループの作成時に作成されます。 各キャッシュされたOracle表に関する情報を保存します。
TT_version_object-ID_L 自動リフレッシュ・キャッシュ・グループを作成すると、そのキャッシュ・グループにキャッシュされるOracle表ごとに変更ログ表が1つ作成されます。 キャッシュされたOracle表に対する更新を追跡します。

TimesTenは、キャッシュ管理ユーザーごとに次のOracleトリガーを作成します。ここで、versionはTimesTenの内部バージョン番号、object-IDはキャッシュされたOracle表のID、schema-IDはキャッシュされたOracle表を所有するユーザーのIDです。

トリガー名 説明
TT_version_REPACTIVESTANDBY_T 最初のAWTキャッシュ・グループの作成時に作成されます。 起動されると、TT_version_REPACTIVESTANDBY表に行を挿入します。
TT_version_object-ID_T 自動リフレッシュ・キャッシュ・グループを作成すると、そのキャッシュ・グループにキャッシュされるOracle表ごとにトリガーが1つ作成されます。 キャッシュされたOracle表に対して挿入、削除または更新処理が発行されるたびに起動され、TT_version_object-ID_L変更ログ表で処理を追跡します。
TT_version_schema-ID_DDL_T キャッシュされたOracle表を所有するユーザーごとに1つ存在します。 DDL文の追跡を有効にした後、キャッシュ・グループを作成すると作成されます。 キャッシュされたOracle表に対してDDL文が発行されるたびに起動され、TT_version_DDL_L表で処理を追跡します。

AWTキャッシュ・グループを作成するとき、非同期ライトスルー処理に使用されるOracleオブジェクトを自動的に作成できます(「Oracleデータのキャッシュ管理に使用されるOracleオブジェクトの自動作成」を参照)。 また、セキュリティを確保するために、これらのオブジェクトの自動作成に必要なRESOURCE権限をキャッシュ管理ユーザーに付与しない場合は、キャッシュ・グリッド処理またはキャッシュ・グループ処理を実行する前に、これらのオブジェクトを手動で作成することもできます(「Oracleデータのキャッシュ管理に使用されるOracleオブジェクトの手動による作成」を参照)。

TimesTenは、timestenユーザー用に次のOracle表を作成します。

表名 説明
TT_GRIDID SQL*PlusスクリプトinitCacheGlobalSchema.sqlを実行すると作成されます。 最近作成したキャッシュ・グリッドに割り当てられているID番号を保存します。
TT_GRIDINFO SQL*PlusスクリプトinitCacheGlobalSchema.sqlを実行すると作成されます。 すべての既存のキャッシュ・グリッドのグリッド名、グリッドIDおよびキャッシュ管理ユーザー名を保存します。

TimesTenは、キャッシュ管理ユーザーごとに次のOracle表を作成します。ここで、versionはTimesTenの内部バージョン番号、grid-IDはキャッシュ・グリッドのID番号です。

表名 説明
TT_version_grid-name_grid-IDCGNODEID グリッドが作成されると、キャッシュ・グリッドごとに1つの表が作成されます。 オペレーティング・システムの名前、そのバージョンおよびTimesTenリリース番号を保存します。
TT_version_grid-name_grid-IDCGNODEINFO グリッドが作成されると、キャッシュ・グリッドごとに1つの表が作成されます。 すべてのアタッチ済グリッド・メンバーのホスト名、メンバー名、IPアドレスおよびキャッシュ・エージェントTCP/IPポートを保存します。
TT_version_grid-name_grid-IDCGGROUPDEFS グリッドが作成されると、キャッシュ・グリッドごとに1つの表が作成されます。 キャッシュ・グリッドに関連付けられているスタンドアロンTimesTenデータベースまたはアクティブ・スタンバイ・ペアのすべてのグローバル・キャッシュ・グループのキャッシュ・グループ名、所有者、参照カウントおよびSQLテキストを保存します。

TimesTenデータベースでの自動リフレッシュ処理の失敗による影響

変更ログ表は、自動リフレッシュ・キャッシュ・グループにキャッシュされるOracle表ごとに、キャッシュ管理ユーザーの表領域に作成されます。 これらのキャッシュされたOracle表に対して更新処理が発行されるたびに、対応する変更ログ表に行が1つ挿入されます。これにより、次回の増分自動リフレッシュ・サイクルにおいて、TimesTenキャッシュ表に適用する必要がある更新を常時監視できるようになります。 TimesTenは、キャッシュ表に適用された変更ログ表の行を定期的に削除します。

1つのOracle表をTimesTenデータベース内の複数のキャッシュ・グループに、キャッシュすることはできません。 ただし、1つのOracle表を複数のTimesTenデータベースにキャッシュできるため、1つのOracle表が複数のTimesTenキャッシュ表に対応することになります。 Oracle表がキャッシュされる1つ以上のTimesTenデータベースでキャッシュ・エージェントが実行されていないために、キャッシュされたOracle表に対する更新が対応するすべてのキャッシュ表に自動的にリフレッシュされない場合、それぞれの変更ログ表の行はデフォルトでは削除されません。 キャッシュ・エージェントが明示的に停止されたか、または起動されていなかったため、あるいはデータベースが破棄されたか、データベースがあるインストール済インスタンスが停止しているために、キャッシュ・エージェントが特定のTimesTenデータベースで実行されない場合があります。 この結果、変更ログ表に行が蓄積し、キャッシュ・エージェントが実行されているTimesTenデータベースのキャッシュ表に対する自動リフレッシュ処理のパフォーマンスが低下します。 また、キャッシュ管理ユーザーの表領域が一杯になる場合もあります。

キャッシュ・エージェント・タイムアウトを設定すると、行が変更ログ表に蓄積されて削除されない状態を回避できます。 TimesTenデータベースでキャッシュ・エージェントが実行されておらず、キャッシュ・エージェント・タイムアウトを設定している場合、変更ログ表の行を削除するには、次の基準が満たされている必要があります。

Oracle Databaseからのデータをキャッシュする任意のTimesTenデータベースから、キャッシュ・マネージャ・ユーザーとしてttCacheConfig組込みプロシージャをコールします。 AgentTimeout文字列をParamパラメータに渡し、タイムアウト設定を数値文字列としてValueパラメータに渡します。 tblOwnerパラメータおよびtblNameパラメータには値を渡さないでください。これは、キャッシュ・エージェント・タイムアウトの設定にはこれらのパラメータを適用できないためです。

例7-7 キャッシュ・エージェント・タイムアウトの設定

次の例では、キャッシュ・エージェント・タイムアウトを900秒(15分)に設定しています。

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> call ttCacheConfig('AgentTimeout',,,'900');

現在のキャッシュ・エージェント・タイムアウト設定を確認するには、AgentTimeout文字列のみをParamパラメータに渡してttCacheConfigをコールします。

Command> call ttCacheConfig('AgentTimeout');
< AgentTimeout, <NULL>, <NULL>, 900 >

デフォルトのキャッシュ・エージェント・タイムアウトは0秒であり、変更ログ表の行はすべてのキャッシュ表に適用されるまで削除されません。 キャッシュ・エージェント・タイムアウトを1から600秒のいずれかの値に設定すると、タイムアウトは600秒に設定されます。 キャッシュ・エージェント・タイムアウトは、同じOracle Databaseからデータをキャッシュし、かつ同じキャッシュ管理ユーザー名が設定されているすべてのTimesTenデータベースに適用されます。

適切なキャッシュ・エージェント・タイムアウト設定を決定するときは、TimesTenデータベースをメモリーにロードするために要する時間、キャッシュ・エージェント・プロセスを開始するための時間、ネットワーク停止の可能性がある期間および計画メンテナンス作業の所要見積時間を考慮してください。

各TimesTenデータベースおよびそのすべての自動リフレッシュ・キャッシュ・グループには自動リフレッシュ・ステータスがあり、変更ログ表から削除された行がキャッシュ・グループのキャッシュ表に適用されたかどうかを判別できるようになっています。 変更ログ表から行が削除されたものの、データベース上のキャッシュ・エージェントがキャッシュ・エージェント・タイムアウトを超える期間停止していたために、それがキャッシュ表に適用されなかった場合、そのキャッシュ表はキャッシュされたOracle表と同期化されなくなります。 キャッシュされたOracle表に対する以後の更新は、付随するキャッシュ・グループがリカバリされるまで、キャッシュ表に自動的にはリフレッシュされません。

自動リフレッシュ・キャッシュ・グループの有効な自動リフレッシュ・ステータスは、次のとおりです。

TimesTenデータベースの有効な自動リフレッシュ・ステータスは、次のとおりです。

TimesTenデータベース上のキャッシュ・エージェントがキャッシュ・エージェント・タイムアウトを超える期間停止していると、そのTimesTenデータベースの自動リフレッシュ・ステータスはdeadに設定されます。 また、そのデータベース内のすべての自動リフレッシュ・キャッシュ・グループの自動リフレッシュ・ステータスがdeadに設定されます。

SNMPトラップを有効にしている場合、データベースの自動リフレッシュ・ステータスがdeadに設定されると、トラップがスローされます。

キャッシュ・グループおよびその付随するTimesTenデータベースの自動リフレッシュ・ステータスを確認するには、キャッシュ・マネージャ・ユーザーとしてttCacheDbCgStatus組込みプロシージャをコールします。 キャッシュ・グループの所有者をcgOwnerパラメータに、キャッシュ・グループの名前をcgNameパラメータにそれぞれ渡します。

例7-8 キャッシュ・グループおよびTimesTenデータベースの自動リフレッシュ・ステータスの確認

次の例では、データベースの自動リフレッシュ・ステータスはaliveとなっており、cacheuser.customer_orders読取り専用キャッシュ・グループの自動リフレッシュ・ステータスはokとなっています。

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> call ttCacheDbCgStatus('cacheuser','customer_orders');
< alive, ok >

データベースの自動リフレッシュ・ステータスのみを表示し、特定のキャッシュ・グループの自動リフレッシュ・ステータスは表示しないようにするには、パラメータを指定せずにttCacheDbCgStatusをコールします。

Command> call ttCacheDbCgStatus;
< dead, <NULL> >

キャッシュ・グループの自動リフレッシュ・ステータスがokである場合、そのキャッシュ表は自動リフレッシュ間隔に基づいて自動的にリフレッシュされます。 データベースの自動リフレッシュ・ステータスがaliveである場合、そのデータベースのすべての自動リフレッシュ・キャッシュ・グループの自動リフレッシュ・ステータスがokとなります。

キャッシュ・グループの自動リフレッシュ・ステータスがdeadである場合、そのキャッシュ表はキャッシュされたOracle表に対する更新がコミットされても、自動的にはリフレッシュさません。 キャッシュ表をキャッシュされたOracle表と再同期化するには、キャッシュ・グループをリカバリする必要があります。

自動リフレッシュ・ステータスがdeadになっているキャッシュ・グループ用にリカバリ方法を構成できます。

Oracle Databaseからのデータをキャッシュする任意のTimesTenデータベースから、キャッシュ・マネージャ・ユーザーとしてttCacheConfig組込みプロシージャをコールします。 DeadDbRecovery文字列をParamパラメータに渡し、リカバリ方法を文字列としてValueパラメータに渡します。 tblOwnerパラメータおよびtblNameパラメータには値を渡さないでください。これは、deadとなっているキャッシュ・グループのリカバリ方法の設定にはこれらのパラメータを適用できないためです。

有効なリカバリ方法は次のとおりです。

例7-9 deadとなっているキャッシュ・グループのリカバリ方法の構成

次の例では、自動リフレッシュ・ステータスがdeadとなっているキャッシュ・グループのリカバリ方法をManualに設定しています。

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> call ttCacheConfig('DeadDbRecovery',,,'Manual');

deadとなっているキャッシュ・グループの現在のリカバリ方法を確認するには、DeadDbRecovery文字列のみをParamパラメータに渡してttCacheConfigをコールします。

Command> call ttCacheConfig('DeadDbRecovery');
< DeadDbRecovery, <NULL>, <NULL>, manual >

このリカバリ方法は、同じOracle Databaseからデータをキャッシュし、かつ同じキャッシュ管理ユーザー名が設定されているすべてのTimesTenデータベースのすべての自動リフレッシュ・キャッシュ・グループに適用されます。

SNMPトラップを有効にしている場合、キャッシュ・エージェントが起動し、リカバリ方法をManualまたはNoneに設定すると、トラップがスローされ、REFRESH CACHE GROUPやDROP CACHE GROUPなどの文を手動で発行して、データベース内で自動リフレッシュ・ステータスがdeadとなっているキャッシュ・グループをリカバリするよう警告されます。

キャッシュ・グループがリカバリ・プロセスを開始すると、その自動リフレッシュ・ステータスがdeadからrecoveringに変更され、付随するTimesTenデータベースのステータスが現在deadである場合にはrecoveringに変更されます。

キャッシュ・グループのリカバリが完了すると、その自動リフレッシュ・ステータスがrecoveringからokに変更されます。 すべてのキャッシュ・グループがリカバリされ、それらの自動リフレッシュ・ステータスがokであると、付随するTimesTenデータベースのステータスがrecoveringからaliveに変更されます。

リフレッシュする更新が少量で、かつキャッシュ表に多数の行が存在する場合、完全自動リフレッシュ処理には増分自動リフレッシュ処理よりも多くのシステム・リソースが必要となります。 メンテナンス作業のためにTimesTenデータベースを停止する必要があり、その停止中、自動リフレッシュ・キャッシュ・グループにキャッシュされるOracle表に対して実行される更新の量が少ないと予測される場合は、一時的にキャッシュ・エージェント・タイムアウトを0に設定してみることをお薦めします。 データベースが稼働状態に戻り、キャッシュ・エージェントが再起動すると、増分自動リフレッシュ処理が自動リフレッシュ・キャッシュ・グループのキャッシュ表で再開されます。 付随するキャッシュ・グループの自動リフレッシュ・ステータスがokからdeadに変更されなかったため、完全自動リフレッシュ処理が回避されます。そのため、付随するキャッシュ・グループのリカバリ・プロセスは必要ありません。 データベースが稼働状態に戻り、キャッシュ・エージェントが起動された後、キャッシュ・エージェント・タイムアウトを元の値に戻します。

自動リフレッシュ・キャッシュ・グループで使用されているOracleオブジェクトの削除

自動リフレッシュ・キャッシュ・グループを含むTimesTenデータベースが使用できなくなっても、自動リフレッシュ処理の実装に使用される変更ログ表やトリガーなどのOracleオブジェクトは引き続きOracle Databaseに存在します。 TimesTenデータベースは、たとえば、TimesTenシステムがオフラインになったり、自動リフレッシュ・キャッシュ・グループを削除せずにデータベースを破棄すると使用不可能になります。

TimesTenデータベースが使用されなくなっても、自動リフレッシュ・キャッシュ・グループを含んでいる場合は、自動リフレッシュ処理の実装に使用されるOracleオブジェクトもOracle Databaseに引き続き存在します。 行が引き続き変更ログ表に蓄積されます。 これは、他のTimesTenデータベースに対する自動リフレッシュのパフォーマンスに影響を与えます。 このため、使用不可能になったり破棄されたTimesTenデータベースに関連付けられているこれらのOracleオブジェクトを削除することをお薦めします。

自動リフレッシュ処理の実装に使用されるOracleオブジェクトを削除するには、キャッシュ管理ユーザーとしてSQL*PlusスクリプトTimesTen_install_dir/oraclescripts/cacheCleanUp.sqlを実行します。 TimesTenシステムのホスト名およびTimesTenデータベースのパス名を引数としてcacheCleanUp.sqlスクリプトに渡します。 TimesTenシステムのホスト名およびデータベース・パス名を確認するには、キャッシュ管理ユーザーとしてcacheInfo.sqlスクリプトを実行します。 また、cacheInfo.sqlスクリプトは、自動リフレッシュ処理の実装に使用されるオブジェクトがOracle Databaseに存在するかどうかを確認する場合にも使用できます。

例7-10 自動リフレッシュ・キャッシュ・グループのOracleオブジェクトの削除

次の例では、TimesTenデータベースを削除した後も、TimesTenデータベースにキャッシュ表oratt.customerおよびoratt.ordersを含む読取り専用キャッシュ・グループcustomer_ordersが1つ存在しています。 cacheCleanUp.sqlスクリプトは、この2つのキャッシュ表に関連付けられている変更ログ表およびトリガーを削除します。

% cd TimesTen_install_dir/oraclescripts
% sqlplus cacheuser/oracle
SQL> @cacheCleanUp "sys1" "/users/OracleCache/alone1"

*****************************OUTPUT**************************************
Performing cleanup for object_id: 69959 which belongs to table : CUSTOMER
Executing: delete from tt_05_agent_status where host = sys1 and datastore =
/users/OracleCache/alone1 and object_id = 69959
Executing: drop table tt_05_69959_L
Executing: drop trigger tt_05_69959_T
Executing: delete from tt_05_user_count where object_id = object_id1
Performing cleanup for object_id: 69966 which belongs to table : ORDERS
Executing: delete from tt_05_agent_status where host = sys1 and datastore =
/users/OracleCache/alone1 and object_id = 69966
Executing: drop table tt_05_69966_L
Executing: drop trigger tt_05_69966_T
Executing: delete from tt_05_user_count where object_id = object_id1
**************************************************************************

キャッシュ管理ユーザーの表領域の監視

デフォルトでは、キャッシュ管理ユーザーの表領域が一杯になった場合に、UPDATE文、INSERT文またはDELETE文などの更新処理を特定のキャッシュされたOracle表に発行すると、Oracleからアプリケーションにエラーが返されます。

キャッシュ管理ユーザーの表領域が一杯になったときにアプリケーションにエラーを返すのではなく、更新処理が特定のキャッシュされたOracle表に発行されたときに変更ログ表から既存の行を削除して、新規行のための領域を確保するようにTimesTenを構成できます。 変更ログ表から削除した行の一部がTimesTenキャッシュ表に適用されなかった場合、次回の自動リフレッシュ・サイクルにおいて、そのキャッシュ表を含む各TimesTenデータベースのキャッシュ表に完全自動リフレッシュ処理が実行されます。

Oracle Databaseからの表をキャッシュする任意のTimesTenデータベースから、キャッシュ・マネージャ・ユーザーとしてttCacheConfig組込みプロシージャをコールします。 TblSpaceFullRecovery文字列をParamパラメータに、キャッシュされたOracle表の所有者および名前をtblOwnerパラメータおよびtblNameパラメータにそれぞれ渡します。このOracle表に、キャッシュ管理ユーザーの表領域が一杯になった場合に実行するアクションを構成します。さらに、そのアクション自体を文字列としてValueパラメータに渡します。

有効なアクションは次のとおりです。

例7-11 キャッシュ管理ユーザーの表領域が一杯になった場合のアクションの構成

次の例では、キャッシュされたOracle表oratt.customerに更新処理が発行されたときにキャッシュ管理ユーザーの表領域が一杯である場合、次回の自動リフレッシュ・サイクルにおいて、変更ログ表から行が削除され、キャッシュ表に対して完全自動リフレッシュ処理が実行されます。

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> call ttCacheConfig('TblSpaceFullRecovery','oratt','customer','Reload');

キャッシュ管理ユーザーの表領域が一杯である場合に、特定のキャッシュされたOracle表に対して更新処理を発行すると実行される現在のアクションを確認するには、TblSpaceFullRecovery文字列のみをParamパラメータに、キャッシュされたOracle表の所有者および名前をtblOwnerパラメータおよびtblNameパラメータにそれぞれ渡してttCacheConfigをコールします。

Command> call ttCacheConfig('TblSpaceFullRecovery','oratt','customer');
< TblSpaceFullRecovery, ORATT, CUSTOMER, reload >

キャッシュ管理ユーザーの表領域が一杯である場合に、キャッシュされたOracle表に対して更新処理を発行すると実行されるアクションは、同じOracle Databaseから表をキャッシュし、かつ同じキャッシュ管理ユーザー名が設定されているすべてのTimesTenデータベースに適用されます。

SNMPトラップを有効にしている場合、キャッシュされたOracle表に対して更新処理を発行し、キャッシュ管理ユーザーの表領域が一杯であると、トラップがスローされます。

UPDATE文、INSERT文またはDELETE文などの更新処理をキャッシュされたOracle表に対して発行したために、キャッシュ管理ユーザーの表領域の使用量が指定のしきい値を超えた場合に、アプリケーションに警告が返されるようにTimesTenを構成できます。

Oracle Databaseからの表をキャッシュする任意のTimesTenデータベースから、キャッシュ・マネージャ・ユーザーとしてttCacheConfig組込みプロシージャをコールします。 TblSpaceThreshold文字列をParamパラメータに渡し、しきい値を数値文字列としてValueパラメータに渡します。 しきい値はキャッシュ管理ユーザーの表領域に使用されている領域の比率であり、この値に達すると、キャッシュされたOracle表に更新処理を発行したときにアプリケーションに警告が返されます。 tblOwnerパラメータおよびtblNameパラメータには値を渡さないでください。これは、キャッシュ管理ユーザーの表領域使用量警告しきい値の設定にはこれらのパラメータを適用できないためです。

キャッシュ・マネージャ・ユーザーがキャッシュ管理ユーザーの表領域使用量警告しきい値を設定し、キャッシュ管理ユーザーがその表領域を監視して構成済のしきい値を超えたかどうかを確認できるようにするには、キャッシュ管理ユーザーにOracle表SYS.DBA_DATA_FILESに対するSELECT権限を付与する必要があります。

例7-12 キャッシュ管理ユーザーの表領域使用量警告しきい値の設定

次の例では、キャッシュされたOracle表に更新処理を発行した結果、キャッシュ管理ユーザーの表領域の使用量が80%を超えた場合には、発行元のアプリケーションに警告を返すように構成しています。

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> call ttCacheConfig('TblSpaceThreshold',,,'80');

キャッシュ管理ユーザーの表領域使用量警告しきい値の現在の設定を確認するには、TblSpaceThreshold文字列のみをParamパラメータに渡してttCacheConfigをコールします。

Command> call ttCacheConfig('TblSpaceThreshold');
< TblspaceThreshold, <NULL>, <NULL>, 80 >

キャッシュ管理ユーザーのデフォルトの表領域使用量警告しきい値は0%です。つまり、表領域使用量に関係なく、アプリケーションには警告が返されません。 キャッシュ管理ユーザーの表領域使用量警告しきい値は、同じOracle Databaseから表をキャッシュし、かつ同じキャッシュ管理ユーザー名が設定されているすべてのTimesTenデータベースに適用されます。

SNMPトラップを有効にしている場合、キャッシュ管理ユーザーの表領域使用量が構成済のしきい値を超えると、トラップがスローされます。