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

TimesTenデータベースは、たとえば、TimesTenシステムがオフラインになったり、自動リフレッシュを使用したキャッシュ・グループを削除せずにデータベースを破棄すると使用不可能になります。

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

  • TimesTen Classicを使用する場合は、SQL*Plusスクリプトtimesten_home/install/oraclescripts/cacheCleanUp.sqlをOracleキャッシュ管理ユーザーとして実行し、自動リフレッシュ処理の実装に使用されるOracle Databaseオブジェクトをクリーン・アップします。TimesTen Classicシステムのホスト名およびTimesTenデータベース(パスを含む)を引数としてcacheCleanUp.sqlスクリプトに渡します。

    ttCacheInfoユーティリティまたはcacheInfo.sqlスクリプトをOracleキャッシュ管理ユーザーとして実行し、ホスト名およびデータベース名を確認できます。

  • TimesTen Scaleoutでは、SQL*Plusスクリプトtimesten_home/install/oraclescripts/scaleoutCacheCleanUp.sqlをOracleキャッシュ管理ユーザーとして実行し、自動リフレッシュ処理の実装に使用されるOracle Databaseオブジェクトをクリーン・アップします。グリッド名とTimesTenデータベース名は、引数としてscaleoutCacheCleanUp.sqlスクリプトに渡されます。

    cacheInfo.sqlスクリプトをOracleキャッシュ管理ユーザーとして実行し、グリッド名およびデータベース名を確認できます。

cacheInfo.sqlスクリプトまたはttCacheInfoユーティリティを使用して、自動リフレッシュ処理の実装に使用されるオブジェクトがOracle Databaseに存在するかどうかを判断できます。

次の例では、自動リフレッシュを使用したキャッシュ・グループのOracleデータベース・オブジェクトを削除する方法を示します。この例では、TimesTen ClassicシステムにcacheCleanUp.sqlスクリプトを使用します。これは、customersおよびordersキャッシュ表に関連付けられている変更ログ表およびトリガーを削除します。scaleoutCacheCleanup.sqlスクリプトは、入力パラメータとしてグリッド名とデータベース名を必要とする点を除き、TimesTen Scaleoutの場合と同じ方法で実行されます。

% cd timesten_home/install/oraclescripts
% sqlplus cacheadmin/orapwd
SQL> @cacheCleanUp "sys1" "/disk1/databases/database1"

*****************************OUTPUT**************************************
Performing cleanup for object_id: 69959 which belongs to table : CUSTOMERS
Executing: delete from tt_07_agent_status where host = sys1 and datastore =
/disk1/databases/database1 and object_id = 69959
Executing: drop table tt_07_69959_L
Executing: drop trigger tt_07_69959_T
Executing: delete from tt_07_user_count where object_id = object_id1
Performing cleanup for object_id: 69966 which belongs to table : ORDERS
Executing: delete from tt_07_agent_status where host = sys1 and datastore =
/disk1/databases/database1 and object_id = 69966
Executing: drop table tt_07_69966_L
Executing: drop trigger tt_07_69966_T
Executing: delete from tt_07_user_count where object_id = object_id1
**************************************************************************

このガイドの「キャッシュ用のSQL*Plusスクリプト」および『Oracle TimesTen In-Memory Databaseリファレンス』ttCacheInfoを参照してください。