非同期ライトスルー(AWT)キャッシュ・グループ
非同期ライトスルー(AWT)キャッシュ・グループでは、TimesTenキャッシュ表にコミットされた変更が、キャッシュされたOracle Database表に非同期で自動的に伝播されるというキャッシュ動作が実行されます。
図4-6を参照してください。
AWTキャッシュ・グループをサポートしているのは、TimesTen Classicのみです。
ノート:
AWTキャッシュ・グループにキャッシュされているOracle Database表では、DML文を実行することは避けてください。実行すると、エラー状態になる場合があります。「AWTキャッシュ・グループの使用の制限」を参照してください。
TimesTenデータベースでのトランザクションのコミットは、Oracle Databaseでのコミットと非同期に実行されます。これにより、アプリケーションはOracle Databaseトランザクションの完了を待機することなく、継続してTimesTenデータベースに対してトランザクションを発行できます。ただし、アプリケーションでは、Oracle Database上でトランザクションが完了するタイミングを確認できません。
AWTキャッシュ・グループ内のキャッシュ表は、Oracle Databaseが利用できない場合も更新できます。Oracle Databaseが処理を再開すると、Oracle Databaseが利用できなかった間にキャッシュ表でコミットされた更新が、キャッシュされたOracle Database表に自動的に伝播されます。
ノート:
TimesTenでAWTキャッシュ・グループの処理を管理する場合、ttCacheUidPwdSet
組込みプロシージャで設定されているOracleキャッシュ管理ユーザーの名前およびパスワードを使用してOracleデータベースに接続します。ttCacheUidPwdSet
の詳細は、「キャッシュ管理ユーザーの名前およびパスワードの登録」を参照してください。
AWTキャッシュ・グループはTimesTenデータベースからOracle Databaseにデータを伝播するため、Oracle Databaseのキャッシュ表でユーザーが変更したデータは、Oracle DatabaseからTimesTenデータベースに自動的にはアップロードされません。この場合、REFRESH CACHE GROUP
SQL文を手動で実行して、Oracle Databaseに対する変更がTimesTenデータベースに転送されるようにする必要があります。
AWTキャッシュ・グループに対するREFRESH CACHE GROUP
文またはUNLOAD CACHE GROUP
文の処理では、TimesTenデータベースで変更された行の更新がOracle Databaseに伝播されるまで待機します。
Oracle Databaseの場合:
次に、AWTキャッシュ・グループにキャッシュされるOracle Database表の定義の例を示します。Oracle Database表は、スキーマ・ユーザーsales
が所有しています。
CREATE TABLE customer (cust_num NUMBER(6) NOT NULL PRIMARY KEY, region VARCHAR2(10), name VARCHAR2(50), address VARCHAR2(100));
キャッシュされた表がAWTキャッシュ・グループの一部である場合は、キャッシュされた表に対するSELECT
、INSERT
、UPDATE
およびDELETE
権限がOracleキャッシュ管理ユーザーに付与されている必要があります。この例では、表はsales.customer
表です。
様々なアクティビティに必要なすべての権限は、「キャッシュ処理のキャッシュ管理ユーザーに必要な権限」を参照してください。
Oracle Databaseで、管理者として次の権限を付与します:
SQL> GRANT SELECT, INSERT, UPDATE, DELETE ON sales.customer TO cacheadmin;
TimesTenデータベースの場合:
TimesTenキャッシュ管理ユーザーとして接続します。AWTキャッシュ・グループを作成するには、CREATE ASYNCHRONOUS WRITETHROUGH CACHE GROUP
文を使用します。
次の文では、sales.customer
表をキャッシュするAWTキャッシュ・グループnew_customers
が作成されます:
CREATE ASYNCHRONOUS WRITETHROUGH CACHE GROUP new_customers FROM sales.customer (cust_num NUMBER(6) NOT NULL, region VARCHAR2(10), name VARCHAR2(50), address VARCHAR2(100), PRIMARY KEY(cust_num));
次の各項では、AWTキャッシュ・グループの構成、動作および管理について説明します。