キャッシュ環境の管理

TimesTen Scaleout内でキャッシュ環境を管理する方法があります。

キャッシュ・エージェント・プロセスのステータスのモニタリング

ttGridAdmin dbStatus -allコマンドを使用して、どのTimesTenキャッシュ・エージェント・プロセスが実行されているかを確認できます。

次の例では、database1データベースのキャッシュエージェントの1つが停止しています。

% ttGridAdmin dbStatus database1 -all

Database database1 summary status as of Mon Dec  7 14:54:57 PST 2020
created,loaded-complete,open
 
Completely created elements: 6 (of 6)
Completely loaded elements: 6 (of 6)
Completely created replica sets: 3 (of 3)
Completely loaded replica sets: 3 (of 3)

Cache agents running: 5 (of 6)
Open elements: 6 (of 6)

その後、ttGridAdmin dbStatus -elementコマンドを使用して、データベースの各データ・インスタンスでどのキャッシュ・エージェントが実行されているかを確認できます。すべてのデータ・インスタンスは、Oracleデータベースにアクセスできる必要があります。

次の例では、database1データベースのhost4インスタンスでキャッシュ・エージェントが実行されていません。

% ttGridadmin dbStatus database1 -element
 
Database database1 element level status as of Mon Dec  7 14:52:51 PST 2020
 
Host  Instance  Elem Status CA Status Date/Time of Event  Message 
----- --------- ---- ------ --------- ------------------- ------- 
host3 instance1    1 opened started   2020-11-23 08:37:35         
host4 instance1    2 opened stopped   2020-11-23 08:37:35         
host5 instance1    3 opened started   2020-11-23 08:37:35         
host6 instance1    4 opened started   2020-11-23 08:37:35         
host7 instance1    5 opened started   2020-11-23 08:37:35         
host8 instance1    6 opened started   2020-11-23 08:37:35 

次のように、host4.instance1インスタンスのキャッシュ・エージェントを再起動できます。

% ttGridAdmin dbCacheStart database1 -instance host4.instance1]
Database database1 : Starting cache agents. 0 cache agents started.

『Oracle TimesTen In-Memory Databaseリファレンス』データベースのステータスのモニター(dbStatus)およびキャッシュ・エージェントの起動(dbCacheStart)を参照してください。

キャッシュ・グループに関する情報の表示

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

% ttIsql "DSN=database1;UID=cacheadmin;PwdWallet=/wallets/cacheadminwallet"
Command> cachegroups;

Cache Group CACHEADMIN.READCACHE:
 
  Cache Group Type: Read Only
  Autorefresh: Yes
  Autorefresh Mode: Incremental
  Autorefresh State: On
  Autorefresh Interval: 5 Seconds
  Autorefresh Status: ok
  Aging: No aging defined
 
  Root Table: SALES.READTAB
  Table Type: Read Only
 
1 cache group found.

『Oracle TimesTen In-Memory Databaseリファレンス』「ttIsql」を参照してください。

TimesTenキャッシュのユーザー名とパスワードの変更

TimesTenキャッシュ管理ユーザーまたはそのコンパニオンOracleキャッシュ管理ユーザーのユーザー名またはパスワードを変更できます。

『Oracle TimesTen In-Memory Databaseキャッシュ・ガイド』キャッシュ・ユーザー名およびパスワードの変更を参照してください。

Oracleデータベースのスキーマの変更

Oracleデータベースのスキーマを変更する必要がある場合は、Oracleデータベースのスキーマを変更する前に、影響を受けるキャッシュ・グループを削除し、すべてのキャッシュ・エージェントを停止する必要があります。 『Oracle TimesTen In-Memory Databaseキャッシュ・ガイド』自動リフレッシュが有効になっているキャッシュ・グループで使用されるOracle Databaseオブジェクトの削除を参照してください。

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

サポート・ログには、自動リフレッシュの処理状況を示すメッセージが含まれます。サポート・ログには、自動リフレッシュの開始時刻、自動リフレッシュの間隔、メッセージ番号(該当する場合)、更新された行の数、および自動リフレッシュが正常に完了したかどうかが示されます。 『Oracle TimesTen In-Memory Databaseモニタリングおよびトラブルシューティング・ガイド』サポート・ログでの自動リフレッシュに関するメッセージの理解を参照してください。

Oracleデータベース内の変更ログ表およびトリガーの管理

自動リフレッシュありのキャッシュ・グループの場合、TimesTenは、そのキャッシュ・グループ内のキャッシュ表ごとに、Oracleデータベース内に変更ログ表とトリガーを作成します。

トリガーは、キャッシュされたOracleデータベース表で挿入、更新または削除の処理がコミットされるたびに起動されます。そのトリガーは、更新行の主キーを変更ログ表に記録します。キャッシュ・エージェントは、更新されたキーがあるかどうか定期的に変更ログ表をスキャンし、その後、変更ログ表をキャッシュされたOracleデータベース表と結合して最新の更新のスナップショットを取得します。『Oracle TimesTen In-Memory Databaseキャッシュ・ガイド』Oracle Databaseオブジェクトでのキャッシュ環境の管理を参照してください。

次の項では、変更ログ表から情報を収集する方法、および必要に応じて変更ログ表およびトリガーを削除する方法について説明します。

変更ログ表からの情報の収集

TimesTenには、Oracleデータベースに存在する変更ログ表から自動リフレッシュ・キャッシュ・グループについて情報を収集するcacheInfo SQLスクリプトが用意されています。

次の例は、Oracleデータベース上のSQL*Plus内で実行されます。

SQL> @$TIMESTEN_HOME/install/oraclescripts/cacheInfo.sql
***************** Database Information	*********************
Database name: DATABASE1
Unique database name: database1
Primary database name:
Database Role: PRIMARY
Database Open Mode: READ WRITE
Database Protection Mode: MAXIMUM PERFORMANCE
Database Protection Level: UNPROTECTED
Database Flashback On: NO
Database Current SCN: 21512609
*************************************************************
*************Autorefresh Objects Information  ***************
Grid name: grid1 (7D03C680-BD93-4233-A4CF-B0EDB0064F3F)
Timesten database name: database1
Cache table name: SALES.READTAB
Change log table name: tt_07_96977_L
Number of rows in change log table: 4
Maximum logseq on the change log table: 1
Timesten has autorefreshed updates upto logseq: 1
Number of updates waiting to be autorefreshed: 0
Number of updates that has not been marked with a valid logseq: 0
****************************
*************No DDL Tracking objects are found*************
 
PL/SQL procedure successfully completed.

『Oracle TimesTen In-Memory Databaseモニタリングおよびトラブルシューティング・ガイド』変更ログ表からの情報の表示を参照してください。

キャッシュに使用されるOracleデータベース・オブジェクトの削除

自動リフレッシュありのキャッシュ・グループを含むTimesTenデータベースが使用不可になっても、自動リフレッシュ処理の実装に使用されている変更ログ表やトリガーなどのOracleデータベース・オブジェクトは、Oracleデータベース内に存在し続けます。また、TimesTenデータベースが使用されなくなったが、自動リフレッシュありのキャッシュ・グループがまだそれに含まれている場合は、自動リフレッシュ処理の実装に使用されているOracleデータベース・オブジェクトは、Oracleデータベース内に存在し続けます。引き続き変更ログ表に行が蓄積されます。この場合は、自動リフレッシュ処理の実装に使用されているOracleデータベース・オブジェクトを削除できます。

『Oracle TimesTen In-Memory Databaseキャッシュ・ガイド』自動リフレッシュが有効になっているキャッシュ・グループで使用されるOracle Databaseオブジェクトの削除を参照してください。