この章では、TimesTenシステムおよびOracleシステムを設定して、TimesTenデータベースにOracleデータをキャッシュできるようにするためのタスクを示します。内容は次のとおりです。
Oracle In-Memory Database Cacheでは、次のリリースのOracleサーバーがサポートされています。
Oracle 11gリリース1(Windows x64を除くすべてのプラットフォーム)
Oracle 10gリリース2(10.2.0.4.0以上)
「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はサポートされていません。
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
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
この項では、sysユーザーがOracle Databaseで実行する必要があるタスクについて説明します。内容は次のとおりです。
最初に、キャッシュ・グリッドの情報が格納されるOracle表を所有する、ユーザーtimestenを作成する必要があります。 SQL*PlusスクリプトTimesTen_install_dir
/oraclescripts/initCacheGlobalSchema.sql
を使用して、次の項目を作成します。
timesten
ユーザー
キャッシュ・グリッドの情報を保存するために使用する、timesten
ユーザーが所有するOracle表
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オブジェクト」を参照してください。
Oracleユーザーに必要な権限は、作成するキャッシュ・グループのタイプおよびキャッシュ・グループに対して実行する処理によって異なります。 表3-1に、Oracleのキャッシュ管理ユーザーおよびTimesTenのキャッシュ・マネージャ・ユーザーに必要な権限をキャッシュ処理ごとに示します。
表3-1 キャッシュ処理に必要なOracleおよびTimesTenのユーザー権限
キャッシュ処理 | Oracleのキャッシュ管理ユーザーに必要な権限1 | TimesTenのキャッシュ・マネージャ・ユーザーに必要な権限2 |
---|---|---|
キャッシュ管理ユーザーの名前およびパスワードの設定
|
|
|
キャッシュ管理ユーザー名の取得
|
なし |
|
キャッシュ・グリッドの作成
|
|
|
TimesTenデータベースとキャッシュ・グリッドの関連付け
|
|
|
キャッシュ・グリッドへのTimesTenデータベースのアタッチ
|
|
|
キャッシュ・グリッドからのTimesTenデータベースのデタッチ
|
|
|
キャッシュ・グリッドからのノード・リストのデタッチ
|
|
|
キャッシュ・グリッドの破棄
|
|
|
キャッシュ・エージェントの起動
|
|
|
キャッシュ・エージェントの停止
|
なし |
|
キャッシュ・エージェント起動ポリシーの設定
|
|
|
キャッシュ・エージェント起動ポリシー設定を返す
|
|
なし |
レプリケーション・エージェントの起動
|
なし |
|
レプリケーション・エージェントの停止
|
なし |
|
レプリケーション・エージェント起動ポリシーの設定
|
なし |
|
CREATE [DYNAMIC] READONLY CACHE GROUP(AUTOREFRESH MODE INCREMENTALを指定) |
||
CREATE [DYNAMIC] READONLY CACHE GROUP(AUTOREFRESH MODE FULLを指定) |
|
|
CREATE [DYNAMIC] ASYNCHRONOUS WRITETHROUGH [GLOBAL] CACHE GROUP |
||
CREATE [DYNAMIC] SYNCHRONOUS WRITETHROUGH CACHE GROUP |
|
|
CREATE [DYNAMIC] USERMANAGED CACHE GROUP (後続の行に示す異なる処理を参照) |
|
|
CREATE [DYNAMIC] USERMANAGED CACHE GROUP(AUTOREFRESH MODE INCREMENTALを指定) |
||
CREATE [DYNAMIC] USERMANAGED CACHE GROUP(AUTOREFRESH MODE FULLを指定) |
|
|
CREATE [DYNAMIC] USERMANAGED CACHE GROUP(READONLYを指定) |
|
|
CREATE [DYNAMIC] USERMANAGED CACHE GROUP(PROPAGATEを指定) |
|
|
ALTER CACHE GROUP SET AUTOREFRESH STATE PAUSED |
|
|
ALTER CACHE GROUP SET AUTOREFRESH STATE ON |
|
|
ALTER CACHE GROUP SET AUTOREFRESH STATE OFF |
|
|
ALTER CACHE GROUP SET AUTOREFRESH MODE FULL |
|
|
ALTER CACHE GROUP SET AUTOREFRESH MODE INCREMENTAL |
|
|
ALTER CACHE GROUP SET AUTOREFRESH INTERVAL |
|
|
LOAD CACHE GROUP |
|
|
REFRESH CACHE GROUP |
|
|
FLUSH CACHE GROUP |
|
|
UNLOAD CACHE GROUP |
なし |
|
DROP CACHE GROUP |
|
|
同期ライトスルーまたは伝播 |
||
非同期ライトスルー |
||
増分自動リフレッシュ |
|
なし |
完全自動リフレッシュ |
|
なし |
動的ロード |
|
|
エージング |
なし |
|
LRUエージング属性の設定
|
なし |
|
Oracleオブジェクトを手動でインストールまたはアンインストールするOracle SQL文の生成
|
|
|
コミットされたキャッシュ表更新のOracleへの伝播の無効化または有効化
|
なし |
|
自動リフレッシュ・キャッシュ・グループに対する、キャッシュ・エージェントのタイムアウトおよびリカバリ方法の構成
|
|
|
AWTトランザクション・ログ・ファイルのしきい値の設定
|
なし |
|
AWTキャッシュ・グループの監視の有効化または無効化
|
なし |
|
キャッシュされたOracle表に対して発行されたDDL文の追跡の有効化または無効化
|
|
|
キャッシュ・グリッド情報を返す
|
|
|
キャッシュ・グリッド・ノード情報を返す
|
|
|
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ユーザーがその表を所有していない場合に必要です。
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オブジェクトを自動作成するには、キャッシュ管理ユーザーに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
ユーザーまたはキャッシュ管理ユーザーが所有している表、索引およびトリガーのリストが返されます。
この項では、インスタンス管理者またはキャッシュ・マネージャ・ユーザーがTimesTenデータベースで実行する必要がある処理について説明します。内容は次のとおりです。
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ではデータベース・レベル・ロックがサポートされていないためです。
最初に、キャッシュ・グリッド処理およびキャッシュ・グループ処理を実行するユーザーを作成する必要があります。 このようなユーザーは、キャッシュ・マネージャ・ユーザーと呼ばれます。 このユーザーは、キャッシュされた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のキャッシュ・マネージャ・ユーザーおよび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データベースとOracle Database間の接続をテストするには、パススルー・レベルを3に設定して、Oracle Databaseで処理される次の問合せをキャッシュ・マネージャ・ユーザーとして実行します。
Command> passthrough 3; Command> SELECT * FROM V$VERSION; Command> passthrough 0;
接続が正しく確立されている場合は、問合せによってOracle Databaseのバージョンが返されます。 バージョンが返されなかった場合は、次の設定が正しいかどうかを確認します。
OracleNetServiceName
DSN属性に設定されているOracleネット・サービス名およびOracleサーバーの状態
LD_LIBRARY_PATH、SHLIB_PATHなどの共有ライブラリ検索パスの環境変数の設定
TimesTenデータベースのキャッシュ管理ユーザー名の設定
キャッシュ・エージェントは、キャッシュ・グループのロードや自動リフレッシュなどのキャッシュ処理を実行したり、特定のキャッシュ・グループ・タイプの定義済動作を実行するために使用する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