主コンテンツへ
Oracle® TimesTen Application-Tier Database Cacheユーザーズ・ガイド
リリース18.1
E98634-04
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

8 キャッシュ環境のクリーンアップ

次の各項では、キャッシュ・グループを削除するために、TimesTenデータベースおよびOracle Databaseで実行する必要がある様々なタスクについて説明します。また、AWTキャッシュ・グループを使用する際に、すべてのコンポーネントを停止するための推奨事項についても説明します。

レプリケーション・エージェントの停止

レプリケーション・エージェントを停止するには、ttRepStop組込みプロシージャをコールします。この処理は、読取り専用サブスクライバ・データベース、およびAWTキャッシュ・グループのあるスタンドアロンTimesTenデータベースを含め、アクティブ・スタンバイ・ペアの各TimesTenデータベースで実行する必要があります。

cache1cache2cacheactivecachestandbyrosubscriberの各データベースから、キャッシュ・マネージャ・ユーザーとしてttRepStop組込みプロシージャをコールして、データベースのレプリケーション・エージェントを停止します。

Command> CALL ttRepStop;

キャッシュ・グループの削除

キャッシュ・グループおよびそのキャッシュ表を削除するには、DROP CACHE GROUP文を使用します。DROP CACHE GROUP文を使用してキャッシュ・グループを削除したり、ALTER CACHE GROUP文を使用して自動リフレッシュ・キャッシュ・グループの自動リフレッシュ状態をOFFに設定すると、Oracle Databaseデータのキャッシュ管理に使用されているOracle Databaseオブジェクトが自動的に削除されます。

自動リフレッシュ処理を実行中のキャッシュ・グループに対してDROP CACHE GROUP文を発行すると、次のようになります。

  • LockWait接続属性設定が0(ゼロ)より大きな値である場合、自動リフレッシュ処理は停止します。DROP CACHE GROUP文が自動リフレッシュ処理より優先して使用されます。

  • LockWait接続属性設定が0(ゼロ)である場合、自動リフレッシュ処理は続行します。DROP CACHE GROUP文は、自動リフレッシュ処理が完了するか、またはこの文自体がロック・タイムアウト・エラーで失敗するまでブロックされます。

キャッシュ表がアクティブ・スタンバイ・ペアにレプリケート中であり、そのキャッシュ表がレプリケートされている唯一の要素である場合は、キャッシュ・グループを削除する前に、DROP ACTIVE STANDBY PAIR文を使用してアクティブ・スタンバイ・ペアを削除する必要があります。

アクティブ・スタンバイ・ペアのレプリケーション・スキームを削除するには、キャッシュ・マネージャ・ユーザーとしてcacheactivecachestandbyおよびrosubscriberの各データベースで次の文を実行します。

Command> DROP ACTIVE STANDBY PAIR;
Command> exit

キャッシュ・グループを削除するには、DROP ANY TABLE権限をキャッシュ・マネージャ・ユーザーに付与する必要があります。DROP ANY TABLE権限をキャッシュ・マネージャ・ユーザーに付与するには、インスタンス管理者としてcache1cache2cacheactiveおよびcachestandbyの各データベースで次の文を実行します。cache1データベースから発行されたSQL文の例は、次のとおりです。

% ttIsql cache1
Command> GRANT DROP ANY TABLE TO cacheuser;
Command> exit

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

% ttIsql "DSN=cache1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> CALL ttRepSubscriberWait('_AWTREPSCHEME','TTREP','_ORACLE','sys1',-1);

AWTキャッシュ・グループを削除すると、キャッシュ表にコミットされた更新をキャッシュされたOracle表に非同期に伝播するためにAWTキャッシュ・グループに作成したレプリケーション・スキームが自動的に削除されます。

スタンドアロンTimesTenデータベース、アクティブ・データベースおよびスタンバイ・データベースからキャッシュ・グループを削除するには、DROP CACHE GROUP文を使用します。

subscriber_accountsキャッシュ・グループを削除するには、キャッシュ・マネージャ・ユーザーとしてcache1cache2cacheactiveおよびcachestandbyの各データベースで次の文を実行します。cache1データベースから発行されたSQL文の例は、次のとおりです。

% ttIsql "DSN=cache1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> DROP CACHE GROUP subscriber_accounts;

ノート:

キャッシュ・グループを削除した後またはキャッシュ・グループの自動リフレッシュ状態をOFFに変更した後、すぐにキャッシュ・エージェントを停止させる場合は、Oracle Databaseデータのキャッシュ管理に使用されるOracle Databaseオブジェクトは削除されません。キャッシュ・エージェントを再起動すると、削除または変更したキャッシュ・グループ用に作成されたOracle Databaseオブジェクトが削除されます。

キャッシュ・エージェントの停止

キャッシュ・エージェントを停止するには、ttCacheStop組込みプロシージャをコールします。この処理は、アクティブ・スタンバイ・ペアのアクティブ・データベースおよびスタンバイ・データベースに加えて、すべてのスタンドアロンTimesTenデータベースで実行する必要があります。

cache1cache2cacheactiveおよびcachestandbyの各データベースから、次の組込みプロシージャ・コールを発行してデータベースのキャッシュ・エージェントを停止します。

Command> CALL ttCacheStop;
Command> exit

TimesTenデータベースの破棄

TimesTenデータベースが不要になった場合は、ttDestroyユーティリティを使用してそのデータベースを破棄できます。


ノート:

RAMポリシーで、データベースをメモリーに残すように指定した場合、データベースが破損する場合があります。たとえば、RAMポリシーがalwaysに指定されている場合には、データベースを破棄する前に、RAMポリシーをmanualに変更し、ttAdmin -ramunloadコマンドを実行してデータベースをアンロードする必要があります。RAMポリシー設定の詳細は、Oracle TimesTen In-Memory Databaseオペレーション・ガイドのRAMポリシーの指定を参照してください。

次の例では、cache1データベースに接続してから破棄するttDestroyユーティリティを示します。

% ttDestroy cache1

Oracle Databaseのユーザーおよびオブジェクトの削除

timestenユーザー、スキーマ・ユーザーorattおよびキャッシュ管理ユーザーcacheuserに加えて、これらのユーザーが所有するすべてのオブジェクト(表やトリガーなど)を削除するには、sysユーザーとしてSQL*Plusを使用します。次に、TT_CACHE_ADMIN_ROLEロールを削除し、さらにtimestenユーザーおよびキャッシュ管理ユーザーによって使用され、表領域やそのデータ・ファイルの内容などが含まれているデフォルトの表領域cachetblspを削除します。

% sqlplus sys as sysdba
Enter password: password
SQL> DROP USER timesten CASCADE;
SQL> DROP USER oratt CASCADE;
SQL> DROP USER cacheuser CASCADE;
SQL> DROP ROLE tt_cache_admin_role;
SQL> DROP TABLESPACE cachetblsp INCLUDING CONTENTS AND DATAFILES;
SQL> exit

AWTキャッシュ・グループとともにアクティブ・スタンバイ・ペアを停止するスケジューリング

AWTキャッシュ・グループとアクティブ・スタンバイ・ペアを使用している場合、その環境には、アクティブおよびスタンバイ状態のマスター、おそらく1つ以上のサブスクライバおよび最低1つのOracle Databaseが存在しています。次に示すのは、この環境において未処理のトランザクションのスケジュールされた停止を開始する際に推奨される手法です。この順序でイベントが行われると、停止の前に未処理のトランザクションの適用を終了するのに必要な時間が与えられ、すべてのコンポーネントを再起動するのに必要な時間が最低限になります。

  1. すべてのアプリケーションを停止します。

  2. すべてのトランザクションがOracle Databaseに伝播されていることを確認します。

  3. TimesTenを停止します。

  4. Oracle Databaseを停止します。

すべてのコンポーネントを再起動する準備ができたら、次の処理を行います。

  1. Oracle Databaseを再起動します。

  2. TimesTenを再起動します。

  3. すべてのアプリケーションを再起動します。

これらの製品はすべて、任意の順序で正常に停止できます。順序が重要になるのは、パフォーマンスを最大限にするために、未適用のトランザクションを保存する必要がない場合のみです。たとえば、アクティブ・スタンバイ・ペアにおいてAWTキャッシュ・グループを使用しており、TimesTenより先にOracle Databaseを停止する場合は、未適用のトランザクションがすべてTimesTenのトランザクション・ログに蓄積されます。このように、TimesTenおよびOracleを再起動する場合、保留中のトランザクションがOracle Databaseに適用されますが、スループットが低下する可能性があります。Oracle Databaseより先にTimesTenを停止することは、スケジュールされた停止と再起動を行う際の最も効率的な手法です。さらに、TimesTenより先にアプリケーションを停止すると、使用不可のTimesTenデータベースに対して余分な要求が送信されなくなります。