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

前
 
次
 

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

次の各項では、TimesTenデータベースへのOracle Databaseデータのキャッシュを開始するために、TimesTenシステムおよびOracle Databaseシステムを設定するためのタスクについて説明します。

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

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

  • Oracle 11gリリース2(11.2.0.2.0以上)

  • Oracle 11g リリース1(11.1.0.7.0以上)

  • Oracle 10gリリース2(10.2.0.5.0以上)

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

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


注意:

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

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

TimesTen Application-Tier Database Cacheの環境変数(UNIX)

LD_LIBRARY_PATHSHLIB_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

TimesTen Application-Tier Database Cacheの環境変数(Microsoft Windows)

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

  • Oracle_install_dir\bin

  • TimesTen_install_dir\lib

  • TimesTen_install_dir\bin

次の例では、Oracle Databaseは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 Databaseユーザーの作成

デフォルトの表領域およびキャッシュ操作に関する情報を格納するOracle Database表の所有者となるユーザーtimestenを作成する必要があります。

timestenユーザーのデフォルトの表領域を作成または指定しますが、この表領域が、引数としてinitCacheGlobalSchema.sqlスクリプトに渡されます。この表領域は、他のアプリケーションと共有しないTimesTen Application-Tier Database Cache管理オブジェクトの格納に使用されます。TimesTenでキャッシュしたOracle実表も格納できますが、キャッシュ管理のために、この表領域をTimesTenのみで使用することを強く推奨します。

次を作成するSQL*PlusスクリプトTimesTen_install_dir/oraclescripts/initCacheGlobalSchema.sqlを実行します。

  • timestenユーザー

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

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

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

例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 Database表の所有者となる、1人以上のユーザーを作成または指定します。これらのユーザーはスキーマ・ユーザーです。既存ユーザーまたは新規ユーザーをスキーマ・ユーザーにすることができます。キャッシュされる表は、新規でも既存でもかまいません。

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

sysユーザーとして、次のSQL*Plusの例では、スキーマ・ユーザーorattを作成します。

SQL> CREATE USER oratt IDENTIFIED BY oracle;

次に、TimesTenデータベースのキャッシュ環境(構成されている場合はキャッシュ・グリッドを含みます)を管理するために使用される情報を格納するOracle Databaseオブジェクトを作成、所有および保持するユーザーを作成し、特定のキャッシュ・グリッド・タイプの定義済動作を実行する必要があります。このようなユーザーは、キャッシュ管理ユーザーと呼ばれます。


注意:

各TimesTenデータベースは、Oracle Databaseの1人のキャッシュ管理ユーザーによってのみ管理が可能です。ただし、1人のキャッシュ管理ユーザーは、複数のTimesTenデータベースを管理できます。1人以上のキャッシュ管理ユーザーを指定できますが、その場合は、それぞれが1つ以上のTimesTenデータベースを管理します。

詳細は、「2つ以上のTimesTenデータベースにおける同じOracle表のキャッシュ」を参照してください。


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


注意:

複数のキャッシュ管理ユーザーを作成する場合は、各キャッシュ管理ユーザーは、デフォルトの表領域として同じまたは別の表領域を使用できます。

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


注意:

自動リフレッシュ・キャッシュ・グループとは、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 Databaseユーザーへの権限の付与

キャッシュ管理ユーザーには、作成したキャッシュ・グループ・タイプおよびそのキャッシュ・グループで実行する操作に応じて、高レベルの権限を付与する必要があります。SQL*PlusスクリプトTimesTen_install_dir/oraclescripts/grantCacheAdminPrivileges.sqlsysユーザーで実行して、キャッシュ・グリッド処理およびキャッシュ・グループ処理を実行するために必要な最小限の権限セットをキャッシュ管理ユーザーに付与できます。このSQLスクリプトの詳細は、「Oracle Databaseデータのキャッシュ管理に使用されるOracle Databaseオブジェクトの自動作成」を参照してください。

このユーザーの各キャッシュ操作に必要な権限のリスト全体は、表A-1の最初の列にリストされています(詳細は「キャッシュ管理ユーザーおよびキャッシュ・マネージャ・ユーザーに必要な権限」を参照)。

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

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

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


注意:

また、セキュリティを確保するために、これらの表およびトリガーの自動作成に必要なRESOURCEおよびCREATE ANY TRIGGER権限をキャッシュ管理ユーザーに付与しない場合は、キャッシュ・グリッド処理またはキャッシュ・グループ処理を実行する前に、これらのオブジェクトを手動で作成することもできます(「Oracle Databaseデータのキャッシュ管理に使用されるOracle Databaseオブジェクトの手動による作成」を参照)。

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

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

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

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

SQL> @grantCacheAdminPrivileges "cacheuser"
SQL> exit

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

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

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

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

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

  • 特定のキャッシュ環境(構成されている場合はキャッシュ・グリッドを含む)に関連付けられたTimesTenデータベースの情報の格納。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Oracle Databaseデータをキャッシュするための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」ダイアログ・ボックスにある「TimesTen Cache」タブの「Oracle Net Service Name」フィールドで指定します。

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

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

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

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

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


    注意:

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

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

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

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

  • ReplicationApplyOrderingおよびCacheAWTParallelismでは、AWTキャッシュ・グループのTimesTenキャッシュ表に対して行われた変更を対応するOracle Database表へ伝播するパラレル伝播を制御します。「Oracle Database表へのパラレル伝播の構成」を参照してください。

  • CacheGridEnableでは、グローバル・キャッシュ・グループを管理するためにキャッシュ・グリッドを作成するかどうかを構成します。キャッシュ・グリッドを使用する予定がない場合は0を、キャッシュ・グリッドを使用する予定がある場合は1を設定します。

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

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

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

TimesTenユーザーの作成

最初に、キャッシュ・グリッド処理(構成されている場合)およびキャッシュ・グループ処理を実行するユーザーを作成する必要があります。このようなユーザーは、キャッシュ・マネージャ・ユーザーと呼ばれます。TimesTenキャッシュ管理ユーザーは、キャッシュされたOracle Database表にアクセスできるコンパニオンOracle Databaseユーザーと同じ名前である必要があります。たとえば、コンパニオンOracle Databaseユーザーは、キャッシュされたOracle Database表から選択して更新する権限を持っている必要があります。コンパニオンOracle Databaseユーザーは、キャッシュ管理ユーザー、スキーマ・ユーザーまたはその他の既存ユーザーにすることができます。使いやすくするために、キャッシュ管理ユーザーをキャッシュ・マネージャ・ユーザーのコンパニオンOracle Databaseユーザーにすることをお薦めしますが、キャッシュ管理ユーザーに割り当てられる高レベルの権限が心配な場合は、コンパニオンOracleユーザーには別のOracle Databaseユーザーを選択してください。キャッシュ・マネージャ・ユーザーのパスワードは、同じ名前を持つコンパニオンOracle Databaseユーザーとは別のパスワードにすることができます。


注意:

TimesTenデータベースには複数のキャッシュ・マネージャ・ユーザー(各TimesTen DBAごとに1人など)を作成できます。ただし、この特定のTimesTenデータベースのOracle Databaseには1人のキャッシュ管理ユーザーのみを定義できます。(Oracle Databaseに接続するすべてのTimesTenデータベースに同じキャッシュ管理ユーザーを使用するか、TimesTenデータベースごとに別のキャッシュ管理ユーザーを定義できます。)複数のキャッシュ・マネージャ・ユーザーを作成する場合、このうちの1人以上のユーザーは、キャッシュ管理ユーザーをコンパニオンOracleユーザーとして使用できます。

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

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

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

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

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

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

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

TimesTenユーザーに必要な権限は、作成するキャッシュ・グループのタイプおよびキャッシュ・グループに対して実行する処理によって異なります。各キャッシュ処理のためにTimesTenのキャッシュ・マネージャ・ユーザーに必要なすべての権限は、表A-1の2番目の列にリストされています。

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

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

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

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

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

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

  • キャッシュ・マネージャ・ユーザーによって所有されるキャッシュ・グループの作成(CACHE_MANAGER権限で継承されるCREATE CACHE GROUPorattキャッシュ表ユーザーが所有する基本となるキャッシュ表を作成するためのCREATE ANY TABLE)。

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

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

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

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


注意:

AWTまたは読取り専用グループと連携するためにTimesTenデータベースを接続する場合は、TimesTenでは、これらのキャッシュ・グループにかわってOracle Databaseに接続する際にttCacheUidPwdSet組込みプロシージャで設定した資格証明が使用されます。

SWTまたはユーザー管理のキャッシュ・グループ処理やパススルー処理と連携するためにTimesTenデータベースに接続する場合、TimesTenは、ユーザーの現在の資格証明をユーザー名に、OraclePwd接続属性をOracleパスワードに使用してOracle Databaseに接続します。そのため、Oracle Databaseへの接続に使用される正しいユーザー名およびOracle Databaseのパスワードは、接続文字列または接続属性を使用して正しく設定する必要があります。


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

データベースにキャッシュ・グループが存在する場合は、キャッシュ管理ユーザーの名前は変更できません。キャッシュ管理ユーザーを削除して再作成する前に、キャッシュ・グループを削除する必要があります。詳細は、「キャッシュ・ユーザー名およびパスワードの変更」を参照してください。

例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ユーティリティによってキャッシュ管理ユーザーのパスワードを入力するように求められます。

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

データ管理の構成

キャッシュされたデータをTimesTenが管理する方法は、1つのTimesTenデータベースでのローカルに管理するか、複数のTimesTenインメモリー・データベースでグローバルに管理するかのいずれかで構成できます。

  • データをローカルで管理します(この場合、各TimesTenインメモリー・データベースは他のTimesTenインメモリー・データベースとは別個に動作します)。このオプションは簡単ですが、TimesTenでは、TimesTenインメモリー・データベースすべてにわたるデータの一貫性が管理されません。詳細は、「ローカルでのデータの管理」を参照してください。

  • キャッシュ・グリッドを使用し、複数のTimesTenインメモリー・データベースにわたってデータをグローバルに管理します。これはデフォルトの方法です。キャッシュ・グリッドとは、グローバル・キャッシュ・グループ内にあるアプリケーション・データをまとめて管理するTimesTen Cacheデータベースの集合のことです。キャッシュ・グリッドには一連の分散TimesTenインメモリー・データベースがあり、Oracle Databaseからデータをキャッシュし、このTimesTenデータベースにあるグローバル・キャッシュ・グループのキャッシュ一貫性を確保するために連携します。詳細は、「キャッシュ・グリッドの構成」を参照してください。

ローカルでのデータの管理

グローバル・キャッシュ・グループを使用する場合は、キャッシュ・グリッドを作成する必要はありません。この場合は、CacheGridEnable接続属性を0に設定します(「TimesTenデータベースのDSNの定義」に説明するとおり、DSNで構成できます)。

この接続属性では、グローバル・キャッシュ・グループを使用しないことが指定されています。一度設定したら、TimesTenでは、データベース内にキャッシュ・グループを作成する前に、キャッシュ・グリッドを作成したり、そのグリッドにTimesTenデータベースを関連付ける必要はありません。


注意:

同じOracle Databaseと対話する複数のTimesTenインメモリー・データベースを作成できますが、それぞれが独立して動作します。そのため、別個のTimesTenデータベースにキャッシュされたデータは、Oracle Databaseと個別に対話します。

読取りおよび書込みデータの一貫性とデータベース・トランザクションの予測可能な待機時間を保持しながら、複数のTimesTenデータベースにまたがってデータを拡大する必要がある場合は、キャッシュ・グリッドを使用してください。


このオプションを使用すると、そのデータベース内にグローバル・キャッシュ・グループは作成できません。将来のある時点で、キャッシュ・グリッド内でグローバル・キャッシュ・グループを使用する場合は、次の手順を実行してください。

  1. 既存のキャッシュ・グループをすべて削除します。

  2. キャッシュ・グリッドを作成し、TimesTenインメモリー・データベースをメンバーとして関連付けます(「キャッシュ・グリッドの概要」を参照)。

  3. 既存のキャッシュ・グループをすべて再作成します。

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

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

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

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

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


注意:

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

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

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


注意:

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

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


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

次の各項では、キャッシュ・マネージャ・ユーザーがTimesTenデータベースに対して実行する必要がある操作について説明します。

10個以上のグリッド・ノードに対するPROCESSESシステム・パラメータの変更

10個以上のノードを持つグリッドを作成する場合は、PROCESSES Oracle Databaseシステム・パラメータを変更します。次のガイドラインを使用します。

PROCESSES >= 10*GridMembers + DLConnections + OraBackgroundProcesses

各パラメータの意味は次のとおりです。

  • GridMembers = グリッド・メンバーの数

  • DLConnections = 動的ロード接続の数

  • OraBackgroundProcesses = Oracle Databaseバックグラウンド・プロセスの数

動的ロード接続の数は、動的キャッシュ・グループ処理を行うセッションの数によって決定されます。

Oracle Databaseシステム・パラメータの変更の詳細は、Oracle Databaseリファレンスのパラメータ・ファイルのパラメータ値の変更に関する説明を参照してください。Oracle Databaseバックグラウンド・プロセスの詳細は、Oracle Databaseリファレンスのバックグラウンド・プロセスに関する説明を参照してください。

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

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

データベースでキャッシュ・グループを作成する前に、TimesTenデータベースをキャッシュ・グリッドに関連付けることができます。キャッシュ・グリッドを使用しない場合は、CacheGridEnable接続属性を0に設定すると、キャッシュ・グリッドを作成して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のバージョンが返されます。バージョンが返されなかった場合は、次の設定が正しいかどうかを確認します。

  • OracleNetServiceName接続属性のOracleネット・サービス名の設定およびOracle Databaseサーバーの状態

  • LD_LIBRARY_PATHSHLIB_PATHなどの共有ライブラリ検索パスの環境変数の設定

  • TimesTenデータベースのキャッシュ管理ユーザー名の設定

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

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

Command> call ttCacheUidGet;

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

% ttAdmin -cacheUidGet cachealone1

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

キャッシュ・エージェントは、キャッシュ・グループのロードや自動リフレッシュなどのキャッシュ処理を実行したり、特定のキャッシュ・グループ・タイプの定義済動作を実行するために使用するOracle Databaseオブジェクトを管理する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 Databaseオブジェクト(変更ログ表やトリガーなど)をキャッシュ・エージェントがクリーンアップできるように、最低でも2分は待機してください。


注意:

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

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

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

  • manual

  • always

  • norestart

デフォルトの起動ポリシーは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組込みプロシージャをコールして、データベースをグリッドに再アタッチする必要があります。


注意:

詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のttAdmin、ttCachePolicySet、ttCacheStart、ttCachestopおよびttGridAttachに関する説明を参照してください。

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

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

Command> call ttCachePolicySet('always');

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

% ttAdmin -cachePolicy norestart cachealone1