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

戻る
戻る
 
次へ
次へ
 

3 キャッシュ・インフラストラクチャの設定

この章では、TimesTenシステムおよびOracleシステムを設定して、TimesTenデータベースにOracleデータをキャッシュできるようにするためのタスクを示します。内容は次のとおりです。

OracleデータをTimesTenにキャッシュするためのシステムの構成

Oracle In-Memory Database Cacheでは、次のリリースのOracleサーバーがサポートされています。

「Oracle In-Memory Database Cacheの環境変数(UNIX)」または「Oracle In-Memory Database Cacheの環境変数(Microsoft Windows)」の説明に従って、特定のオペレーティング・システム用に環境変数を設定します。

次に、『Oracle TimesTen In-Memory Databaseインストレーション・ガイド』の説明に従って、TimesTenをインストールします。


注意:

製品の観点からは、Oracle In-Memory Database CacheはTimesTenと同じ意味で使用されます。これは、Oracle TimesTen In-Memory DatabaseがOracle In-Memory Database Cache製品オプションに含まれるためです。

TimesTenでは、WindowsクライアントのOracle Name Serverはサポートされていません。

Oracle In-Memory Database Cacheの環境変数(UNIX)

LD_LIBRARY_PATH、SHLIB_PATHなどの共有ライブラリ検索パスの環境変数に、TimesTen_install_dir/libディレクトリが含まれている必要があります。

詳細は、『Oracle TimesTen In-Memory Databaseインストレーション・ガイド』の共有ライブラリ・パス環境変数に関する説明を参照してください。

PATH環境変数に、TimesTen_install_dir/binディレクトリが含まれている必要があります。

次の例では、TimesTenは/timesten/myinstanceディレクトリにインストールされています。

LD_LIBRARY_PATH=/timesten/myinstance/lib
PATH=/timesten/myinstance/bin

Oracle In-Memory Database Cacheの環境変数(Microsoft Windows)

PATHシステム環境変数に、次のディレクトリが含まれている必要があります。

  • Oracle_install_dir\bin

  • TimesTen_install_dir\lib

  • TimesTen_install_dir\bin

次の例では、OracleはC:\oracle\ora112ディレクトリに、TimesTenはC:\timesten\myinstanceディレクトリにインストールされています。

PATH=C:\oracle\ora112\bin;C:\timesten\myinstance\lib;C:\timesten\myinstance\bin

TimesTenにデータをキャッシュするためのOracle Databaseの構成

この項では、sysユーザーがOracle Databaseで実行する必要があるタスクについて説明します。内容は次のとおりです。

Oracleユーザーの作成

最初に、キャッシュ・グリッドの情報が格納されるOracle表を所有する、ユーザーtimestenを作成する必要があります。 SQL*PlusスクリプトTimesTen_install_dir/oraclescripts/initCacheGlobalSchema.sqlを使用して、次の項目を作成します。

  • timestenユーザー

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

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

timestenユーザーのデフォルトの表領域を作成または指定し、この表領域を引数としてinitCacheGlobalSchema.sqlスクリプトに渡します。 timestenユーザーが所有するOracle表のリストについては、「キャッシュ環境の管理に使用するOracleオブジェクト」を参照してください。

例3-1 timestenユーザーおよびその表の作成

次のSQL*Plusの例では、timestenユーザー用に作成されるデフォルトの表領域はcachetblspです。

% cd TimesTen_install_dir/oraclescripts
% sqlplus sys as sysdba
Enter password: password
SQL> CREATE TABLESPACE cachetblsp DATAFILE 'datfttuser.dbf' SIZE 100M;
SQL> @initCacheGlobalSchema "cachetblsp"

次に、TimesTenデータベースにキャッシュされるOracle表の所有者となる、1人以上のユーザーを作成または指定する必要があります。 このようなユーザーは、スキーマ・ユーザーと呼ばれます。既存ユーザーまたは新規ユーザーをスキーマ・ユーザーにすることができます。 キャッシュされる表は、新規でも既存でもかまいません。

例3-2 スキーマ・ユーザーの作成

sysユーザーとして、スキーマ・ユーザーorattを作成します。

SQL*Plusを使用してスキーマ・ユーザーを作成します。

SQL> CREATE USER oratt IDENTIFIED BY oracle;

次に、Oracleオブジェクトを作成、所有および保持するユーザーを作成する必要があります。これらのOracleオブジェクトは、特定のキャッシュ・グリッドを管理し、特定のキャッシュ・グループ・タイプの定義済動作を実行するために使用されます。 このようなユーザーは、キャッシュ管理ユーザーと呼ばれます。

キャッシュ管理ユーザーはtimestenユーザー用に作成した表領域に、キャッシュ・グリッドおよびそのキャッシュ・グループの情報を格納するために使用される表を作成するため、この表領域をキャッシュ管理ユーザーのデフォルトの表領域として指定します。 自動リフレッシュ・キャッシュ・グループおよびAWTキャッシュ・グループの定義済動作の実行に使用されるその他のOracleオブジェクト(変更ログ表、レプリケーション・メタデータ表、トリガーなど)も、同じ表領域に作成されます。

キャッシュ管理ユーザーが所有するOracle表およびトリガーのリストについては、「キャッシュ環境の管理に使用するOracleオブジェクト」を参照してください。


注意:

自動リフレッシュ・キャッシュ・グループとは、AUTOREFRESH MODE INCREMENTALキャッシュ・グループ属性を使用する読取り専用キャッシュ・グループまたはユーザー管理キャッシュ・グループのことです。

例3-3 キャッシュ管理ユーザーの作成

sysユーザーとして、キャッシュ管理ユーザーcacheuserを作成します。 次の例では、cacheuserユーザーのデフォルトの表領域はcachetblspです。

SQL*Plusを使用してキャッシュ管理ユーザーを作成します。

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

Oracleユーザーへの権限の付与

Oracleユーザーに必要な権限は、作成するキャッシュ・グループのタイプおよびキャッシュ・グループに対して実行する処理によって異なります。 表3-1に、Oracleのキャッシュ管理ユーザーおよびTimesTenのキャッシュ・マネージャ・ユーザーに必要な権限をキャッシュ処理ごとに示します。

表3-1 キャッシュ処理に必要なOracleおよびTimesTenのユーザー権限

キャッシュ処理 Oracleのキャッシュ管理ユーザーに必要な権限1 TimesTenのキャッシュ・マネージャ・ユーザーに必要な権限2

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

  • ttCacheUidPwdSet組込みプロシージャのコール

  • ttAdmin -cacheUidPwdSetユーティリティ・コマンドの実行

  • CREATE SESSION

  • RESOURCE3

  • CACHE_MANAGER

キャッシュ管理ユーザー名の取得

  • ttCacheUidGet組込みプロシージャのコール

  • ttAdmin -cacheUidGetユーティリティ・コマンドの実行

なし

  • CACHE_MANAGER

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

  • ttGridCreate組込みプロシージャのコール

  • CREATE SESSION

  • TT_CACHE_ADMIN_ROLEロール

  • RESOURCE3

  • CACHE_MANAGER

TimesTenデータベースとキャッシュ・グリッドの関連付け

  • ttGridNameSet組込みプロシージャのコール

  • CREATE SESSION

  • tt_cache_admin_roleロール

  • CACHE_MANAGER

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

  • ttGridAttach組込みプロシージャのコール

  • CREATE SESSION

  • TT_CACHE_ADMIN_ROLEロール

  • CACHE_MANAGER

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

  • ttGridDetach組込みプロシージャのコール

  • CREATE SESSION

  • TT_CACHE_ADMIN_ROLEロール

  • CACHE_MANAGER

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

  • ttGridDetachList組込みプロシージャのコール

  • CREATE SESSION

  • TT_CACHE_ADMIN_ROLEロール

  • CACHE_MANAGER

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

  • ttGridDestroy組込みプロシージャのコール

  • CREATE SESSION

  • TT_CACHE_ADMIN_ROLEロール

  • CACHE_MANAGER

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

  • ttCacheStart組込みプロシージャのコール

  • ttAdmin -cacheStartユーティリティ・コマンドの実行

  • CREATE SESSION

  • CACHE_MANAGER

キャッシュ・エージェントの停止

  • ttCacheStop組込みプロシージャのコール

  • ttAdmin -cacheStopユーティリティ・コマンドの実行

なし

  • CACHE_MANAGER

キャッシュ・エージェント起動ポリシーの設定

  • ttCachePolicySet組込みプロシージャのコール

  • ttAdmin -cachePolicyユーティリティ・コマンドの実行

  • CREATE SESSION4

  • CACHE_MANAGER

キャッシュ・エージェント起動ポリシー設定を返す

  • ttCachePolicyGet組込みプロシージャのコール

  • CREATE SESSION

なし

レプリケーション・エージェントの起動

  • ttRepStart組込みプロシージャのコール

  • ttAdmin -repStartユーティリティ・コマンドの実行

なし

  • CACHE_MANAGER

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

  • ttRepStop組込みプロシージャのコール

  • ttAdmin -repStopユーティリティ・コマンドの実行

なし

  • CACHE_MANAGER

レプリケーション・エージェント起動ポリシーの設定

  • ttRepPolicySet組込みプロシージャのコール

  • ttAdmin -repPolicyユーティリティ・コマンドの実行

なし

  • ADMIN

CREATE [DYNAMIC] READONLY CACHE GROUP(AUTOREFRESH MODE INCREMENTALを指定)

  • CREATE SESSION

  • SELECT ON table_name5

  • RESOURCE3

  • CREATE ANY TRIGGER3

  • CREATE [ANY] CACHE GROUP6

  • CREATE [ANY] TABLE7

CREATE [DYNAMIC] READONLY CACHE GROUP(AUTOREFRESH MODE FULLを指定)

  • CREATE SESSION

  • SELECT ON table_name5

  • CREATE [ANY] CACHE GROUP6

  • CREATE [ANY] TABLE7

CREATE [DYNAMIC] ASYNCHRONOUS WRITETHROUGH [GLOBAL] CACHE GROUP

  • CREATE SESSION

  • SELECT ON table_name5

  • RESOURCE3

  • CREATE [ANY] CACHE GROUP6

  • CREATE [ANY] TABLE7

CREATE [DYNAMIC] SYNCHRONOUS WRITETHROUGH CACHE GROUP

  • CREATE SESSION

  • SELECT ON table_name5

  • CREATE [ANY] CACHE GROUP6

  • CREATE [ANY] TABLE7

CREATE [DYNAMIC] USERMANAGED CACHE GROUP

(後続の行に示す異なる処理を参照)

  • CREATE SESSION

  • SELECT ON table_name5

  • CREATE [ANY] CACHE GROUP6

  • CREATE [ANY] TABLE7

CREATE [DYNAMIC] USERMANAGED CACHE GROUP(AUTOREFRESH MODE INCREMENTALを指定)

  • CREATE SESSION

  • SELECT ON table_name5

  • RESOURCE3

  • CREATE ANY TRIGGER3

  • CREATE [ANY] CACHE GROUP6

  • CREATE [ANY] TABLE7

CREATE [DYNAMIC] USERMANAGED CACHE GROUP(AUTOREFRESH MODE FULLを指定)

  • CREATE SESSION

  • SELECT ON table_name5

  • CREATE [ANY] CACHE GROUP6

  • CREATE [ANY] TABLE7

CREATE [DYNAMIC] USERMANAGED CACHE GROUP(READONLYを指定)

  • CREATE SESSION

  • SELECT ON table_name5

  • CREATE [ANY] CACHE GROUP6

  • CREATE [ANY] TABLE7

CREATE [DYNAMIC] USERMANAGED CACHE GROUP(PROPAGATEを指定)

  • CREATE SESSION

  • SELECT ON table_name5

  • CREATE [ANY] CACHE GROUP6

  • CREATE [ANY] TABLE7

ALTER CACHE GROUP SET AUTOREFRESH STATE PAUSED

  • CREATE SESSION

  • SELECT ON table_name58

  • RESOURCE38

  • CREATE ANY TRIGGER38

  • ALTER ANY CACHE GROUP9

ALTER CACHE GROUP SET AUTOREFRESH STATE ON

  • CREATE SESSION

  • SELECT ON table_name58

  • RESOURCE38

  • CREATE ANY TRIGGER38

  • ALTER ANY CACHE GROUP9

ALTER CACHE GROUP SET AUTOREFRESH STATE OFF

  • CREATE SESSION

  • ALTER ANY CACHE GROUP9

ALTER CACHE GROUP SET AUTOREFRESH MODE FULL

  • CREATE SESSION

  • ALTER ANY CACHE GROUP9

ALTER CACHE GROUP SET AUTOREFRESH MODE INCREMENTAL

  • CREATE SESSION

  • SELECT ON table_name5

  • RESOURCE3

  • CREATE ANY TRIGGER3

  • ALTER ANY CACHE GROUP9

ALTER CACHE GROUP SET AUTOREFRESH INTERVAL

  • CREATE SESSION

  • SELECT ON table_name510

  • ALTER ANY CACHE GROUP9

LOAD CACHE GROUP

  • CREATE SESSION

  • SELECT ON table_name5

  • LOAD {ANY CACHE GROUP | ON cache_group_name}9

REFRESH CACHE GROUP

  • CREATE SESSION

  • SELECT ON table_name5

  • REFRESH {ANY CACHE GROUP | ON cache_group_name}9

FLUSH CACHE GROUP

  • CREATE SESSION

  • UPDATE ON table_name5

  • INSERT ON table_name5

  • FLUSH {ANY CACHE GROUP | |ON cache_group_name}9

UNLOAD CACHE GROUP

なし

  • UNLOAD {ANY CACHE GROUP | ON cache_group_name}9

DROP CACHE GROUP

  • CREATE SESSION

  • DROP ANY CACHE GROUP9

  • DROP ANY TABLE11

同期ライトスルーまたは伝播

  • CREATE SESSION

  • INSERT ON table_name512

  • UPDATE ON table_name512

  • DELETE ON table_name512

  • INSERT ON table_name13

  • UPDATE ON table_name13

  • DELETE ON table_name13

非同期ライトスルー

  • CREATE SESSION

  • INSERT ON table_name5

  • UPDATE ON table_name5

  • DELETE ON table_name5

  • INSERT ON table_name13

  • UPDATE ON table_name13

  • DELETE ON table_name13

増分自動リフレッシュ

  • SELECT ON table_name5

なし

完全自動リフレッシュ

  • SELECT ON table_name5

なし

動的ロード

  • CREATE SESSION

  • SELECT ON table_name5

  • SELECT ON table_name13

  • UPDATE ON table_name13

  • DELETE ON table_name13

  • INSERT ON table_name13

エージング

なし

  • DELETE {ANY TABLE | ON table_name}13

LRUエージング属性の設定

  • ttAgingLRUConfig組込みプロシージャのコール

なし

  • ADMIN

Oracleオブジェクトを手動でインストールまたはアンインストールするOracle SQL文の生成

  • ttIsqlユーティリティのcachesqlgetコマンドの実行

  • ttCacheSQLGet組込みプロシージャのコール

  • CREATE SESSION

  • CACHE_MANAGER

コミットされたキャッシュ表更新のOracleへの伝播の無効化または有効化

  • ttCachePropagateFlagSet組込みプロシージャのコール

なし

  • CACHE_MANAGER

自動リフレッシュ・キャッシュ・グループに対する、キャッシュ・エージェントのタイムアウトおよびリカバリ方法の構成

  • ttCacheConfig組込みプロシージャのコール

  • CREATE SESSION

  • CACHE_MANAGER

AWTトランザクション・ログ・ファイルのしきい値の設定

  • ttCacheAWTThresholdSet組込みプロシージャのコール

なし

  • CACHE_MANAGER

AWTキャッシュ・グループの監視の有効化または無効化

  • ttCacheAWTMonitorConfig組込みプロシージャのコール

なし

  • CACHE_MANAGER

キャッシュされたOracle表に対して発行されたDDL文の追跡の有効化または無効化

  • ttCacheDDLTrackingConfig組込みプロシージャのコール

  • CREATE SESSION

  • CACHE_MANAGER

キャッシュ・グリッド情報を返す

  • ttGridInfo組込みプロシージャのコール

  • CREATE SESSION

  • TT_CACHE_ADMIN_ROLEロール

  • CACHE_MANAGER

キャッシュ・グリッド・ノード情報を返す

  • ttGridNodeStatus組込みプロシージャのコール

  • CREATE SESSION

  • TT_CACHE_ADMIN_ROLEロール

  • CACHE_MANAGER


 1 キャッシュ管理ユーザーには、少なくともCREATE ANY TYPE権限が必要です。

 2 キャッシュ・マネージャ・ユーザーには、少なくともCREATE SESSION権限が必要です。

 3 Oracleデータのキャッシュ管理に使用されるOracleオブジェクトを手動で作成する場合は不要です。

 4 キャッシュ・エージェント起動ポリシーがalwaysまたはnorestartに設定されている場合に必要です。

 5 TimesTenキャッシュ・グループにキャッシュされる表のうち、キャッシュ管理ユーザーが所有している表を除くすべてのOracle表に必要です。

 6 CACHE_MANAGER権限には、CREATE [ANY] CACHE GROUP権限が含まれます。 キャッシュ・マネージャ・ユーザーが、キャッシュ・マネージャ・ユーザー以外のユーザーが所有するキャッシュ・グループを作成する場合は、ANYが必要です。

 7 キャッシュ表のいずれかが、キャッシュ・マネージャ・ユーザー以外のユーザーによって所有される場合は、ANYが必要です。

 8 キャッシュ・グループの自動リフレッシュ・モードが増分であり、自動リフレッシュの最初の状態がOFFになっている場合、およびOracleデータのキャッシュ管理に使用されるOracleオブジェクトが自動で作成される場合に必要です。

 9 キャッシュ・グループにアクセスするTimesTenユーザーが、そのキャッシュ・グループを所有していない場合に必要です。

 10 キャッシュ・グループの自動リフレッシュ・モードが増分になっている場合に必要です。

 11 キャッシュ・グループにアクセスするTimesTenユーザーが、そのキャッシュ表の一部を所有していない場合に必要です。

 12 Oracleユーザーがキャッシュ管理ユーザーではない場合、TimesTenキャッシュ・マネージャ・ユーザーと同じ名前を持つOracleユーザーに権限を付与する必要があります。

 13 キャッシュ表にアクセスするTimesTenユーザーがその表を所有していない場合に必要です。

Oracleデータのキャッシュ管理に使用されるOracleオブジェクトの自動作成

TimesTenでは、特定のキャッシュ・グリッド処理およびキャッシュ・グループ処理が実行されるときに、キャッシュ管理ユーザーによって所有されるOracleオブジェクト(キャッシュおよびレプリケーション・メタデータ表、変更ログ表、トリガーなど)を自動的に作成できます。 これらのオブジェクトの一部は、特定のキャッシュ・グリッドに関連付けられたTimesTenデータベースの情報を格納するために使用されます。 その他のオブジェクトは、自動リフレッシュ・キャッシュ・グループおよびAWTキャッシュ・グループの定義済動作を実行するために使用されます。

sysユーザーとしてSQL*PlusスクリプトTimesTen_install_dir/oraclescripts/grantCacheAdminPrivileges.sqlを実行することによって、必要な権限がキャッシュ管理ユーザーに付与されている場合、これらのOracleオブジェクトは自動的に作成されます。 必要な権限セットには、CREATE SESSION、RESOURCE、CREATE ANY TRIGGERおよびTT_CACHE_ADMIN_ROLEロールが含まれます。 キャッシュ管理ユーザー名は、引数としてgrantCacheAdminPrivileges.sqlスクリプトに渡されます。

作成するキャッシュ・グループのタイプおよびキャッシュ・グループやキャッシュ表に対して実行する処理によっては、grantCacheAdminPrivileges.sqlスクリプトの実行によってキャッシュ管理ユーザーに付与される権限の他に、キャッシュされたOracle表に対するSELECTやINSERTなどの権限も必要になる場合があります。特定のキャッシュ・グリッド処理、キャッシュ・グループ処理およびキャッシュ表処理を実行するために、キャッシュ管理ユーザーに付与する必要のある権限の完全なリストについては、表3-1を参照してください。

例3-4 Oracleオブジェクトを自動作成する権限の付与

sysユーザーとしてgrantCacheAdminPrivileges.sqlスクリプトを実行し、キャッシュ管理ユーザーに対して、TimesTenデータベースでOracleデータのキャッシュを管理するためのOracleオブジェクトを自動作成する権限を付与します。 次の例では、キャッシュ管理ユーザー名はcacheuserです。

SQL*Plusを使用して、grantCacheAdminPrivileges.sqlスクリプトを実行します。

SQL> @grantCacheAdminPrivileges "cacheuser"
SQL> exit

たとえば、自動リフレッシュ・キャッシュ・グループでは、キャッシュ・グループ・タイプの定義済動作の実行に必要なOracleオブジェクトがまだ存在しておらず、次のいずれかの状況が発生している場合、これらのオブジェクトが自動的に作成されます。

  • 自動リフレッシュ状態をPAUSEDまたはONに設定したキャッシュ・グループが作成されている。

  • 自動リフレッシュ状態をOFFに設定したキャッシュ・グループが作成され、その後PAUSEDまたはONに変更されている。

Oracleデータのキャッシュ管理に使用されるOracleオブジェクトの手動による作成

次の目的で使用されるOracleオブジェクトを自動作成するには、キャッシュ管理ユーザーにRESOURCE権限が必要です。

  • 特定のキャッシュ・グリッドに関連付けられたTimesTenデータベースの情報の格納。

  • 自動リフレッシュ・キャッシュ・グループの定義済動作の実行。 この場合、Oracleオブジェクトを自動作成するには、キャッシュ管理ユーザーにCREATE ANY TRIGGER権限も必要です。

  • AWTキャッシュ・グループの定義済動作の実行。

セキュリティ上の理由から、Oracleオブジェクトの自動作成に必要なRESOURCE権限およびCREATE ANY TRIGGER権限をキャッシュ管理ユーザーに付与しない場合は、これらのオブジェクトを手動で作成できます。

特定のキャッシュ・グループ・タイプの定義済動作を実行するために使用されるOracle表およびトリガーを手動で作成するには、sysユーザーとして、SQL*PlusスクリプトTimesTen_install_dir/oraclescripts/initCacheAdminSchema.sqlを実行します。 これらのオブジェクトは、自動リフレッシュ・キャッシュ・グループおよびAWTキャッシュ・グループを作成する前に作成する必要があります。 キャッシュ管理ユーザー名は、引数としてinitCacheAdminSchema.sqlスクリプトに渡されます。

また、initCacheAdminSchema.sqlスクリプトによって、CREATE SESSIONおよびTT_CACHE_ADMIN_ROLEロールを含む必要な最小限の権限セットもキャッシュ管理ユーザーに付与されます。 作成するキャッシュ・グループのタイプおよびキャッシュ・グループやキャッシュ表に対して実行する処理によっては、initCacheAdminSchema.sqlスクリプトの実行によってキャッシュ管理ユーザーに付与される権限の他に、キャッシュされたOracle表に対するSELECTやINSERTなどの権限も必要になる場合があります。特定のキャッシュ・グリッド処理、キャッシュ・グループ処理およびキャッシュ表処理を実行するために、キャッシュ管理ユーザーに付与する必要のある権限の完全なリストについては、表3-1を参照してください。

特定のキャッシュ・グリッドと関連付けられたTimesTenデータベースの情報を格納するために使用されるOracle表を手動で作成するには、sysユーザーとして、SQL*PlusスクリプトTimesTen_install_dir/oraclescripts/initCacheGridSchema.sqlを実行します。 これらの表は、キャッシュ・グリッドを作成する前に作成する必要があります。 キャッシュ管理ユーザー名および作成するキャッシュ・グリッド名は、引数としてinitCacheGridSchema.sqlスクリプトに渡されます。

例3-5 Oracleデータのキャッシュ管理に使用されるOracleオブジェクトの手動による作成

sysユーザーとしてinitCacheAdminSchema.sqlスクリプトを実行し、自動リフレッシュ・キャッシュ・グループおよびAWTキャッシュ・グループの定義済動作を実行するために使用されるOracleオブジェクトを手動で作成し、キャッシュ管理ユーザーに対して制限された権限セットを付与します。 次に、initCacheGridSchema.sqlスクリプトを実行して、特定のキャッシュ・グリッドに関連付けられたTimesTenデータベースの情報を格納するために使用されるOracleオブジェクトを手動で作成します。 次の例では、キャッシュ管理ユーザー名はcacheuser、キャッシュ・グリッド名はttGridです。

SQL*Plusを使用して、initCacheAdminSchema.sqlおよびinitCacheGridSchema.sqlスクリプトを実行します。

SQL> @initCacheAdminSchema "cacheuser"
SQL> @initCacheGridSchema "cacheuser" "ttGrid"
SQL> exit

自動リフレッシュ・キャッシュ・グループにキャッシュされるOracle表に関連付けられるその他のOracleオブジェクトは、これらのキャッシュ・グループ・タイプの定義済動作を実行するために必要です。 キャッシュ・グループを作成した後にこれらの追加オブジェクトを作成する方法の詳細は、「自動リフレッシュ・キャッシュ・グループ用のOracleオブジェクトの手動による作成」を参照してください。

Oracleデータのキャッシュを管理するためにTimesTenによって作成および使用されているOracleオブジェクトのリストを表示するには、SQL*Plusでsysユーザーとして次の問合せを実行します。

SQL> SELECT owner, object_name, object_type FROM all_objects WHERE object_name
  2  LIKE 'TT\___%' ESCAPE '\';

この問合せによって、timestenユーザーまたはキャッシュ管理ユーザーが所有している表、索引およびトリガーのリストが返されます。

OracleデータをキャッシュするためのTimesTenデータベースの構成

この項では、インスタンス管理者またはキャッシュ・マネージャ・ユーザーがTimesTenデータベースで実行する必要がある処理について説明します。内容は次のとおりです。

TimesTenデータベースのDSNの定義

Oracle DatabaseのデータをキャッシュするTimesTenデータベースは、システムDSNまたはユーザーDSNのいずれかによって参照できます。 TimesTen DSNの作成方法の詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のTimesTenデータストアの作成に関する説明を参照してください。

Oracle DatabaseのデータをキャッシュするTimesTenデータベースのDSNを作成する場合は、次の属性の設定に特に注意します。 これらの属性は、他に示されていないかぎり、すべてデータ・マネージャDSNまたは接続文字列で設定できます。

  • PermSizeには、データベースの永続パーティションの割当てサイズをMBで指定します。 この値は32MB以上に設定します。

  • OracleNetServiceNameは、Oracle Databaseインスタンスのネット・サービス名に設定する必要があります。

    Microsoft Windowsシステムの場合、Oracle Databaseインスタンスのネット・サービス名は、「TimesTen ODBC Setup」ダイアログ・ボックスにある「IMDB Cache」タブの「Oracle Net Service Name」フィールドで指定します。

  • DatabaseCharacterSetは、Oracle Databaseキャラクタ・セットに設定する必要があります。

    任意のユーザーとしてSQL*Plusで次の問合せを実行すると、Oracle Databaseキャラクタ・セットを確認できます。

    SQL>                                      SELECT value FROM nls_database_parameters WHERE parameter='NLS_CHARACTERSET';
    
  • UIDには、キャッシュされたOracle表にアクセスできるOracleユーザーと同じ名前を持つキャッシュ・ユーザー(キャッシュ・マネージャ・ユーザーなど)の名前を指定します。 UID属性は、データ・マネージャDSN、クライアントDSNまたは接続文字列で指定できます。

  • PWDには、UID属性で指定したTimesTenユーザーのパスワードを指定します。 PWD属性は、データ・マネージャDSN、クライアントDSNまたは接続文字列で指定できます。

  • OraclePWDには、UID属性で指定したTimesTenユーザーと同じ名前を持ち、キャッシュされたOracle表にアクセスできるOracleユーザーのパスワードを指定します。

  • PassThroughには、「パススルー・レベルの設定」で説明しているように、文をTimesTenデータベースで実行するかOracle Databaseにパススルーして実行するかの制御を設定できます。

  • LockLevelは、デフォルトの0(行レベル・ロック)に設定する必要があります。これは、Oracle In-Memory Database Cacheではデータベース・レベル・ロックがサポートされていないためです。

  • TypeModeは、デフォルトの0(Oracleタイプ・モード)に設定する必要があります。

例3-6 Oracle DatabaseのデータをキャッシュするTimesTenデータベースのDSN

次に、ttGridキャッシュ・グリッドのメンバーになる最初のスタンドアロンTimesTenデータベースを参照する、cachealone1 DSNの定義例を示します。

[cachealone1]
DataStore=/users/OracleCache/alone1
PermSize=64
OracleNetServiceName=orcl
DatabaseCharacterSet=WE8ISO8859P1

TimesTenユーザーの作成

最初に、キャッシュ・グリッド処理およびキャッシュ・グループ処理を実行するユーザーを作成する必要があります。 このようなユーザーは、キャッシュ・マネージャ・ユーザーと呼ばれます。 このユーザーは、キャッシュされたOracle表からの選択および更新を実行できるOracleユーザーと同じ名前を持つ必要があります。キャッシュ管理ユーザー、スキーマ・ユーザーまたは他の既存ユーザーをOracleユーザーにすることができます。キャッシュ・マネージャ・ユーザーのパスワードは、同じ名前を持つOracleユーザーとは別のパスワードにすることができます。

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

次に、TimesTenデータベースにキャッシュされるOracle表を現在所有しているか、または今後所有することになるスキーマ・ユーザーごとに、Oracleスキーマ・ユーザーと同じ名前のユーザーを作成する必要があります。 これらのユーザーは、TimesTenキャッシュ表を所有するユーザーとなるため、キャッシュ表ユーザーと呼ばれます。 つまり、TimesTenキャッシュ表の所有者および名前は、対応するキャッシュされたOracle表の所有者および名前と同じになります。キャッシュ表ユーザーのパスワードは、同じ名前を持つOracleスキーマ・ユーザーとは別のパスワードにすることができます。

キャッシュ・グループまたはキャッシュ表に対する処理(キャッシュ・グループのロードやキャッシュ表の更新など)は、十分な権限を持ついずれのTimesTenユーザーでも実行できます。 このマニュアルの例では、キャッシュ・マネージャ・ユーザーがこれらのタイプの処理を実行していますが、必要な権限を持つ別のユーザー(キャッシュ表ユーザーなど)でもこれらの処理を実行できます。 これらの処理をキャッシュ・マネージャ・ユーザー以外のTimesTenユーザーが実行する場合、このユーザーは、キャッシュされたOracle表からの選択および更新を実行できるOracleユーザーと同じ名前を持つ必要があります。 UID属性にそのユーザーの名前を指定してTimesTenデータベースに接続し、PWD属性およびOraclePWD属性に、対応するTimesTenパスワードおよびOracleパスワードをそれぞれ入力して、キャッシュ・グループまたはキャッシュ表に対する処理を実行します。

例3-7 TimesTenユーザーの作成

次のttIsqlユーティリティの例では、cachealone1 DSNにインスタンス管理者として接続してTimesTenデータベースを作成します。次に、キャッシュ・マネージャ・ユーザーcacheuserを作成します。この例では、このユーザーの名前はOracleキャッシュ管理ユーザーと同じです。次に、キャッシュ表ユーザーorattを作成します。このユーザーの名前は、TimesTenデータベースにキャッシュされるOracle表を所有するOracleスキーマ・ユーザーと同じです。

% ttIsql cachealone1
Command> CREATE USER cacheuser IDENTIFIED BY timesten;
Command> CREATE USER oratt IDENTIFIED BY timesten;

TimesTenユーザーへの権限の付与

TimesTenユーザーに必要な権限は、作成するキャッシュ・グループのタイプおよびキャッシュ・グループに対して実行する処理によって異なります。 各キャッシュ処理についてTimesTenのキャッシュ・マネージャ・ユーザーおよびOracleのキャッシュ管理ユーザーに必要な権限は、表3-1に示されています。

例3-8 キャッシュ・マネージャ・ユーザーに対する権限の付与

キャッシュ・マネージャ・ユーザーcacheuserには、次の処理を実行する権限が必要です。

  • キャッシュ管理ユーザーおよびパスワードの設定(CACHE_MANAGER)

  • TimesTenデータベースとキャッシュ・グリッドの作成および関連付け(CACHE_MANAGER)

  • TimesTenデータベースでのキャッシュ・エージェント・プロセスおよびレプリケーション・エージェント・プロセスの開始(CACHE_MANAGER)

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

  • キャッシュ管理ユーザーによって所有されるキャッシュ・グループの作成(CACHE_MANAGER権限に継承されるCREATE CACHE GROUP、orattキャッシュ表ユーザーによって所有される、基本となるキャッシュ表を作成するためのCREATE ANY TABLE)

インスタンス管理者としてttIsqlユーティリティを使用して、キャッシュ・マネージャ・ユーザーcacheuserに必要な権限を付与します。

Command> GRANT CREATE SESSION, CACHE_MANAGER, CREATE ANY TABLE TO cacheuser;
Command> exit

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

キャッシュ・グリッド処理またはキャッシュ・グループ処理を発行するには、TimesTenデータベースでキャッシュ管理ユーザーの名前およびパスワードを設定する必要があります。 キャッシュ・エージェントはこのユーザーとしてOracle Databaseに接続して、キャッシュ・グリッドの管理に使用される情報を格納したり、特定のキャッシュ・グループ・タイプの定義済動作を実行するために使用されるOracleオブジェクトを作成および保持します。

キャッシュ管理ユーザーの名前およびパスワードは、変更する必要がないかぎり、OracleデータをキャッシュするTimesTenデータベースごとに1回のみ設定する必要があります。 たとえば、TimesTenデータベースが破棄されて再作成された場合、またはOracle Databaseでキャッシュ管理ユーザーの名前が削除されて再作成された場合は、キャッシュ管理ユーザーの名前およびパスワードを再設定する必要があります。

TimesTenデータベースでキャッシュ・エージェントを実行している場合、またはデータベース内にキャッシュ・グループが存在する場合は、キャッシュ管理ユーザーの名前およびパスワードを変更できません。 キャッシュ管理ユーザーの名前およびパスワードを変更する前に、キャッシュ・グループを削除する必要があります。 また、キャッシュ管理ユーザーの名前およびパスワードを変更する前に、キャッシュ・エージェントを停止し、ユーザー名およびパスワードを変更した後でキャッシュ・エージェントを再起動する必要があります。

例3-9 キャッシュ管理ユーザーの名前およびパスワードの設定

キャッシュ管理ユーザーの名前およびパスワードは、キャッシュ・マネージャ・ユーザーとしてttCacheUidPwdSet組込みプロシージャをコールすることによって、プログラムで設定できます。

% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
Command> call ttCacheUidPwdSet('cacheuser','oracle');

また、CACHE_MANAGER権限を持つTimesTen外部ユーザーとしてttAdmin -cacheUidPwdSetユーティリティ・コマンドを実行することによって、コマンドラインから実行することもできます。

% ttAdmin -cacheUidPwdSet -cacheUid cacheuser -cachePwd oracle cachealone1

-cachePwdオプションを指定しなかった場合、ttAdminユーティリティによってキャッシュ管理ユーザーのパスワードを入力するように求められます。

ttAdminユーティリティの詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のttAdminに関する説明を参照してください。

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

1つのOracle表を、同じTimesTenデータベースにある別々のキャッシュ・グループにキャッシュすることはできません。 ただし、異なるTimesTenデータベースにある別々のキャッシュ・グループにキャッシュすることは可能です。

TimesTenのキャッシュ・グリッドを使用すると、Oracle Databaseを使用するユーザーが、TimesTenデータベース全体での読取り/書込みデータの一貫性、および予測可能なデータベース・トランザクション待機時間を維持しながら、複数のシステムまたがって横方向にキャッシュ・グループを拡大できます。 キャッシュ・グリッドは、リレーショナル・データ・モデルを使用してアプリケーション・データをまとめて管理する1つ以上のグリッド・メンバーで構成されています。 グリッド・メンバーは、スタンドアロンのTimesTenデータベースであるか、またはレプリケートされた2つ以上のTimesTenデータベースで構成されるアクティブ・スタンバイ・ペアであるかのいずれかです。

グリッド・メンバーの各データベースは、グリッド・ノードと呼ばれます。 ノードは、スタンドアロン・データベースか、アクティブ・スタンバイ・ペアのアクティブ・マスター・データベースまたはスタンバイ・マスター・データベースのいずれかである単一のTimesTenデータベースです。 つまり、グリッド・メンバーは1つまたは2つのノードで構成されます。

キャッシュ表のレプリケートの詳細は、『Oracle TimesTen In-Memory Database TimesTen to TimesTen開発者および管理者ガイド』のキャッシュ・グループを含むアクティブ・スタンバイ・ペアの管理に関する説明を参照してください。

グリッド・メンバーは同じシステムまたは異なるシステムに存在できます。 グリッド・メンバーが異なるシステムに存在する場合、システムは互いにTCP/IPプライベート・ネットワークで接続されている必要があります。 各システムのマシン・アーキテクチャ、オペレーティング・システム・バージョン、プラットフォームおよびビット・バージョンは、同じである必要があります。 すべてのグリッド・メンバーで、TimesTenメジャー・リリース番号が同じである必要があります。

グリッド・メンバーであるTimesTenデータベースまたはグリッド・メンバーに含まれるTimesTenデータベースには、ローカルおよびグローバルのキャッシュ・グループと、明示的にロードされるキャッシュ・グループおよび動的キャッシュ・グループを含めることができます。

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

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

キャッシュ・グリッドは、1つのOracle Databaseにのみ関連付けることができます。 TimesTenデータベースは、1つのキャッシュ・グリッドのメンバーにのみすることができます。 Oracle Databaseは2つ以上のキャッシュ・グリッドに関連付けることができ、各グリッドは異なるキャッシュ管理ユーザーで管理できます。 キャッシュ・グリッドには、他のキャッシュ・グリッドとの関連付けはありません。

この項では、キャッシュ・マネージャ・ユーザーがTimesTenデータベースで実行する必要がある処理について説明します。内容は次のとおりです。

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

このマニュアルの後半で使用されている例では、3つのグリッド・メンバー(2つのスタンドアロンTimesTenデータベースと、3つのTimesTenデータベースで構成される1つのアクティブ・スタンバイ・ペア)で構成されるキャッシュ・グリッドttGridを作成します。 この章では、1つのスタンドアロン・データベースをキャッシュ・グリッドに関連付ける方法を示します。 後続の章では、もう1つのスタンドアロン・データベースおよびアクティブ・スタンバイ・ペアの作成方法と、これらのメンバーをグリッドに関連付ける方法を示します。

最初のスタンドアロンTimesTenデータベースのDSN定義については、例3-6を参照してください。

任意のスタンドアロン・データベースか、アクティブ・スタンバイ・ペアのアクティブ・マスター・データベースまたはスタンバイ・マスター・データベースのいずれかからキャッシュ・グリッドを作成できます。 キャッシュ・グリッドは、いずれか1つのグリッド・メンバーから1回のみ作成されます。

例3-10 キャッシュ・グリッドの作成

キャッシュ・マネージャ・ユーザーとしてttGridCreate組込みプロシージャをコールすることによって、最初のスタンドアロン・データベースからttGridキャッシュ・グリッドを作成します。

Command> call ttGridCreate('ttGrid');

アクティブ・スタンバイ・ペアの読取り専用サブスクライバ・データベースを除いて、これらの例のデータベースはすべてttGridキャッシュ・グリッドと関連付けられます。

「Oracleデータのキャッシュ管理に使用されるOracleオブジェクトの手動による作成」の説明に従って、特定のキャッシュ・グリッドに関連付けられたTimesTenデータベースの情報を格納するためのOracleオブジェクトを手動で作成している場合、initCacheGridSchema.sqlスクリプトの実行によってグリッドが作成されているため、ttGridCreateをコールする必要はありません。

デフォルトでは、TimesTenデータベースでキャッシュ・グループを作成する前に、そのTimesTenデータベースをキャッシュ・グリッドに関連付ける必要があります。 下位互換性があるため、CacheGridEnable DSN属性を0に設定すると、キャッシュ・グリッドを作成してそのグリッドにTimesTenデータベースを関連付けることなく、そのデータベース内にキャッシュ・グループを作成できます。 ただし、TimesTenデータベース内にグローバル・キャッシュ・グループを作成する場合は、CacheGridEnableの設定に関係なく、キャッシュ・グリッドを作成してそのグリッドにTimesTenデータベースを関連付ける必要があります。グローバル・キャッシュ・グループの詳細は、「グローバル・キャッシュ・グループ」を参照してください。

CacheGridEnableは、デフォルトで1に設定されます。

TimesTenデータベースとキャッシュ・グリッドの関連付け

すべてのスタンドアロン・データベースと、アクティブ・スタンバイ・ペアのアクティブ・マスター・データベースおよびスタンバイ・マスター・データベースは、これらのデータベースでキャッシュ・グループを作成する前に、キャッシュ・グリッドと関連付ける必要があります。

例3-11 TimesTenデータベースとキャッシュ・グリッドの関連付け

キャッシュ・マネージャ・ユーザーとしてttGridNameSet組込みプロシージャをコールすることによって、最初のスタンドアロン・データベースをttGridキャッシュ・グリッドに関連付けます。

Command> call ttGridNameSet('ttGrid');

TimesTenデータベースとOracle Database間での接続テスト

TimesTenデータベースとOracle Database間の接続をテストするには、パススルー・レベルを3に設定して、Oracle Databaseで処理される次の問合せをキャッシュ・マネージャ・ユーザーとして実行します。

Command> passthrough 3;
Command> SELECT * FROM V$VERSION;
Command> passthrough 0;

接続が正しく確立されている場合は、問合せによってOracle Databaseのバージョンが返されます。 バージョンが返されなかった場合は、次の設定が正しいかどうかを確認します。

例3-12 キャッシュ管理ユーザー名の設定の確認

キャッシュ管理ユーザー名の設定は、キャッシュ・マネージャ・ユーザーとしてttCacheUidGet組込みプロシージャをコールすることによって、プログラムで返すことができます。

Command> call ttCacheUidGet;

また、CACHE_MANAGER権限を持つTimesTen外部ユーザーとしてttAdmin -cacheUidGetユーティリティ・コマンドを実行することによって、コマンドラインから返すこともできます。

% ttAdmin -cacheUidGet cachealone1

キャッシュ・エージェントの管理

キャッシュ・エージェントは、キャッシュ・グループのロードや自動リフレッシュなどのキャッシュ処理を実行したり、特定のキャッシュ・グループ・タイプの定義済動作を実行するために使用するOracleオブジェクトを管理するTimesTenプロセスです。

例3-13 キャッシュ・エージェントの起動

キャッシュ・エージェントは、キャッシュ・マネージャ・ユーザーとしてttCacheStart組込みプロシージャをコールすることによって、プログラムから手動で起動できます。

Command> call ttCacheStart;

また、CACHE_MANAGER権限を持つTimesTen外部ユーザーとしてttAdmin -cacheStartユーティリティ・コマンドを実行することによって、コマンドラインから起動することもできます。

% ttAdmin -cacheStart cachealone1

例3-14 キャッシュ・エージェントの停止

キャッシュ・エージェントは、キャッシュ・マネージャ・ユーザーとしてttCacheStop組込みプロシージャをコールすることによって、プログラムから手動で停止できます。

Command> call ttCacheStop;

また、CACHE_MANAGER権限を持つTimesTen外部ユーザーとしてttAdmin -cacheStopユーティリティ・コマンドを実行することによって、コマンドラインから停止することもできます。

% ttAdmin -cacheStop cachealone1

ttCacheStop組込みプロシージャにはオプションのパラメータがあり、ttAdmin -cacheStopユーティリティ・コマンドにはオプション-stopTimeoutがあります。これらのオプションで、キャッシュ・エージェントが停止するまでTimesTenメイン・デーモン・プロセスが待機する時間を指定します。 指定したタイムアウト時間内にキャッシュ・エージェントが停止しなかった場合、そのキャッシュ・エージェントはTimesTenデーモンによって停止されます。 キャッシュ・エージェントのデフォルトの停止タイムアウトは100秒です。 値0(ゼロ)は、永久に待機することを示します。

自動リフレッシュ・キャッシュ・グループを削除または変更した直後にキャッシュ・エージェントを停止しないでください。 キャッシュ・グループを管理するために作成および使用されたOracleオブジェクト(変更ログ表やトリガーなど)をキャッシュ・エージェントがクリーンアップできるように、最低でも2分は待機してください。


注意:

TimesTen X/Open XAおよびJava Transaction API(JTA)の実装は、Oracle In-Memory Database Cacheでは動作しません。 キャッシュ・エージェントを実行している場合、XAまたはJTAトランザクションは開始できません。

キャッシュ・エージェント起動ポリシーの設定

キャッシュ・エージェント起動ポリシーは、TimesTenデータベースでキャッシュ・エージェント・プロセスを起動する方法およびタイミングを決定します。

デフォルトの起動ポリシーはmanualであり、これはttCacheStart組込みプロシージャをコールするかttAdmin -cacheStartユーティリティ・コマンドを実行することによって、手動でキャッシュ・エージェントを起動する必要があることを意味します。 実行しているキャッシュ・エージェント・プロセスを手動で停止するには、ttCacheStop組込みプロシージャをコールするかttAdmin -cacheStopユーティリティ・コマンドを実行します。

起動ポリシーをalwaysに設定すると、TimesTenメイン・デーモン・プロセスの起動時にキャッシュ・エージェントを自動的に起動できます。 always起動ポリシーを使用しているときは、メイン・デーモンが実行している間、キャッシュ・エージェントを停止できません。ただし、起動ポリシーをmanualまたはnorestartに変更した後、ttCacheStop組込みプロシージャをコールするかttAdmin -cacheStopユーティリティ・コマンドを実行して手動停止を発行すると、キャッシュ・エージェントを停止できます。

manualおよびalways起動ポリシーを使用しているときは、データベースの無効化などの障害が発生した後、データベースがリカバリされると、キャッシュ・エージェントは自動的に再起動します。 障害発生時にデータベースがキャッシュ・グリッドにアタッチされていた場合は、データベースのリカバリ時に自動的にそのグリッドに再アタッチされます。

起動ポリシーをnorestartに設定することもできます。この場合、キャッシュ・エージェントを手動で起動するには、ttCacheStart組込みプロシージャをコールするか、ttAdmin -cacheStartユーティリティ・コマンドを実行する必要があります。また、手動で停止するには、ttCacheStop組込みプロシージャをコールするか、ttAdmin -cacheStopユーティリティ・コマンドを実行する必要があります。

norestart起動ポリシーを使用しているときは、データベースの無効化などの障害が発生した後、データベースがリカバリされても、キャッシュ・エージェントは自動的に再起動されません。 ttCacheStart組込みプロシージャをコールするか、ttAdmin -cacheStartユーティリティ・コマンドを実行して、キャッシュ・エージェントを手動で再起動する必要があります。 障害発生時にデータベースがキャッシュ・グリッドにアタッチされていた場合も、データベースのリカバリ時に自動的にそのグリッドに再アタッチされることはありません。 ttGridAttach組込みプロシージャをコールして、データベースをグリッドに再アタッチする必要があります。

例3-15 キャッシュ・エージェント起動ポリシーの設定

キャッシュ・エージェント起動ポリシーは、キャッシュ・マネージャ・ユーザーとしてttCachePolicySet組込みプロシージャをコールすることによって、プログラムで設定できます。

Command> call ttCachePolicySet('always');

また、CACHE_MANAGER権限を持つTimesTen外部ユーザーとしてttAdmin -cachePolicyユーティリティ・コマンドを実行することによって、コマンドラインから設定することもできます。

% ttAdmin -cachePolicy norestart cachealone1