自動リフレッシュを使用したキャッシュ・グループ用のOracle Databaseオブジェクトの手動作成

initCacheAdminSchema.sqlスクリプトで、自動リフレッシュを使用したキャッシュ・グループの定義済動作を実行するために使用するOracle Databaseオブジェクトを作成した場合は、特定の手順を実行する必要があります。

「initCacheAdminSchema.sqlスクリプト」を参照してください。

  1. キャッシュ・グループの作成時に、自動リフレッシュ状態をOFFに設定します。
  2. TimesTenキャッシュ管理ユーザーとして、INCREMENTAL_AUTOREFRESHオプションおよびINSTALLフラグを指定してttIsqlユーティリティのcachesqlgetコマンドを実行します。このコマンドを実行すると、自動リフレッシュ・キャッシュ・グループにキャッシュされたOracle Database表ごとに、Oracle Database内にキャッシュ・ログ表およびトリガーを作成するために使用するSQL*Plusスクリプトが生成されます。これらのOracle Databaseオブジェクトは、キャッシュされたOracle Database表の更新を追跡するため、キャッシュ表に対して更新を自動的にリフレッシュできます。

    ノート:

    ttCacheSQLGet組込みプロシージャは、ttIsql cachesqlgetコマンドと同じ機能を提供します。

  3. SQL*Plusを使用して、ttIsqlユーティリティのcachesqlgetコマンドで生成されたスクリプトをsysユーザーとして実行します。
  4. ALTER CACHE GROUP文を使用して、キャッシュ・グループの自動リフレッシュ状態をPAUSEDに変更します。

次の例では、initCacheAdminSchema.sqlスクリプトを使用してOracle Databaseオブジェクトを作成するときに読取り専用キャッシュ・グループを作成する方法を示します。

最初の文で、自動リフレッシュ状態がOFFに設定された読取り専用キャッシュ・グループcustomer_ordersが作成されます。ttIsqlユーティリティのcachesqlgetコマンドで生成されたSQL*Plusスクリプトは、/tmp/obj.sqlファイルに保存されます。最後の文によって、キャッシュ・グループの自動リフレッシュ状態がPAUSEDに変更されます。

CREATE READONLY CACHE GROUP customer_orders
AUTOREFRESH STATE OFF
FROM sales.customer
 (cust_num NUMBER(6) NOT NULL,
  region   VARCHAR2(10),
  name     VARCHAR2(50),
  address  VARCHAR2(100),
  PRIMARY KEY(cust_num)),
sales.orders
 (ord_num      NUMBER(10) NOT NULL,
  cust_num     NUMBER(6) NOT NULL,
  when_placed  DATE NOT NULL,
  when_shipped DATE NOT NULL,
  PRIMARY KEY(ord_num),
  FOREIGN KEY(cust_num) REFERENCES sales.customer(cust_num));

% ttIsql "DSN=cache1;UID=cacheadmin;PwdWallet=/wallets/cacheadminwallet"
Command> cachesqlget INCREMENTAL_AUTOREFRESH customer_orders INSTALL /tmp/obj.sql;
Command> exit

% sqlplus sys as sysdba
Enter password: password
SQL> @/tmp/obj
SQL> exit

ALTER CACHE GROUP customer_orders SET AUTOREFRESH STATE PAUSED;

『Oracle TimesTen In-Memory Databaseリファレンス』「ttIsql」および「ttCacheSqlGet」を参照してください。