SYNCHRONOUS WRITETHROUGH(SWT)キャッシュ・グループでは、TimesTenでキャッシュ・データを更新し、Oracleに伝播するというキャッシュ動作が実行されます。CREATE SYNCHRONOUS WRITETHROUGH CACHE GROUP文によってSWTキャッシュ・グループを作成した場合は、キャッシュ・グループの作成後にキャッシュ・グループの内容をOracle表から手動でロードします。SWTキャッシュ・グループの内容は、必要に応じて、手動でロード、アンロードまたはリフレッシュできます。
SWTキャッシュ・グループへの更新は、同期してコミットされます。アプリケーションでトランザクションをコミットすると、OracleでコミットされてからTimesTenでコミットされます。トランザクションがTimesTenでコミットされるまでアプリケーションはブロックされ、表の行でロックが保持されます。
Oracleトランザクションのコミットに失敗した場合、TimesTenトランザクションをロールバックする必要があります。Oracleトランザクションはコミットし、TimesTenトランザクションは失敗した場合、キャッシュ・グループのデータはOracleデータと同期しなくなります。この場合は、手動でキャッシュ・グループをOracleと再同期化する必要があります。これは、ttCachePropagateFlagSetプロシージャをコールして伝播を無効にしてから、TimesTenキャッシュ・グループにトランザクションを再度適用することによって実行できます。別の方法として、Oracleから再度データをロードする方法もあります。
図2.9に、SYNCHRONOUS WRITETHROUGHキャッシュ・グループを示します。
SWTキャッシュ・グループを使用する場合は、次の制限が適用されます。
この例では、単一のOracle表vendorに対して、vendorというSYNCHRONOUS WRITETHROUGHキャッシュ・グループを作成します。キャッシュ・グループ内のvendor表への更新は、自動的にOracleに伝播されます。
CREATE SYNCHRONOUS WRITETHROUGH CACHE GROUP vendors
FROM
user1.vendor (vendor_id INTEGER NOT NULL,
vendor_name VARCHAR2(100) NOT NULL,
contact_name VARCHAR2(100) NOT NULL,
phone VARCHAR2(15),
street VARCHAR2(100),
city VARCHAR2(30),
state VARCHAR2(30),
zip VARCHAR2(10),
PRIMARY KEY(vendor_id));