ヘッダーをスキップ
Oracle® TimesTen Application-Tier Database Cacheユーザーズ・ガイド
11g リリース2 (11.2.2)
B66442-07
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

2 スタート・ガイド

この章では、明示的にロードされる読取り専用のローカル・キャッシュ・グループおよび動的な更新可能グローバル・キャッシュ・グループを作成する方法を示して、キャッシュ・グループの作成および使用について説明します。また、この例ではグローバル・キャッシュ・グループを作成するため、この章では、グリッドを作成する方法を説明します。さらに、キャッシュ表に移入する方法、およびTimesTenデータベースのキャッシュ表とOracle Databaseのキャッシュされた表の間で更新の転送を監視する方法についても説明します。

Oracle DatabaseシステムおよびTimesTenシステムの設定

キャッシュ・グリッドまたはキャッシュ・グループを作成するには、最初にTimesTenをインストールし、Oracle DatabaseシステムおよびTimesTenシステムを構成しておく必要があります。TimesTenのインストールの詳細は、『Oracle TimesTen In-Memory Databaseインストレーション・ガイド』を参照してください。

次のタスクを実行します。

  1. Oracle Databaseでのユーザーを作成します

  2. TimesTenデータベースのDSNを作成します

  3. TimesTenデータベースでのユーザーを作成します

  4. TimesTenデータベースでのキャッシュ管理ユーザーの名前およびパスワードを設定します

Oracle Databaseでのユーザーの作成

TimesTen Application-Tier Database Cacheを使用するには、Oracle Databaseで次のユーザーを作成する必要があります。

  • ユーザーtimestenは、キャッシュ環境に関する情報を格納するOracle Database表を所有します。

  • 1人以上のスキーマ・ユーザーは、TimesTenデータベースにキャッシュされるOracle Database表を所有します。既存ユーザーまたは新規ユーザーをスキーマ・ユーザーにすることができます。

  • キャッシュ管理ユーザーは、Oracle Databaseオブジェクトを作成して保持し、これらのOracle Databaseオブジェクトには、キャッシュ環境を管理し、特定のキャッシュ・グループ・タイプの定義済動作を実行するための情報が格納されます。

オペレーティング・システム・シェルまたはコマンド・プロンプトからOracle DatabaseシステムでSQL*Plusを起動し、sysユーザーとしてOracle Databaseインスタンスに接続します。

% cd TimesTen_install_dir/oraclescripts
% sqlplus sys as sysdba
Enter password: password

SQL*Plusを使用して、他のアプリケーションと共有しないTimesTen Application-Tier Database Cache管理オブジェクトの格納に使用するデフォルトの表領域を作成します。TimesTenでキャッシュしたOracle実表も格納できますが、キャッシュ管理のために、この表領域をTimesTenのみで使用することを強く推奨します。

SQL*Plusを使用して、SQL*PlusスクリプトTimesTen_install_dir/oraclescripts/initCacheGlobalSchema.sqlを実行して、次の要素を作成します。

  • timestenユーザー

  • キャッシュ・グリッド(構成されている場合)を含むキャッシュ環境に関する情報を格納するためにtimestenユーザーが所有するOracle Database表

  • Oracle Database表に対する権限を定義するTT_CACHE_ADMIN_ROLEロール

デフォルトの表領域を引数としてinitCacheGlobalSchema.sqlスクリプトに渡します。次の例では、デフォルトの表領域の名前をcachetblspとしています。

SQL> CREATE TABLESPACE cachetblsp DATAFILE 'datfttuser.dbf' SIZE 100M;
SQL> @initCacheGlobalSchema "cachetblsp"

次に、SQL*Plusを使用してスキーマ・ユーザーを作成します。このユーザーに、TimesTenデータベースにキャッシュされるOracle Databaseの表を作成するために必要な最小限の権限セットを付与します。次の例では、スキーマ・ユーザーをorattとしています。

SQL> CREATE USER oratt IDENTIFIED BY oracle;
SQL> GRANT CREATE SESSION, RESOURCE TO oratt;

次に、SQL*Plusを使用して、次の処理を実行します。

  • キャッシュ管理ユーザーを作成します。

  • SQL*PlusスクリプトTimesTen_install_dir/oraclescripts/grantCacheAdminPrivileges.sqlを実行して、キャッシュ・グリッド処理およびキャッシュ・グループ処理を実行するために必要な最小限の権限セットをキャッシュ管理ユーザーに付与します。

キャッシュ管理ユーザー名を引数としてgrantCacheAdminPrivileges.sqlスクリプトに渡します。次の例では、キャッシュ管理ユーザー名をcacheuserとし、そのデフォルトの表領域の名前をcachetblspとしています。


注意:

grantCacheAdminPrivileges.sqlスクリプトを実行するユーザーが必要な権限と、このユーザーがキャッシュ管理ユーザーに付与する権限については、このスクリプト内のコメントを参照してください。

SQL> CREATE USER cacheuser IDENTIFIED BY oracle
  2  DEFAULT TABLESPACE cachetblsp QUOTA UNLIMITED ON cachetblsp;
SQL> @grantCacheAdminPrivileges "cacheuser"
SQL> exit

キャッシュ管理ユーザーが必要とする権限は、作成するキャッシュ・グループおよびそのキャッシュ・グループに対して実行する処理のタイプによって異なります。

timestenユーザー、スキーマ・ユーザーおよびキャッシュ管理ユーザーの詳細は、「Oracle Databaseユーザーの作成」を参照してください。

TimesTenデータベースのDSNの作成

SQL> SELECT value FROM nls_database_parameters WHERE parameter='NLS_CHARACTERSET';

UNIXでは、ホーム・ディレクトリにある.odbc.iniファイルまたはTimesTen_install_dir/info/sys.odbc.iniファイルで、TimesTen DSN cachealone1を作成し、次の接続属性を設定します。

[cachealone1]
DataStore=/users/OracleCache/alone1
PermSize=64
OracleNetServiceName=oracledb
DatabaseCharacterSet=AL32UTF8
CacheGridEnable=1

Windowsでは、TimesTenユーザーDSNまたはシステムDSN cachealone1を作成し、次の接続属性を設定します。

  • データ・ストア・パスおよび名前: c:\temp\alone1

  • 永続データのサイズ: 64

  • Oracleネット・サービス名: oracledb

  • データベース・キャラクタ・セット: AL32UTF8

  • キャッシュ・グリッドを作成できるようにキャッシュ・グリッドは有効化されます。

これ以外の接続属性にはデフォルト設定を使用します。

Oracle DatabaseからデータをキャッシュするTimesTenデータベースのDSNを定義する方法の詳細は、「TimesTenデータベースのDSNの定義」を参照してください。

TimesTen DSNの詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のTimesTenデータベースの管理に関する説明を参照してください。


注意:

データ・ストアという用語は、TimesTenデータベースと同義で使用されます。

TimesTenデータベースでのユーザーの作成

TimesTen Application-Tier Database Cacheを使用するには、Oracle Databaseユーザーの他に、次のTimesTenユーザーを作成する必要があります。

  • キャッシュ・マネージャ・ユーザーは、キャッシュ・グリッド処理およびキャッシュ・グループ処理を実行します。TimesTenキャッシュ管理ユーザーは、キャッシュされたOracle Database表にアクセスできるコンパニオンOracle Databaseユーザーと同じ名前である必要があります。コンパニオンOracle Databaseユーザーは、キャッシュ管理ユーザー、スキーマ・ユーザーまたはその他の既存ユーザーにすることができます。使いやすくするために、キャッシュ管理ユーザーをキャッシュ・マネージャ・ユーザーのコンパニオンOracle Databaseユーザーにすることをお薦めします。キャッシュ・マネージャ・ユーザーのパスワードは、同じ名前を持つコンパニオンOracle Databaseユーザーとは別のパスワードにすることができます。


    注意:

    キャッシュ・マネージャ・ユーザーおよびコンパニオンOracle Databaseユーザーの詳細は、「TimesTenユーザーの作成」を参照してください。

    キャッシュ・マネージャ・ユーザーは、キャッシュ・グリッドを作成および構成し(構成されている場合)、キャッシュ・グループを作成する必要があります。また、グリッド自体、およびキャッシュ・グループに対して実行される様々な処理を監視することもできます。

  • 1人以上のキャッシュ表ユーザーが、キャッシュ表を所有します。TimesTenデータベースにキャッシュされるOracle Database表を現在所有しているか、または今後所有することになるスキーマ・ユーザーごとに、Oracle Databaseスキーマ・ユーザーと同じ名前でTimesTenキャッシュ表ユーザーを作成する必要があります。キャッシュ表ユーザーのパスワードは、同じ名前を持つOracle Databaseスキーマ・ユーザーとは別のパスワードにすることができます。

    TimesTenキャッシュ表の所有者および名前は、対応するキャッシュされたOracle Database表の所有者および名前と同じです。

インスタンス管理者として、オペレーティング・システム・シェルまたはコマンド・ラインからTimesTenシステムでttIsqlユーティリティを起動し、cachealone1 DSNに接続して、Oracle Databaseのデータをキャッシュするために使用するTimesTenデータベースを作成します。

% ttIsql cachealone1

ttIsqlを使用して、キャッシュ・マネージャ・ユーザーを作成します。このユーザーに、キャッシュ・グリッドを作成し(構成されている場合)、キャッシュ・グループを作成し、そのキャッシュ・グループに対して操作を実行するために必要な最小限の権限セットを付与します。次の例では、キャッシュ・マネージャ・ユーザー名をcacheuserとしていますが、この名前は前に作成したキャッシュ管理ユーザーと同じ名前です。

Command> CREATE USER cacheuser IDENTIFIED BY timesten;
Command> GRANT CREATE SESSION, CACHE_MANAGER, CREATE ANY TABLE TO cacheuser;

次に、ttIsqlを使用して、キャッシュ表ユーザーを作成します。次の例では、キャッシュ表ユーザー名をorattとしていますが、この名前は以前に作成したOracle Databaseスキーマ・ユーザーと同じ名前です。

Command> CREATE USER oratt IDENTIFIED BY timesten;
Command> exit

キャッシュ・マネージャ・ユーザーが必要とする権限は、作成するキャッシュ・グループおよびそのキャッシュ・グループに対して実行する処理のタイプによって異なります。キャッシュ・マネージャ・ユーザーおよびキャッシュ表ユーザーの詳細は、「TimesTenユーザーの作成」を参照してください。

TimesTenユーザーおよび権限の詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のアクセス制御の管理に関する説明を参照してください。

TimesTenデータベースでのキャッシュ管理ユーザーの名前およびパスワードの設定

ttIsqlユーティリティを起動して、cachealone1 DSNにキャッシュ・マネージャ・ユーザーとして接続します。接続文字列で、UID接続属性にキャッシュ・マネージャ・ユーザー名を指定します。キャッシュ・マネージャ・ユーザーのパスワードをPWD接続属性に指定します。そのコンパニオンOracleユーザー(キャッシュ・マネージャのコンパニオン・ユーザーと同じ名前で作成済)のパスワードを、接続文字列内のOraclePWD接続属性に指定します。この例では、キャッシュ管理ユーザーはキャッシュ・マネージャ・ユーザーのコンパニオン・ユーザーであるため、パスワードが指定されています。

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"

ttIsqlを使用して、ttCacheUidPwdSet組込みプロシージャをコールし、キャッシュ管理ユーザーの名前およびパスワードを設定します。

Command> call ttCacheUidPwdSet('cacheuser','oracle');

キャッシュ管理ユーザーの名前とパスワードは、TimesTenデータベースに1回のみ設定する必要があります。TimesTenデータベースがこの設定を使用する方法の詳細は、「キャッシュ管理ユーザーの名前およびパスワードの設定」を参照してください。

キャッシュ・グリッドの作成

この例ではグローバル・キャッシュ・グループを使用するため、キャッシュ・グリッドを作成して、Oracle DatabaseからデータをキャッシュするTimesTenデータベース内でグローバル・キャッシュ・データの管理に使用するフレームワークを定義する必要があります。Oracle Databaseユーザー、TimesTenデータベースおよびTimesTenユーザーを作成した後に、キャッシュ・グリッドを作成し、キャッシュ管理ユーザーの名前とパスワードをそのTimesTenデータベースに設定します。

キャッシュ・マネージャ・ユーザーとして、ttIsqlユーティリティを使用してttGridCreate組込みプロシージャをコールし、キャッシュ・グリッドmyGridを作成します。

Command> call ttGridCreate('myGrid');

次に、ttIsqlを使用してttGridNameSet組込みプロシージャをコールし、TimesTenデータベースをmyGridキャッシュ・グリッドに関連付けます。

Command> call ttGridNameSet('myGrid');

キャッシュ・グリッドの内容および機能の詳細は、「キャッシュ・グリッドの構成」を参照してください。

キャッシュ・グループの作成

この項では、読取り専用のキャッシュ・グループ(図2-1を参照)、および非同期ライトスルー(AWT)キャッシュ・グループ(図2-2を参照)を作成します。

図2-1 単一表の読取り専用キャッシュ・グループ

図2-1の説明が続きます
「図2-1 単一表の読取り専用キャッシュ・グループ」の説明

図2-2 単一表のライトスルー・キャッシュ・グループ

図2-2の説明が続きます
「図2-2 単一表のライトスルー・キャッシュ・グループ」の説明

次のタスクを完了して、読取り専用キャッシュ・グループおよびAWTキャッシュ・グループを作成します。

  1. キャッシュされるOracle Database表を作成します

  2. キャッシュ・エージェントを起動します

  3. キャッシュ・グループを作成します

  4. AWTキャッシュ・グループのレプリケーション・エージェントを起動します

キャッシュされるOracle Database表の作成

SQL*Plusを起動し、スキーマ・ユーザーとしてOracle Databaseに接続します。

% sqlplus oratt/oracle

SQL*Plusを使用して、表readtab(図2-3を参照)および表writetab(図2-4を参照)を作成します。

SQL> CREATE TABLE readtab (keyval NUMBER NOT NULL PRIMARY KEY, str VARCHAR2(32));
SQL> CREATE TABLE writetab (pk NUMBER NOT NULL PRIMARY KEY, attr VARCHAR2(40));

図2-3 読取り専用キャッシュ・グループにキャッシュされるOracle Database表の作成

図2-3の説明が続きます
「図2-3 読取り専用キャッシュ・グループにキャッシュされるOracle Database表の作成」の説明

図2-4 AWTキャッシュ・グループにキャッシュされるOracle Database表の作成

図2-4の説明が続きます
「図2-4 AWTキャッシュ・グループにキャッシュされるOracle Database表の作成」の説明

次に、SQL*Plusを使用して、数行をreadtab表およびwritetab表に挿入し、変更をコミットします。

SQL> INSERT INTO readtab VALUES (1, 'Hello');
SQL> INSERT INTO readtab VALUES (2, 'World');

SQL> INSERT INTO writetab VALUES (100, 'TimesTen');
SQL> INSERT INTO writetab VALUES (101, 'CACHE');
SQL> COMMIT;

次に、SQL*Plusを使用して、readtab表に対するSELECT権限およびwritetab表に対するSELECTINSERTUPDATEDELETEの各権限をキャッシュ管理ユーザーに付与します。

SQL> GRANT SELECT ON readtab TO cacheuser;

SQL> GRANT SELECT ON writetab TO cacheuser;
SQL> GRANT INSERT ON writetab TO cacheuser;
SQL> GRANT UPDATE ON writetab TO cacheuser;
SQL> GRANT DELETE ON writetab TO cacheuser;

readtab表に対するSELECT権限は、この表をキャッシュする読取り専用キャッシュ・グループを作成し、キャッシュされたOracle Database表からTimesTenキャッシュ表への自動リフレッシュ処理を実行するために必要です。

writetab表に対するSELECT権限は、この表をキャッシュするAWTキャッシュ・グループを作成するために必要です。writetab表に対するINSERTUPDATEおよびDELETEの各権限は、TimesTenキャッシュ表からキャッシュされたOracle Database表にライトスルー処理を実行するために必要です。

キャッシュ管理ユーザーが読取り専用キャッシュ・グループおよびAWTキャッシュ・グループを作成し、それぞれのグループに対して処理を実行するために必要な権限の詳細は、「Oracle Databaseユーザーへの権限の付与」を参照してください。

キャッシュ・エージェントの起動

キャッシュ・マネージャ・ユーザーとして、ttIsqlユーティリティを使用してttCacheStart組込みプロシージャをコールし、TimesTenデータベースでキャッシュ・エージェントを起動します。

Command> call ttCacheStart;

キャッシュ・エージェントの起動方法の詳細は、「キャッシュ・エージェントの管理」を参照してください。

キャッシュ・グループの作成

キャッシュ・マネージャ・ユーザーとして、ttIsqlユーティリティを使用して、Oracle Database表oratt.readtabをキャッシュする読取り専用キャッシュ・グループreadcacheおよびOracle Database表oratt.writetabをキャッシュする動的AWTグローバル・キャッシュ・グループwritecacheを作成します。

Command> CREATE READONLY CACHE GROUP readcache
       > AUTOREFRESH INTERVAL 5 SECONDS
       > FROM oratt.readtab
       > (keyval NUMBER NOT NULL PRIMARY KEY, str VARCHAR2(32));

Command> CREATE DYNAMIC ASYNCHRONOUS WRITETHROUGH GLOBAL CACHE GROUP writecache
       > FROM oratt.writetab
       > (pk NUMBER NOT NULL PRIMARY KEY, attr VARCHAR2(40));

キャッシュ・グループreadcacheおよびwritecacheに加えて、それぞれのキャッシュ表oratt.readtabおよびoratt.writetabが、TimesTenデータベースに作成されます。キャッシュ表の所有者および名前は、キャッシュされたOracle Database表と同じものとなります。図2-5に、oratt.writetab表をキャッシュするwritecacheキャッシュ・グループを示します。

図2-5 ASYNCHRONOUS WRITETHROUGHキャッシュ・グループの作成

図2-5の説明が続きます
「図2-5 ASYNCHRONOUS WRITETHROUGHキャッシュ・グループの作成」の説明

ttIsql cachegroupsコマンドを使用して、readcacheキャッシュ・グループおよびwritecacheキャッシュ・グループの定義を表示します。

Command> cachegroups;

Cache Group CACHEUSER.READCACHE:

  Cache Group Type: Read Only
  Autorefresh: Yes
  Autorefresh Mode: Incremental
  Autorefresh State: Paused
  Autorefresh Interval: 5 Seconds
  Autorefresh Status: ok
  Aging: No aging defined

  Root Table: ORATT.READTAB
  Table Type: Read Only

Cache Group CACHEUSER.WRITECACHE:

  Cache Group Type: Asynchronous Writethrough global (Dynamic)
  Autorefresh: No
  Aging: LRU on

  Root Table: ORATT.WRITETAB
  Table Type: Propagate

2 cache groups found.

読取り専用キャッシュ・グループの詳細は、「読取り専用キャッシュ・グループ」を参照してください。

AWTキャッシュ・グループの詳細は、「ASYNCHRONOUS WRITETHROUGH(AWT)キャッシュ・グループ」を参照してください。

動的キャッシュ・グループの詳細は、「動的キャッシュ・グループ」を参照してください。

グローバル・キャッシュ・グループの詳細は、「グローバル・キャッシュ・グループ」を参照してください。

AWTキャッシュ・グループのレプリケーション・エージェントの起動

キャッシュ・マネージャ・ユーザーとして、ttIsqlユーティリティを使用してttRepStart組込みプロシージャをコールし、TimesTenデータベースでレプリケーション・エージェントを起動します。

Command> call ttRepStart;

レプリケーション・エージェントは、AWTキャッシュ・グループのTimesTenキャッシュ表にコミットされた更新を、キャッシュされたOracle Database表に伝播します。

レプリケーション・エージェントの起動方法の詳細は、「レプリケーション・エージェントの管理」を参照してください。

キャッシュ・グリッドへのTimesTenデータベースのアタッチ

ローカルのキャッシュ・グループのみを作成している場合は、TimesTenデータベースをキャッシュ・グリッドにアタッチする必要はありません。ただし、グローバル・キャッシュ・グループまたはそのキャッシュ表に対して処理を実行するには、グローバル・キャッシュ・グループが関連付けられているキャッシュ・グリッドにTimesTenデータベースをアタッチする必要があります。

キャッシュ・マネージャ・ユーザーとして、ttIsqlユーティリティを使用してttGridAttach組込みプロシージャをコールし、myGridキャッシュ・グリッドにTimesTenデータベースをアタッチします。

Command> call ttGridAttach(1,'alone1','mysys',5001);

この例で、alone1はグリッド・メンバーを一意に識別する名前を、mysysはTimesTenシステムのホスト名を、5001はキャッシュ・エージェントのTCP/IPポートを示しています。ttGridAttach組込みプロシージャをコールすると、キャッシュ・エージェントがまだ実行中でない場合に、エージェントが自動的に起動されます。

この章の例には、唯一のグリッド・メンバーとしてスタンドアロンTimesTenデータベースが1つのみ含まれていますが、アクティブ・スタンバイ・ペアや他のスタンドアロンTimesTenデータベースなどをグリッド・メンバーとして追加することもできます。既存のキャッシュ・グリッドに他のメンバーを作成および追加する方法、およびグリッド・メンバー間でグローバル・キャッシュ・グループのデータを共有する方法の詳細は、第6章「他のキャッシュ・グリッド・メンバーの作成」を参照してください。

読取り専用キャッシュ・グループに対する処理の実行

この項では、読取り専用キャッシュ・グループを手動でロードする方法について説明します。次に、TimesTenキャッシュ表にコミットされた更新を、キャッシュされたOracle Database表に自動的に伝播する方法について説明します。

次のタスクを完了して、読取り専用キャッシュ・グループに対して処理を実行します。

  1. キャッシュ・グループを手動でロードします

  2. キャッシュされたOracle Database表を更新します

キャッシュ・グループの手動によるロード

キャッシュ・マネージャ・ユーザーとして、ttIsqlユーティリティを使用して、readcacheキャッシュ・グループのTimesTenキャッシュ表oratt.readtabにOracle Database表oratt.readtabの内容をロードします。

Command> LOAD CACHE GROUP readcache COMMIT EVERY 256 ROWS;
2 cache instances affected.
Command> exit

図2-6に、Oracle Databaseデータがoratt.readtabキャッシュ表にロードされる方法を示します。

図2-6 読取り専用キャッシュ・グループのロード

図2-6の説明が続きます
「図2-6 読取り専用キャッシュ・グループのロード」の説明

ttIsqlユーティリティを開始して、cachealone1 DSNにインスタンス管理者として接続します。ttIsqlを使用して、oratt.readtabキャッシュ表に対するSELECT権限をキャッシュ・マネージャ・ユーザーに付与して、このユーザーがこの表に対してSELECT問合せを発行できるようにします。

% ttIsql cachealone1
Command> GRANT SELECT ON oratt.readtab TO cacheuser;
Command> exit

ttIsqlユーティリティを起動し、キャッシュ・マネージャ・ユーザーとしてcachealone1 DSNに接続します(キャッシュ・マネージャ・ユーザーのパスワードおよびそのコンパニオンOracleユーザーのパスワードを指定します)。ttIsqlを使用して、oratt.readtabキャッシュ表の内容を問い合せます。

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> SELECT * FROM oratt.readtab;
< 1, Hello >
< 2, World >
2 rows found.

キャッシュ・グループを手動でロードする方法の詳細は、「キャッシュ・グループのロードおよびリフレッシュ」を参照してください。

キャッシュされたOracle Database表の更新

Oracle Databaseスキーマ・ユーザーとしてSQL*Plusを使用して、Oracle Database表readtabを対象に、新規行の挿入、既存行の削除および既存行の更新を実行し、これらの変更をコミットします。

SQL> INSERT INTO readtab VALUES (3, 'Welcome');
SQL> DELETE FROM readtab WHERE keyval=2;
SQL> UPDATE readtab SET str='Hi' WHERE keyval=1;
SQL> COMMIT;

読取り専用キャッシュ・グループが5秒間隔の自動リフレッシュを指定して作成されたため、readcacheキャッシュ・グループのoratt.readtabキャッシュ表は、図2-7に示すように、キャッシュされたOracle Databaseのoratt.readtab表にコミットされた更新で、5秒後に自動的にリフレッシュされます。

図2-7 Oracle Database更新でのTimesTenキャッシュ表の自動リフレッシュ

図2-7の説明が続きます
「図2-7 Oracle Database更新でのTimesTenキャッシュ表の自動リフレッシュ」の説明

キャッシュされたOracle Database表にコミットされた更新によってreadcacheキャッシュ・グループが自動的にリフレッシュされた後、キャッシュ・マネージャ・ユーザーとして、ttIsqlユーティリティを使用してoratt.readtabキャッシュ表の内容を問い合せます。

Command> SELECT * FROM oratt.readtab;
< 1, Hi >
< 3, Welcome >
2 rows found.
Command> exit

キャッシュ・グループの自動リフレッシュの詳細は、「AUTOREFRESHキャッシュ・グループ属性」を参照してください。

動的な更新可能グローバル・キャッシュ・グループに対する処理の実行

この項では、AWTキャッシュ・グループを動的にロードする方法について説明します。次に、TimesTenキャッシュ表にコミットされた更新を、キャッシュされたOracle Database表に自動的に伝播する方法について説明します。

次のタスクを完了して、AWTキャッシュ・グループに対して処理を実行します。

  1. キャッシュ・グループを動的にロードします

  2. TimesTenキャッシュ表を更新します

キャッシュ・グループの動的ロード

ttIsqlユーティリティを開始して、cachealone1 DSNにインスタンス管理者として接続します。ttIsqlを使用して、oratt.writetabキャッシュ表に対するSELECT権限をキャッシュ・マネージャ・ユーザーに付与し、このユーザーがこの表に対して動的ロードSELECT文を発行できるようにします。

% ttIsql cachealone1
Command> GRANT SELECT ON oratt.writetab TO cacheuser;
Command> exit

ttIsqlユーティリティを起動し、キャッシュ・マネージャ・ユーザーとしてcachealone1 DSNに接続します(キャッシュ・マネージャ・ユーザーのパスワードおよびそのコンパニオンOracleユーザーのパスワードを指定します)。ttIsqlを使用して、Oracle Database表oratt.writetabからwritecacheキャッシュ・グループのTimesTenキャッシュ表oratt.writetabに、リクエストに応じてキャッシュ・インスタンスをロードします。

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> SELECT * FROM oratt.writetab WHERE pk=100;
< 100, TimesTen >
1 row found.
Command> exit

動的キャッシュ・グループでは、動的ロード文でリクエストに応じてキャッシュ・インスタンスをキャッシュ表にロードできます。キャッシュ・インスタンスを一意に識別するTimesTenキャッシュ表にSELECTUPDATEDELETEまたはINSERTのいずれかの文を発行すると、キャッシュ表でデータが見つからない場合に、キャッシュされたOracle Database表からキャッシュ・インスタンスが自動的にロードされます。動的にロードされるキャッシュ・インスタンスは、キャッシュ・グループのルート表の単一行と子表のすべての関連行で構成されています。

動的ロード処理の詳細は、「キャッシュ・インスタンスの動的ロード」を参照してください。

LOAD CACHE GROUP文を使用すると、動的キャッシュ・グループのキャッシュ表にデータを手動でロードすることもできます。

TimesTenキャッシュ表の更新

ttIsqlユーティリティを開始して、cachealone1 DSNにインスタンス管理者として接続します。ttIsqlを使用して、oratt.writetabキャッシュ表に対するINSERTDELETEおよびUPDATEの各権限をキャッシュ・マネージャ・ユーザーに付与して、このユーザーがこの表に対して更新を実行できるようにします。

% ttIsql cachealone1
Command> GRANT INSERT ON oratt.writetab TO cacheuser;
Command> GRANT DELETE ON oratt.writetab TO cacheuser;
Command> GRANT UPDATE ON oratt.writetab TO cacheuser;
Command> exit

ttIsqlユーティリティを起動して、cachealone1 DSNにキャッシュ・マネージャ・ユーザーとして接続します。ttIsqlを使用して、oratt.writetabキャッシュ表を対象に、新規行の挿入、既存行の削除および既存行の更新を実行し、これらの変更をコミットします。

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> INSERT INTO oratt.writetab VALUES (102, 'Cache');
Command> DELETE FROM oratt.writetab WHERE pk=101;
Command> UPDATE oratt.writetab SET attr='Oracle' WHERE pk=100;
Command> COMMIT;
Command> exit

writecacheキャッシュ・グループのoratt.writetabキャッシュ表にコミットされた更新は、図2-8に示すように、Oracle Database表oratt.writetabに自動的に伝播されます。

図2-8 TimesTenキャッシュ表に対する更新のOracle Databaseへの自動伝播

図2-8の説明が続きます
「図2-8 TimesTenキャッシュ表に対する更新のOracle Databaseへの自動伝播」の説明

Oracle Databaseスキーマ・ユーザーとして、SQL*Plusを使用してwritetab表の内容を問い合せます。

SQL> SELECT * FROM writetab;

        PK ATTR
---------- -------------------------------
       100 Oracle
       102 Cache

SQL> exit

TimesTenシステムおよびOracle Databaseシステムのクリーンアップ

キャッシュ・グリッドおよびキャッシュ・グループを作成する前に、次のタスクを完了して、TimesTenシステムおよびOracle Databaseシステムを元の状態にリストアします。

  1. キャッシュ・グリッドからTimesTenデータベースをデタッチします

  2. レプリケーション・エージェントを停止します

  3. キャッシュ・グループを削除します

  4. キャッシュ・グリッドを破棄します

  5. キャッシュ・エージェントを停止し、TimesTenデータベースを破棄します

  6. Oracle Databaseのユーザーおよびオブジェクトの削除

キャッシュ・グリッドからのTimesTenデータベースのデタッチ

ttIsqlユーティリティを起動して、cachealone1 DSNにキャッシュ・マネージャ・ユーザーとして接続します。グリッドにアタッチしたため、ttIsqlを使用してttGridDetach組込みプロシージャをコールし、TimesTenデータベースをmyGridキャッシュ・グリッドからデタッチします。

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> call ttGridDetach;

TimesTenデータベースをキャッシュ・グリッドからデタッチした場合の影響の詳細は、「キャッシュ・グリッドからのTimesTenデータベースのデタッチ」を参照してください。

レプリケーション・エージェントの停止

キャッシュ・マネージャ・ユーザーとして、ttIsqlユーティリティを使用してttRepStop組込みプロシージャをコールし、TimesTenデータベースでレプリケーション・エージェントを停止します。

Command> call ttRepStop;
Command> exit

レプリケーション・エージェントの停止方法の詳細は、「レプリケーション・エージェントの管理」を参照してください。

キャッシュ・グループの削除

ttIsqlユーティリティを開始して、cachealone1 DSNにインスタンス管理者として接続します。ttIsqlを使用して、DROP ANY TABLE権限をキャッシュ・マネージャ・ユーザーに付与し、このユーザーがキャッシュ・グループを削除するときに基礎となるキャッシュ表を削除できるようにします。

% ttIsql cachealone1
Command> GRANT DROP ANY TABLE TO cacheuser;
Command> exit

ttIsqlユーティリティを起動して、cachealone1 DSNにキャッシュ・マネージャ・ユーザーとして接続します。ttIsqlを使用して、readcache読取り専用キャッシュ・グループおよびwritecache AWTキャッシュ・グループを削除します。

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> DROP CACHE GROUP readcache;
Command> DROP CACHE GROUP writecache;

キャッシュ・グループreadcacheおよびwritecacheに加えて、それぞれのキャッシュ表oratt.readtabおよびoratt.writetabが、TimesTenデータベースから削除されます。

キャッシュ・グループの削除の詳細は、「キャッシュ・グループの削除」を参照してください。

キャッシュ・グリッドの破棄

キャッシュ・マネージャ・ユーザーとして、ttIsqlユーティリティを使用してttGridDestroy組込みプロシージャをコールし、myGridキャッシュ・グリッドを破棄します。

Command> call ttGridDestroy('myGrid');

キャッシュ・グリッドの破棄の詳細は、「キャッシュ・グリッドの破棄」を参照してください。

キャッシュ・エージェントの停止およびTimesTenデータベースの破棄

キャッシュ・マネージャ・ユーザーとして、ttIsqlユーティリティを使用してttCacheStop組込みプロシージャをコールし、TimesTenデータベースでキャッシュ・エージェントを停止します。

Command> call ttCacheStop;
Command> exit

キャッシュ・エージェントの停止方法の詳細は、「キャッシュ・エージェントの管理」を参照してください。

次に、ttDestroyユーティリティを使用して、cachealone1 DSNに接続し、TimesTenデータベースを破棄します。

% ttDestroy cachealone1

Oracle Databaseのユーザーおよびオブジェクトの削除

SQL*Plusを起動し、sysユーザーとしてOracle Databaseに接続します。SQL*Plusを使用して、timestenユーザー、スキーマ・ユーザーorattおよびキャッシュ管理ユーザーcacheuserを削除します。

% sqlplus sys as sysdba
Enter password: password
SQL> DROP USER timesten CASCADE;
SQL> DROP USER oratt CASCADE;
SQL> DROP USER cacheuser CASCADE;

DROP USER文のCASCADEを指定すると、ユーザーそのものが削除される前に、そのユーザーが所有するすべてのオブジェクト(表やトリガーなど)が削除されます。

次に、SQL*Plusを使用して、TT_CACHE_ADMIN_ROLEロールを削除します。

SQL> DROP ROLE TT_CACHE_ADMIN_ROLE;

次に、SQL*Plusを使用して、timestenユーザーおよびキャッシュ管理ユーザーによって使用され、表領域およびそのデータ・ファイルの内容などを含むデフォルトの表領域cachetblspを削除します。

SQL> DROP TABLESPACE cachetblsp INCLUDING CONTENTS AND DATAFILES;
SQL> exit