次の各項では、キャッシュ・グリッドを破棄してキャッシュ・グループを削除するために、TimesTenデータベースおよびOracle Databaseで実行する必要がある様々なタスクについて説明します。また、AWTキャッシュ・グループを使用する際に、すべてのコンポーネントを停止するための推奨事項についても説明します。
注意: Oracle Clusterwareを使用してキャッシュ・グリッドのアクティブ・スタンバイ・ペアを管理する計画を立てている場合は、『Oracle TimesTen In-Memory Database開発者および管理者ガイド』のTimesTenキャッシュ・グリッドでのOracle Clusterwareの使用に関する説明を参照してください。また、『Oracle TimesTen In-Memory Database開発者および管理者ガイド』の制限されたコマンドおよびSQL文に関する説明も参照してください。アクティブ・スタンバイ・ペア・グリッド・メンバーを管理するには、この章で説明する組込みプロシージャではなく、 |
アタッチされているキャッシュ・グリッドからグリッド・メンバーをデタッチするには、ttGridDetach
組込みプロシージャをコールします。グリッド・メンバーがアクティブ・スタンバイ・ペアである場合は、アクティブ・データベースとスタンバイ・データベースの両方を個別にデタッチする必要があります。グリッド・メンバーをデタッチすると、そのグローバル・キャッシュ・グループにもキャッシュ表にも処理を実行できなくなります。また、グリッド・メンバーは、所有していたすべてのキャッシュ・インスタンスの所有権を放棄します。キャッシュ・エージェント・プロセスおよびレプリケーション・エージェント・プロセスは、データベースがキャッシュ・グリッドからデタッチされるまで停止できません。
ttGrid
キャッシュ・グリッドからメンバーをデタッチするには、cachealone1
データベースから、キャッシュ・マネージャ・ユーザーとしてttGridDetach
組込みプロシージャをコールします。例:
% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle" Command> CALL ttGridDetach;
TimesTenデータベースをキャッシュ・グリッドからデタッチする前に、cachealone1
内のグローバル・キャッシュ・グループのキャッシュ表にコミットされたすべての更新が、キャッシュされたOracle Database表に伝播されていることを確認するには、デタッチを実行する前に待機する秒数を指定します。この例では、待機時間は60秒です。
Command> CALL ttGridDetach(,,60);
グリッドからデータベースがデタッチされた後、そのデータベースで動作するレプリケーション・エージェントを停止できます。
使用不可能になったにも関わらず引き続きグリッドにアタッチされているグリッド・メンバーに対し、デタッチを強制できます。グリッド・メンバーの基本となる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);
すべてのグリッド・メンバーをデタッチするには、ttGridDetachAll
組込みプロシージャをコールします。この例では、デタッチ処理は60秒待機します。
Command> CALL ttGridDetachAll(60);
レプリケーション・エージェントを停止するには、ttRepStop
組込みプロシージャをコールします。この処理は、読取り専用サブスクライバ・データベース、およびAWTキャッシュ・グループのあるスタンドアロンTimesTenデータベースを含め、アクティブ・スタンバイ・ペアの各TimesTenデータベースで実行する必要があります。
cachealone1
、cachealone2
、cacheactive
、cachestandby
、rosubscriber
の各データベースから、キャッシュ・マネージャ・ユーザーとして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
文を使用してアクティブ・スタンバイ・ペアを削除する必要があります。アクティブ・スタンバイ・ペアがグリッド・メンバーである場合は、アクティブ・スタンバイ・ペアを削除する前に、グリッド・メンバーをグリッドからデタッチする必要があります。
アクティブ・スタンバイ・ペアのレプリケーション・スキームを削除するには、キャッシュ・マネージャ・ユーザーとしてcacheactive
、cachestandby
およびrosubscriber
の各データベースで次の文を実行します。
Command> DROP ACTIVE STANDBY PAIR; Command> exit
キャッシュ・グループを削除する前に、すべてのグリッド・メンバーのグローバル・キャッシュ・グループ内のデータをアンロードする必要があります。GlobalProcessing
オプティマイザ・フラグを1に設定し、キャッシュ・グループをアンロードします。
CALL ttOptSetFlag('GlobalProcessing', 1); UNLOAD CACHE GROUP subscriber_accounts;
キャッシュ・グループを削除するには、DROP ANY TABLE
権限をキャッシュ・マネージャ・ユーザーに付与する必要があります。DROP ANY TABLE
権限をキャッシュ・マネージャ・ユーザーに付与するには、インスタンス管理者としてcachealone1
、cachealone2
、cacheactive
およびcachestandby
の各データベースで次の文を実行します。cachealone1
データベースから発行されたSQL文の例は、次のとおりです。
% ttIsql cachealone1 Command> GRANT DROP ANY TABLE TO cacheuser; Command> exit
AWTキャッシュ・グループを削除する場合は、そのキャッシュ・グループを削除する前に、ttRepSubscriberWait
組込みプロシージャを使用して、そのグループのキャッシュ表にコミットされたすべての更新をキャッシュされたOracle Database表に伝播します。
% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle" Command> CALL ttRepSubscriberWait('_AWTREPSCHEME','TTREP','_ORACLE','sys1',-1);
AWTキャッシュ・グループを削除すると、キャッシュ表にコミットされた更新をキャッシュされたOracle表に非同期に伝播するためにAWTキャッシュ・グループに作成したレプリケーション・スキームが自動的に削除されます。
スタンドアロンTimesTenデータベース、アクティブ・データベースおよびスタンバイ・データベースからキャッシュ・グループを削除するには、DROP CACHE GROUP
文を使用します。
subscriber_accounts
グローバル・キャッシュ・グループを削除するには、キャッシュ・マネージャ・ユーザーとしてcachealone1
、cachealone2
、cacheactive
およびcachestandby
の各データベースで次の文を実行します。cachealone1
データベースから発行されたSQL文の例は、次のとおりです。
% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle" Command> DROP CACHE GROUP subscriber_accounts;
注意: キャッシュ・グループを削除した後またはキャッシュ・グループの自動リフレッシュ状態をOFF に変更した後、すぐにキャッシュ・エージェントを停止させる場合は、Oracle Databaseデータのキャッシュ管理に使用されるOracle Databaseオブジェクトは削除されません。キャッシュ・エージェントを再起動すると、削除または変更したキャッシュ・グループ用に作成されたOracle Databaseオブジェクトが削除されます。 |
キャッシュ・グリッドを破棄するには、ttGridDestroy
組込みプロシージャをコールします。デフォルトでは、既存のキャッシュ・グループまたはアタッチ済グリッド・メンバーが存在する場合、キャッシュ・グリッドを破棄できません。
ttGrid
キャッシュ・グリッドを破棄するには、読取り専用サブスクライバ・データベースを除くいずれかのTimesTenデータベースから、キャッシュ・マネージャ・ユーザーとしてttGridDestroy
組込みプロシージャをコールします。
Command> CALL ttGridDestroy('ttGrid');
TimesTenデータベースが使用不可能になったにも関わらずキャッシュ・グループを含むグリッド・メンバーやグリッドにアタッチされているグリッド・メンバーについても、キャッシュ・グリッドを強制的に破棄できます。TimesTenデータベースは、たとえば、TimesTenシステムがオフラインになったり、データベースが破棄されると使用不可能になります。読取り専用サブスクライバ・データベースを除くいずれかのTimesTenデータベースから、キャッシュ・マネージャ・ユーザーとしてttGridDestroy
組込みプロシージャをコールし、その際に値1をforce
パラメータに渡します。
Command> CALL ttGridDestroy('ttGrid',1);
キャッシュ・グリッドは、不要になった場合または再びそのグリッドにアタッチすることがない場合にのみ破棄してください。
キャッシュ・エージェントを停止するには、ttCacheStop
組込みプロシージャをコールします。この処理は、アクティブ・スタンバイ・ペアのアクティブ・データベースおよびスタンバイ・データベースに加えて、すべてのスタンドアロンTimesTenデータベースで実行する必要があります。
cachealone1
、cachealone2
、cacheactive
およびcachestandby
の各データベースから、次の組込みプロシージャ・コールを発行してデータベースのキャッシュ・エージェントを停止します。
Command> CALL ttCacheStop; Command> exit
TimesTenデータベースがまだキャッシュ・グリッドにアタッチされている場合は、キャッシュ・エージェントを停止できません。
TimesTenデータベースが不要になった場合は、ttDestroy
ユーティリティを使用してそのデータベースを破棄できます。
注意: RAMポリシーで、データベースをメモリーに残すように指定した場合、データベースが破損する場合があります。たとえば、RAMポリシーがalways に指定されている場合には、データベースを破棄する前に、RAMポリシーをmanual に変更し、ttAdmin -ramunload コマンドを実行してデータベースをアンロードする必要があります。RAMポリシー設定の詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のRAMポリシーの設定に関する説明を参照してください。 |
次の例では、cachealone1
データベースに接続してから破棄するttDestroy
ユーティリティを示しています。
% ttDestroy cachealone1
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キャッシュ・グループとアクティブ・スタンバイ・ペアを使用している場合、その環境には、アクティブおよびスタンバイ状態のマスター、おそらく1つ以上のサブスクライバおよび最低1つのOracle Databaseが存在しています。次に示すのは、この環境において未処理のトランザクションのスケジュールされた停止を開始する際に推奨される手法です。この順序でイベントが行われると、停止の前に未処理のトランザクションの適用を終了するのに必要な時間が与えられ、すべてのコンポーネントを再起動するのに必要な時間が最低限になります。
すべてのアプリケーションを停止します。
すべてのトランザクションがOracle Databaseに伝播されていることを確認します。
TimesTenを停止します。
Oracle Databaseを停止します。
すべてのコンポーネントを再起動する準備ができたら、次の処理を行います。
Oracle Databaseを再起動します。
TimesTenを再起動します。
すべてのアプリケーションを再起動します。
これらの製品はすべて、任意の順序で正常に停止できます。順序が重要になるのは、パフォーマンスを最大限にするために、未適用のトランザクションを保存する必要がない場合のみです。たとえば、アクティブ・スタンバイ・ペアにおいてAWTキャッシュ・グループを使用しており、TimesTenより先にOracle Databaseを停止する場合は、未適用のトランザクションがすべてTimesTenのトランザクション・ログに蓄積されます。このように、TimesTenおよびOracleを再起動する場合、保留中のトランザクションがOracle Databaseに適用されますが、スループットが低下する可能性があります。Oracle Databaseより先にTimesTenを停止することは、スケジュールされた停止と再起動を行う際の最も効率的な手法です。さらに、TimesTenより先にアプリケーションを停止すると、使用不可のTimesTenデータベースに対して余分な要求が送信されなくなります。