キャッシュ・グループ・タイプは、システム管理またはユーザー管理にすることができます。システム管理キャッシュ・グループでは特定の動作が実行されますが、ユーザー管理キャッシュ・グループの動作はカスタマイズできます。システム管理キャッシュ・グループには、次の基本タイプがあります。
「システム管理キャッシュ・グループ定義の例」では、この項で説明するすべてのシステム管理キャッシュ・グループ・タイプの例を示します。
ユーザー管理キャッシュ・グループの詳細は、「ユーザー管理キャッシュ・グループの作成」を参照してください。
READONLYキャッシュ・グループでは、Oracle表への更新がAUTOREFRESHメカニズムによってTimesTenに適用されます。
READONLYキャッシュ・グループは、CREATE READONLY CACHE GROUP文によって作成されます。デフォルトでは、次のようになります。
READONLYキャッシュ・グループを使用する場合は、次の制限が適用されます。
READONLYキャッシュ・グループ内のキャッシュされた表を更新しようとすると、TimesTenエラー8225「Table is read only」が返されます。ただし、PassThrough属性を2または3に設定すると、DML文は、キャッシュを介してOracleに渡された後、AUTOREFRESHによってOracleからキャッシュ・グループに伝播される場合があります。パススルーされた文によるREADONLYキャッシュ・グループへの効果は、その文を含むトランザクションでは確認できません。それらの効果は、Oracleでトランザクションがコミットされ、キャッシュの次のAUTOREFRESHが完了した後でのみ確認できます。PassThrough属性の詳細は、「パススルー・レベルの設定」を参照してください。
SYNCHRONOUS WRITETHROUGH(SWT)キャッシュ・グループでは、TimesTenでキャッシュ・データを更新し、Oracleに伝播するというキャッシュ動作が実行されます。CREATE SYNCHRONOUS WRITETHROUGH CACHE GROUP文によってSWTキャッシュ・グループを作成した場合は、キャッシュ・グループの作成後にキャッシュ・グループの内容をOracle表から手動でロードします。SWTキャッシュ・グループの内容は、必要に応じて、手動でロード、アンロードまたはリフレッシュできます(Cache Connect to Oracleの伝播動作の詳細は、「PROPAGATE」属性を参照)。
SWTキャッシュ・グループへの更新は、同期してコミットされます。アプリケーションでトランザクションをコミットすると、OracleでコミットされてからTimesTenでコミットされます。トランザクションがTimesTenでコミットされるまでアプリケーションはブロックされ、表の行でロックが保持されます。
Oracleトランザクションのコミットに失敗した場合、TimesTenトランザクションをロールバックする必要があります。Oracleトランザクションはコミットし、TimesTenトランザクションは失敗した場合、キャッシュ・グループのデータはOracleデータと同期しなくなります。この場合は、手動でキャッシュ・グループをOracleと再同期化する必要があります。これは、ttCachePropagateFlagSetプロシージャをコールして伝播を無効にしてから、TimesTenキャッシュ・グループにトランザクションを再度適用することによって実行できます。別の方法として、Oracleから再度データをロードする方法もあります。
SWTキャッシュ・グループを使用する場合は、次の制限が適用されます。
ASYNCHRONOUS WRITETHROUGH(AWT)キャッシュ・グループでは、TimesTenでキャッシュ・データを更新し、Oracleに伝播するというSWTキャッシュ・グループの場合と同様のキャッシュ動作が実行されます。TimesTenコミットはOracleコミットとは非同期に発生するため、AWTキャッシュ・グループのレスポンス時間はSWTキャッシュ・グループより短縮されます。これによって、TimesTenトランザクションは、Oracleトランザクションのコミットを待機することなく継続して実行できます。AWTキャッシュ・グループは、Oracleデータベースの停止時に更新することもできます。これらの更新は、Oracleデータベースでの処理を再開すると、Oracleデータベースに適用されます。
図2.10は、TimesTenキャッシュ・グループの更新がOracleに非同期にレプリケートされることを示しています。AWTキャッシュ・グループでは、キャッシュ・グループが含まれているデータ・ストアのキャッシュ・エージェントとレプリケーション・エージェントの両方を起動する必要があります。キャッシュ・エージェントによって、キャッシュをロードおよびリフレッシュできます。キャッシュをアンロードする場合、キャッシュ・エージェントが稼働している必要はありません。
AWTキャッシュ・グループは、CREATE ASYNCHRONOUS WRITETHROUGH CACHE GROUP文によって作成されます(Cache Connect for Oracleの伝播動作の詳細は、「PROPAGATE」属性を参照)。
AWTキャッシュ・グループを使用するには、「Oracleユーザーの作成および権限の設定」に示されているOracle権限が必要です。また、キャッシュ・エージェントおよびレプリケーション・エージェントを起動する前に、ttCacheUidPwdSetプロシージャを使用してキャッシュ管理ユーザーIDおよびパスワードを設定する必要があります。詳細は、「AWTキャッシュ・グループのレプリケーション・エージェントの起動」を参照してください。
AWTキャッシュ・グループを使用すると、トランザクションはTimesTenとOracleで非同期にコミットされます。このため、アプリケーションでは、変更がOracleにコミットされるタイミングを特定できません。
この項の後半では、次の内容について説明します。
AWTキャッシュ・グループでは、次のことが保証されます。
AWTキャッシュ・グループでは、次のことが保証されません。
「SWTキャッシュ・グループの使用の制限」で説明されているSWTキャッシュ・グループの制限は、AWTキャッシュ・グループにも適用されます。
AWTキャッシュ・グループにのみ、次の追加の制限があります。
TimesTenでAWTをサポートするには、Oracleに状態表を作成する必要があります。この表は、状態およびOracleに伝播された最後の文を追跡するために使用されます。この表は、CREATE ASYNCHRONOUS WRITETHROUGH CACHE GROUP文によって自動的に作成されます。また、Oracle表は、AWTキャッシュ・グループが作成される前に手動で作成することもできます。「AWTキャッシュ・グループ用のOracleオブジェクトの手動インストール」を参照してください。
AWTキャッシュ・グループでCREATE ASYNCHRONOUS WRITETHROUGH CACHE GROUPまたはDROP CACHE GROUPを使用するには、キャッシュ・エージェントおよびレプリケーション・エージェントを起動する前にキャッシュ管理ユーザーIDおよびパスワードを指定する必要があります。キャッシュ管理ユーザーIDおよびパスワードは、データ・ストアごとに1回のみ設定する必要があります。データ・ストアが上書きまたは破壊された場合は、キャッシュ管理ユーザーIDおよびパスワードを再設定する必要があります。キャッシュ管理ユーザーIDおよびパスワードは、ttCacheUidPwdSet組込みプロシージャまたは-cacheUidPwdSetオプションを指定したttAdminユーティリティを使用して設定します。
キャッシュ管理ユーザー・アカウントには、表3.4のCREATE ASYNCHRONOUS WRITETHROUGH CACHE GROUP処理に示されているOracle権限が必要です。
AWTキャッシュ・グループをロードする前にキャッシュ・エージェントを起動します。AWTキャッシュ・グループは、レプリケーション・エージェントを起動する前に存在している必要があります。
CREATE ASYNCHRONOUS WRITETHROUGH CACHE GROUP文によって、データ・ストアでOracleデータベースと通信できるレプリケーション・スキームが作成されます。このレプリケーション・スキームは、TimesTenによって完全に管理され、ユーザーが介入する必要はありません。このレプリケーション・スキームは、DROP CACHE GROUPを使用してAWTキャッシュ・グループを削除すると削除されます。
詳細は、「キャッシュ・エージェントの起動および停止」および「AWTキャッシュ・グループのレプリケーション・エージェントの起動」を参照してください。