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

戻る
戻る
 
次へ
次へ
 

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

この章では、キャッシュ・グリッドを破棄してキャッシュ・グループを削除するために、TimesTenデータベースおよびOracle Databaseで実行する必要がある様々なタスクについて説明します。内容は次のとおりです。

キャッシュ・グリッドからのTimesTenデータベースのデタッチ

アタッチされているキャッシュ・グリッドからグリッド・メンバーをデタッチするには、ttGridDetach組込みプロシージャをコールします。 グリッド・メンバーがアクティブ・スタンバイ・ペアである場合は、アクティブ・マスター・データベースとスタンバイ・マスター・データベースの両方を個別にデタッチする必要があります。 グリッド・メンバーをデタッチすると、そのグローバル・キャッシュ・グループにもキャッシュ表にも処理を実行できなくなります。 また、グリッド・メンバーは、所有していたすべてのキャッシュ・インスタンスの所有権を放棄します。 キャッシュ・エージェント・プロセスおよびレプリケーション・エージェント・プロセスは、データベースがキャッシュ・グリッドからデタッチされるまで停止できません。

ttGridキャッシュ・グリッドからメンバーをデタッチするには、cachealone1cachealone2cacheactivecachestandbyの各データベースから、キャッシュ・マネージャ・ユーザーとしてttGridDetach組込みプロシージャをコールします。 次の例は、cachealone1データベースからの組込みプロシージャのコールを示しています。

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

TimesTenデータベースをキャッシュ・グリッドからデタッチする前に、ttRepSubscriberWait組込みプロシージャを使用して、グローバル・キャッシュ・グループのキャッシュ表にコミットされたすべての更新をキャッシュされたOracle表に伝播します。

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

グリッドからデータベースがデタッチされた後、そのデータベースで動作するレプリケーション・エージェントを停止できます。

使用不可能になったにも関わらず引き続きグリッドにアタッチされているグリッド・メンバーに対し、デタッチを強制できます。 グリッド・メンバーの基本となるTimesTenデータベースは、たとえば、TimesTenシステムがオフラインになったり、データベースが破棄されると使用不可能になります。 読取り専用サブスクライバ・データベースを除く、使用可能ないずれかのTimesTenデータベースから、キャッシュ・マネージャ・ユーザーとしてttGridDetach組込みプロシージャをコールし、その際に値1をforceパラメータに渡します。

Command> call ttGridDetach('TTGRID_alone2_2',1);

アタッチしたすべてのグリッド・メンバーの名前を確認するには、ttGridNodeStatus組込みプロシージャをコールします。

使用不可能になったにも関わらず引き続きグリッドにアタッチされているグリッド・メンバーをまとめて強制的にデタッチするには、読取り専用サブスクライバ・データベースを除く使用可能ないずれかのTimesTenデータベースから、キャッシュ・マネージャ・ユーザーとしてttGridDetachList組込みプロシージャをコールします。 その際、値1をforceパラメータに渡します。

Command> call ttGridDetachList('TTGRID_cacheact_3A TTGRID_cachestand_3B',1);

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

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

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

Command> call ttRepStop;

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

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

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

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

TimesTenデータベースがまだキャッシュ・グリッドにアタッチされている場合、アクティブ・スタンバイ・ペアのレプリケーション・スキームは、そのTimesTenデータベースから削除できません。

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

Command> DROP ACTIVE STANDBY PAIR;
Command> exit

キャッシュ・グループを削除するには、DROP ANY TABLE権限をキャッシュ・マネージャ・ユーザーに付与する必要があります。

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

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

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

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

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

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

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

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

キャッシュ・インスタンスを含むグローバル・キャッシュ・グループがグリッドのメンバーである場合、そのキャッシュ・グループは、すべてのキャッシュ表が空になるか、またはメンバーがキャッシュ・グリッドからデタッチされるまで削除できません。


注意:

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

キャッシュ・グリッドの破棄

キャッシュ・グリッドを破棄するには、ttGridDestroy組込みプロシージャをコールします。 デフォルトでは、既存のグローバル・キャッシュ・グループまたはアタッチ済グリッド・メンバーが存在する場合、キャッシュ・グリッドを破棄できません。

ttGridキャッシュ・グリッドを破棄するには、読取り専用サブスクライバ・データベースを除くいずれかのTimesTenデータベースから、キャッシュ・マネージャ・ユーザーとしてttGridDestroy組込みプロシージャをコールします。

Command> call ttGridDestroy('ttGrid');

TimesTenデータベースが使用不可能になったにも関わらずグローバル・キャッシュ・グループを含むグリッド・メンバーやグリッドにアタッチされているグリッド・メンバーについても、キャッシュ・グリッドを強制的に破棄できます。 TimesTenデータベースは、たとえば、TimesTenシステムがオフラインになったり、データベースが破棄されると使用不可能になります。 読取り専用サブスクライバ・データベースを除くいずれかのTimesTenデータベースから、キャッシュ・マネージャ・ユーザーとしてttGridDestroy組込みプロシージャをコールし、その際に値1をforceパラメータに渡します。

Command> call ttGridDestroy('ttGrid',1);

キャッシュ・グリッドは、不要になった場合または再びそのグリッドにアタッチすることがない場合にのみ破棄してください。

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

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

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

Command> call ttCacheStop;
Command> exit

TimesTenデータベースがまだキャッシュ・グリッドにアタッチされている場合は、キャッシュ・エージェントを停止できません。

TimesTenデータベースの破棄

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

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

% ttDestroy cachealone1

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

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