ヘッダーをスキップ
Oracle In-Memory Database Cacheユーザーズ・ガイド
リリース11.2.1
B56054-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

2 スタート・ガイド

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

この章の内容は次のとおりです。

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

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

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

  1. Oracle Databaseでのユーザーの作成

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

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

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

Oracle Databaseでのユーザーの作成

Oracle In-Memory Database Cacheを使用するには、Oracleユーザーをいくつか作成しておく必要があります。

  • ユーザーtimestenは、キャッシュ・グリッドに関する情報を保存するOracle表を所有します。

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

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

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

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

SQL*Plusを使用して、timestenユーザーとキャッシュ管理ユーザーの両方が使用するデフォルトの表領域を作成します。 この表領域は、Oracle In-Memory Database Cacheのオブジェクトを保存するためにのみ使用し、他のアプリケーションと共有しないでください。 次に、SQL*PlusスクリプトTimesTen_install_dir/oraclescripts/initCacheGlobalSchema.sqlを実行して、次の要素を作成します。

  • timestenユーザー

  • キャッシュ・グリッドの情報を保存するために使用する、timestenユーザーが所有するOracle表

  • Oracle表に対する権限を定義する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としています。

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

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

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

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

value FROM nls_database_parameters 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

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

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

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

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

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

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

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

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


注意:

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

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

Oracle In-Memory Database Cacheを使用するには、Oracleユーザーの他に、TimesTenユーザーもいくつか作成しておく必要があります。

  • キャッシュ・マネージャ・ユーザーは、キャッシュ・グリッド処理およびキャッシュ・グループ処理を実行します。 TimesTenキャッシュ・マネージャ・ユーザーは、キャッシュされたOracle表にアクセスできるOracleユーザーと同じ名前である必要があります。 たとえば、Oracleユーザーには、キャッシュされたOracle表を選択し、更新するための権限が必要です。キャッシュ管理ユーザー、スキーマ・ユーザーまたは他の既存ユーザーをOracleユーザーにすることができます。キャッシュ・マネージャ・ユーザーのパスワードは、同じ名前を持つOracleユーザーとは別のパスワードにすることができます。

    キャッシュ・マネージャ・ユーザーは、キャッシュ・グリッドを作成および構成し、キャッシュ・グループを作成します。 キャッシュ・グループのロードやリフレッシュなどの処理を実行できます。ただし、これらの処理は十分な権限を持つTimesTenユーザーも実行できます。 また、キャッシュ・マネージャ・ユーザーは、グリッド自体や、キャッシュ・グループに対して実行される非同期処理(例: 自動リフレッシュ)など、キャッシュ環境の様々な側面を監視することもできます。

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

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

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

% ttIsql cachealone1

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

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

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

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

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

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

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

ttIsqlユーティリティを起動して、cachealone1 DSNにキャッシュ・マネージャ・ユーザーとして接続します。 接続文字列で、UID属性にキャッシュ・マネージャ・ユーザー名を指定します (この例では、TimesTenキャッシュ・マネージャ・ユーザー名はOracleキャッシュ管理ユーザー名と同じです)。 接続文字列内で、PWD属性にキャッシュ・マネージャ・ユーザーのパスワードを指定し、OraclePWD属性にキャッシュ管理ユーザーのパスワードを指定します。

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

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

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

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

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

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

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

Command> call ttGridCreate('myGrid');

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

Command> call ttGridNameSet('myGrid');

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

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

キャッシュ・グリッドを作成し、TimesTenデータベースをグリッドに関連付けると、キャッシュ・グループを作成する準備は完了です。 図2-1に示すように、読取り専用キャッシュ・グループを作成します。 次に、図2-2に示すように、ASYNCHRONOUS WRITETHROUGH(AWT)キャッシュ・グループを作成します。

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

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

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

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

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

  1. キャッシュするOracle表の作成

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

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

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

キャッシュするOracle表の作成

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表の作成

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

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

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

次に、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, 'IMDB');
SQL> COMMIT;

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

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表からTimesTenキャッシュ表への自動リフレッシュ処理を実行するために必要です。

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

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

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

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

Command> call ttCacheStart;

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

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

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

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));

図2-5 読取り専用キャッシュ・グループの作成

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

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

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

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

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表に伝播します。

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

キャッシュ・グリッドへの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表に自動的に伝播する方法について説明します。

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

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

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

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

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

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

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

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

ttIsqlユーティリティを起動して、cachealone1 DSNにキャッシュ・マネージャ・ユーザーとして接続します。 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表の更新

Oracleスキーマ・ユーザーとしてSQL*Plusを使用して、Oracle表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表oratt.readtabにコミットされた更新で自動的にリフレッシュされます。

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

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

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

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

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

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

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

次のタスクを完了して、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にキャッシュ・マネージャ・ユーザーとして接続します。 ttIsqlを使用して、Oracle表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キャッシュ表にSELECT、UPDATE、DELETEまたはINSERTのいずれかの文を発行すると、キャッシュ表でデータが見つからない場合に、キャッシュされたOracle表からキャッシュ・インスタンスが自動的にロードされます。 動的にロードされるキャッシュ・インスタンスは、キャッシュ・グループのルート表の単一行と子表のすべての関連行で構成されています。

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

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

TimesTenキャッシュ表の更新

ttIsqlユーティリティを開始して、cachealone1 DSNにインスタンス管理者として接続します。 ttIsqlを使用して、oratt.writetabキャッシュ表に対するINSERT、DELETEおよび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表oratt.writetabに自動的に伝播されます。

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

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

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

SQL> SELECT * FROM writetab;

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

SQL> exit

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

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

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

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

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

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

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

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

キャッシュ・グリッドからの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ユーザーおよびそのオブジェクトの削除

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

TimesTen内のOracleデータのキャッシュ手順

表2-1 TimesTenデータベースにOracleデータをキャッシュするための手順

タスク番号 タスク

1

Oracle Databaseに、次のユーザーを作成します。

  • timestenユーザー

    ユーザーを作成するには、sysユーザーとしてSQL*PlusスクリプトTimesTen_install_dir/oraclescripts/initCacheGlobalSchema.sqlを実行します。

  • キャッシュされたOracle表を所有する1人以上のスキーマ・ユーザー(既存のユーザーであることもあります)

  • キャッシュ管理ユーザー

    timestenユーザーおよびキャッシュ管理ユーザー用にデフォルトの表領域を作成する必要があります。 両方のユーザーに同じ表領域を指定できます。

sysユーザーとしてCREATE USER文を実行します。

Oracleユーザーの詳細は、「Oracleユーザーの作成」を参照してください。

キャッシュ管理ユーザーに、キャッシュ・グリッド処理を実行し、目的のタイプのキャッシュ・グループを作成して、そのキャッシュ・グループに対して処理を実行するのに必要な権限を付与します。 権限を付与するには、sysユーザーとしてTimesTen_install_dir/oraclescripts/grantCacheAdminPrivileges.sqlスクリプトまたはTimesTen_install_dir/oraclescripts/initCacheAdminSchema.sqlスクリプトを実行します。

実行対象のスクリプトを確認するには、「Oracleデータのキャッシュ管理に使用されるOracleオブジェクトの自動作成」または「Oracleデータのキャッシュ管理に使用されるOracleオブジェクトの手動による作成」を参照してください。

Oracleオブジェクトを手動で作成している場合は、さらにTimesTen_install_dir/oraclescripts/initCacheGridSchema.sqlスクリプトを実行して、特定のキャッシュ・グリッドに関連付けられているTimesTenデータベースに関する情報を保存するためのOracle表を作成する必要があります。

権限の中には、キャッシュされたOracle表を作成するまでは付与できないものもあります。 これらの権限を付与するには、sysユーザーとしてGRANT文を実行します。

特定のキャッシュ処理を実行するためにキャッシュ管理ユーザーに付与する必要がある権限の詳細は、「Oracleユーザーへの権限の付与」を参照してください。

2

Oracle Databaseからデータをキャッシュするために使用するTimesTenデータベースを参照するDSNを定義します。

Oracle Databaseインスタンスを参照するOracleネット・サービス名をOracleNetServiceName属性に設定します。

Oracle Databaseキャラクタ・セットをDatabaseCharacterSet属性に設定します。 TimesTenデータベース・キャラクタ・セットは、Oracle Databaseキャラクタ・セットに一致する必要があります。

次に、データベースがスタンドアロン・データベースであるか、またはアクティブ・スタンバイ・ペアのアクティブ・マスター・データベースである場合は、DSNに接続してデータベースを作成します。

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

3

TimesTenデータベースに、次のユーザーを作成します。

  • キャッシュ・マネージャ・ユーザー

    このユーザーは、キャッシュされたOracle表にアクセスできるOracleユーザーと同じ名前である必要があります。キャッシュ管理ユーザー、スキーマ・ユーザーまたは他の既存ユーザーをOracleユーザーにすることができます。 キャッシュ・マネージャ・ユーザーのパスワードは、同じ名前を持つOracleユーザーとは別のパスワードにすることができます。

  • TimesTenキャッシュ表を所有する1人以上のキャッシュ表ユーザー

    これらのユーザーは、キャッシュされたOracle表を所有するOracleスキーマ・ユーザーと同じ名前である必要があります。 キャッシュ表ユーザーのパスワードは、同じ名前を持つOracleユーザーとは別のパスワードにすることができます。

インスタンス管理者としてCREATE USER文を実行します。

TimesTenユーザーの詳細は、「TimesTenユーザーの作成」を参照してください。

キャッシュ・マネージャ・ユーザーに、キャッシュ・グリッド処理を実行し、目的のタイプのキャッシュ・グループを作成して、そのキャッシュ・グループに対して処理を実行するのに必要な権限を付与します。 インスタンス管理者としてGRANT文を実行します。

特定のキャッシュ処理を実行するためにキャッシュ・マネージャ・ユーザーに付与する必要がある権限の詳細は、「TimesTenユーザーへの権限の付与」を参照してください。

4

TimesTenデータベースにキャッシュ管理ユーザーの名前とパスワードを設定するには、キャッシュ・マネージャ・ユーザーとしてttCacheUidPwdSet組込みプロシージャをコールするか、またはCACHE_MANAGER権限を持つTimesTen外部ユーザーとしてttAdmin -cacheUidPwdSetユーティリティ・コマンドを実行します。

TimesTenデータベースにキャッシュ管理ユーザーの名前およびパスワードを設定する方法の詳細は、「キャッシュ管理ユーザーの名前およびパスワードの設定」を参照してください。

5

キャッシュ・グリッドを作成するには、キャッシュ・マネージャ・ユーザーとしてTimesTenデータベースでttGridCreate組込みプロシージャをコールします。

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

6

TimesTenデータベースをキャッシュ・グリッドに関連付けるには、キャッシュ・マネージャ・ユーザーとしてTimesTenデータベースでttGridNameSet組込みプロシージャをコールします。

TimesTenデータベースをキャッシュ・グリッドに関連付ける方法の詳細は、「TimesTenデータベースとキャッシュ・グリッドの関連付け」を参照してください。

7

TimesTenデータベースでキャッシュ・エージェントを起動するには、キャッシュ・マネージャ・ユーザーとしてttCacheStart組込みプロシージャをコールするか、またはCACHE_MANAGER権限を持つTimesTen外部ユーザーとしてttAdmin -cacheStartユーティリティ・コマンドを実行します。

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

8

キャッシュ・グループのスキーマを設計するには、どのOracle表をキャッシュし、そのOracle表内でどの列とどの行をキャッシュするかを決定します。 複数表キャッシュ・グループの場合、表間の関係を決定するには、どの表がルート表であり、どの表がルート表の直接の子表であり、どの表が他の子表の子表であるかを定義します。 キャッシュ列ごとに、Oracleデータ型のマップ先となるTimesTenデータ型を決定します。

Oracle DatabaseとTimesTenデータベース間の有効なデータ型マッピングのリストの詳細は、「OracleおよびTimesTenのデータ型のマッピング」を参照してください。

キャッシュ・グループごとに、アプリケーションの要件および目的に基づいて、どのタイプ(読取り専用、SWT、AWT、ユーザー管理)を作成するかを決定します。 また、各キャッシュ・グループが明示的にロードされるか、動的であるか、ローカルであるか、グローバルであるかを決定します。

次に、キャッシュ・グループを作成します。

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

9

このTimesTenデータベースをアクティブ・スタンバイ・ペアのアクティブ・マスター・データベースとする場合は、データベースにアクティブ・スタンバイ・ペアのレプリケーション・スキームを作成します。

10

TimesTenデータベースにアクティブ・スタンバイ・ペアのレプリケーション・スキームまたは1つ以上のAWTキャッシュ・グループが含まれる場合、データベースでレプリケーション・エージェントを起動するには、キャッシュ・マネージャ・ユーザーとしてttRepStart組込みプロシージャをコールするか、またはCACHE_MANAGER権限を持つTimesTen外部ユーザーとしてttAdmin -repStartユーティリティ・コマンドを実行します。

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

11

TimesTenデータベースに1つ以上のグローバル・キャッシュ・グループが含まれる場合、TimesTenデータベースを関連付け先のキャッシュ・グリッドにアタッチするには、キャッシュ・マネージャ・ユーザーとしてttGridAttach組込みプロシージャをコールします。

TimesTenデータベースをキャッシュ・グリッドにアタッチする方法の詳細は、「キャッシュ・グリッドへのTimesTenデータベースのアタッチ」を参照してください。

12

明示的にロードされるキャッシュ・グループのキャッシュ表を手動でロードするにはLOAD CACHE GROUP文を使用し、動的キャッシュ・グループのキャッシュ表をロードするには適切なSELECT文、UPDATE文またはINSERT文を使用します。

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

動的キャッシュ・グループのキャッシュ表を動的にロードする方法の詳細は、「キャッシュ・グループの動的ロード」を参照してください。

13

後続のスタンドアロンTimesTenデータベースを既存のキャッシュ・グリッドにメンバーとして追加できます。

スタンドアロン・データベースを作成するには、タスク2を実行します。次に、タスク3と4、6から8、および10と11を実行してデータベースを構成し、グリッドにメンバーとしてそのデータベースを追加します。

別のスタンドアロンTimesTenデータベースを作成し、そのデータベースを既存のキャッシュ・グリッドに追加する方法の詳細は、「後続のスタンドアロンTimesTenデータベースの作成および構成」を参照してください。

14

キャッシュ表を別のTimesTenデータベースにレプリケートして高可用性を実現できるよう、アクティブ・スタンバイ・ペアを既存のキャッシュ・グリッドにメンバーとして追加できます。

アクティブ・マスター・データベースを作成するには、タスク2を実行します。次に、タスク3と4、6から11を実行してデータベースを構成し、グリッドにメンバーとしてそのデータベースを追加します。

アクティブ・マスター・データベースを作成し、そのデータベースを既存のキャッシュ・グリッドに追加する方法の詳細は、「アクティブ・マスター・データベースの作成および構成」を参照してください。

アクティブ・マスター・データベースからスタンバイ・マスター・データベースを作成するには、タスク2を実行してスタンバイ・マスター・データベース用のDSNを作成した後、ADMIN権限を持つTimesTen外部ユーザーとして、スタンバイ・マスター・データベース・システムでttRepAdmin -duplicateユーティリティ・コマンドを実行します。 このコマンドを正常に完了するには、アクティブ・マスター・データベースのキャッシュ・マネージャ・ユーザーにADMIN権限を付与する必要があります。 次に、タスク4、7、10および11を実行してデータベースを構成し、グリッドにメンバーとしてそのデータベースを追加します。

スタンバイ・マスター・データベースを作成し、そのデータベースを既存のキャッシュ・グリッドに追加する方法の詳細は、「スタンバイ・マスター・データベースの作成および構成」を参照してください。

スタンバイ・マスター・データベースからオプションの読取り専用サブスクライバ・データベースを作成するには、タスク2を実行して、サブスクライバ・データベースのDSNを作成します。 次に、ADMIN権限を持つTimesTen外部ユーザーとして、サブスクライバ・データベース・システムでttRepAdmin -duplicateユーティリティ・コマンドを実行します。 このコマンドを正常に完了するには、スタンバイ・マスター・データベースのキャッシュ・マネージャ・ユーザーにADMIN権限を付与する必要があります。 次に、タスク10を実行して、データベースでレプリケーション・エージェントを起動します。

アクティブ・スタンバイ・ペアの読取り専用サブスクライバ・データベースを作成する方法の詳細は、「読取り専用サブスクライバ・データベースの作成および構成」を参照してください。