Oracle DatabaseとTimesTen Scaleoutシステムの設定
キャッシュ・グループを作成するには、まずTimesTen Scaleoutをインストールしてから、OracleデータベースおよびTimesTen Scaleoutシステムを両方とも構成する必要があります。
「TimesTen Scaleoutの前提条件とインストール」を参照してください。
ノート:
TimesTenデータベースとOracleデータベースは別々のシステムに置き、これらの間でリソースの競合が発生しないようにすることをお薦めします。TimesTenは、インメモリー・データベースであるため、大量のメモリーを使用します。また、ワークロードによっては大量のCPU時間を使用したり、大量のI/O生成することがあります。
TimesTenに、接続先のOracleデータベース、Oracleデータベースへの接続時に使用する資格証明、およびTimesTenデータベースとOracleデータベースの両方に表を所有するユーザーについて、情報を提供します。
Oracleデータベースでのユーザーと表領域の作成
Oracleデータベースでは、他のアプリケーションと共有しないキャッシュ管理オブジェクトの保存に使用するデフォルトの表領域を作成する必要があります。この表領域はキャッシュ管理のみに使用することをお薦めします。
Oracleデータベースで次のユーザーを作成します。
ノート:
-
トランザクション処理ワークロード・タイプにOracle Autonomous Database Serverlessを使用している場合は、事前構成済のデータベース・サービスLOWまたはTPを使用します。
-
マルチテナント・コンテナ・データベース(CDB)またはプラガブル・データベース(PDB)を使用している場合、キャッシュ管理ユーザーを作成し、CDBまたはPDBでこのユーザーに権限を付与する方法については、次の特定の手順に注意してください。
-
TimesTenデータベースにキャッシュするOracleデータベース表を所有する既存のスキーマ・ユーザーを識別します。
-
キャッシュ環境の管理および特定のキャッシュ・グループ・タイプの定義済動作の実行に使用される情報を格納するOracleデータベース・オブジェクトを作成して保守するキャッシュ管理ユーザーを作成します。
次に、デフォルト表領域、スキーマ・ユーザーおよびキャッシュ管理ユーザーの作成方法を示します。
-
オペレーティング・システムのシェルまたはコマンド・プロンプトから、Oracleデータベース・システムでSQL*Plusを起動します。必要なロールを作成するための権限があるOracleデータベース・ユーザーとしてOracleデータベースに接続し、Oracleデータベース上のキャッシュ管理ユーザーに、必要な権限を付与します。
% cd timesten_home/install/oraclescripts % sqlplus sys as sysdba Enter password: password
SYS
ユーザーは必要な権限を付与できるため、この例では、sysdba
ユーザーとしてsys
を使用します。トランザクション処理ワークロード・タイプの場合、かわりにadmin
ユーザーを使用します。適切な権限がある任意のOracleデータベース・ユーザーを使用できます。『Oracle TimesTen In-Memory Databaseキャッシュ・ガイド』のキャッシュ処理のキャッシュ管理ユーザーに必要な権限を参照してください。 -
非自律型Oracle Databaseの場合は、SQL*Plusを使用してデフォルトの表領域を作成します。次の例では、デフォルトの表領域の名前を
cachetblsp
としています。SQL> CREATE TABLESPACE cachetblsp DATAFILE 'tt_cache.f' SIZE 5G SEGMENT SPACE MANAGEMENT AUTO; Tablespace created.
トランザクション処理ワークロード・タイプ場合、このステップをスキップします。Oracle Autonomous Databaseは、データベースのデフォルト・データ表領域および一時表領域を自動的に構成します。表領域を追加、削除または変更することはできません。Oracle Autonomous Databaseは、記憶域サイズに応じて1つ以上の表領域を自動的に作成します。
-
TimesTenデータベースにキャッシュされるOracleデータベース表を所有するスキーマ所有者とともに、1つ以上の既存のスキーマを特定(または新しいスキーマを作成)します。キャッシュされる表は、新規でも既存でもかまいません。スキーマ所有者に、TimesTenデータベースにキャッシュされるOracleデータベースで表を作成するために必要な最小限の権限セットを付与します。この例では、
sales
スキーマ所有者が所有する表をキャッシュします。次のSQL*Plusの例では、
sales
ユーザーに必要な権限を付与します。SQL> GRANT CREATE SESSION, CREATE TABLE, CREATE CLUSTER, CREATE INDEXTYPE, CREATE OPERATOR TO sales;
-
SQL*Plusを使用してキャッシュ管理ユーザーを作成し、このユーザーに権限を付与します。
ノート:
マルチテナント・コンテナ・データベース(CDB)またはプラガブル・データベース(PDB)を使用している場合、キャッシュ管理者ユーザーは次のいずれかになります:
-
ローカル・ユーザー: ローカル・ユーザーは、単一のPDB内でのみ操作できるデータベース・ユーザーです。このユーザーが存在するPDB内でのみキャッシュ権限を割り当てる必要があります。
-
共通ユーザー: 共通ユーザーは、すべてのコンテナで認識されるデータベース・ユーザーで、CBDルートとCDB内の既存および将来のすべてのPDBで同じIDを持ちます。キャッシュを使用するCDBの各PDB内でキャッシュ権限を割り当てる必要があります。
-
キャッシュ管理ユーザーを作成し、キャッシュ管理オブジェクト用に作成したデフォルト表領域を指定します。
-
非自律型Oracleデータベースの場合、次のSQL*Plus例ではキャッシュ管理ユーザーを作成します。
SQL> CREATE USER cacheadmin IDENTIFIED BY orapwd DEFAULT TABLESPACE cachetblsp QUOTA UNLIMITED ON cachetblsp;
-
トランザクション処理ワークロード・タイプの場合、次のSQL*Plus例ではキャッシュ管理ユーザーを作成します。
SQL> CREATE USER cacheadmin IDENTIFYED BY orapwd QUOTA UNLIMITED ON DATA;
-
-
SQL*Plusスクリプト
timesten_home
/install/oraclescripts/grantCacheAdminPrivileges.sql
を実行して、キャッシュ・グループ操作の実行に必要な最小限の権限セットをキャッシュ管理ユーザーに付与します。ノート:
マルチテナント・コンテナ・データベース(CDB)またはプラガブル・データベース(PDB)を使用している場合は、
grantCacheAdminPrivileges.sql
スクリプトを実行して、次のようにキャッシュ権限を割り当てます。-
キャッシュ管理者ユーザーがローカル・ユーザーの場合: このユーザーが存在するPDB内でのみキャッシュ権限を割り当てる必要があります。これは望ましい方法です。
-
キャッシュ管理者ユーザーが共通ユーザーの場合: キャッシュを使用するCDBの各PDB内でキャッシュ権限を割り当てる必要があります。CBDルートで共通ユーザーに権限を付与するSQL*Plusスクリプトを実行しないでください。
非自律型Oracleデータベースの場合、次の例では、
cacheadmin
をキャッシュ管理ユーザー名としてgrantCacheAdminPrivileges.sql
スクリプトに渡します:ノート:
timesten_home
/install/oraclescripts/grantCacheAdminPrivileges.sql
スクリプトを実行するユーザーに必要な権限と、このユーザーがキャッシュ管理ユーザーに付与する権限については、このスクリプト内のコメントを参照してください。SQL> @grantCacheAdminPrivileges "cacheadmin" Please enter the administrator user id The value chosen for administrator user id is CACHEADMIN ***************** Creation of TT_CACHE_ADMIN_ROLE starts ****************** 0. Creating TT_CACHE_ADMIN_ROLE role ** Creation of TT_CACHE_ADMIN_ROLE done successfully ** ***************** Initialization for cache admin begins ****************** 0. Granting the CREATE SESSION privilege to CACHEADMIN 1. Granting the TT_CACHE_ADMIN_ROLE to CACHEADMIN 2. Granting the DBMS_LOCK package privilege to CACHEADMIN 3. Granting the DBMS_DDL package privilege to CACHEADMIN 4. Granting the DBMS_FLASHBACK package privilege to CACHEADMIN 5. Granting the CREATE SEQUENCE privilege to CACHEADMIN 6. Granting the CREATE CLUSTER privilege to CACHEADMIN 7. Granting the CREATE OPERATOR privilege to CACHEADMIN 8. Granting the CREATE INDEXTYPE privilege to CACHEADMIN 9. Granting the CREATE TABLE privilege to CACHEADMIN 10. Granting the CREATE PROCEDURE privilege to CACHEADMIN 11. Granting the CREATE ANY TRIGGER privilege to CACHEADMIN 12. Granting the GRANT UNLIMITED TABLESPACE privilege to CACHEADMIN 13. Granting the DBMS_LOB package privilege to CACHEADMIN 14. Granting the SELECT on SYS.ALL_OBJECTS privilege to CACHEADMIN 15. Granting the SELECT on SYS.ALL_SYNONYMS privilege to CACHEADMIN 16. Checking if the cache administrator user has permissions on the default tablespace Permission exists 18. Granting the CREATE TYPE privilege to CACHEADMIN 19. Granting the SELECT on SYS.GV$LOCK privilege to CACHEADMIN 20. Granting the SELECT on SYS.GV$SESSION privilege to CACHEADMIN 21. Granting the SELECT on SYS.DBA_DATA_FILES privilege to CACHEADMIN 22. Granting the SELECT on SYS.USER_USERS privilege to CACHEADMIN 23. Granting the SELECT on SYS.USER_FREE_SPACE privilege to CACHEADMIN 24. Granting the SELECT on SYS.USER_TS_QUOTAS privilege to CACHEADMIN 25. Granting the SELECT on SYS.USER_SYS_PRIVS privilege to CACHEADMIN 26. Granting the SELECT on SYS.V$DATABASE privilege to CACHEADMIN (optional) 27. Granting the SELECT on SYS.V$SESSION privilege to CACHEADMIN (optional) 28. Granting the SELECT on SYS.V$PROCESS privilege to CACHEADMIN (optional) 29. Granting the SELECT ANY TRANSACTION privilege to CACHEADMIN ********* Initialization for cache admin user done successfully ********* SQL> exit
トランザクション処理ワークロード・タイプの場合、かわりにステップ16が表示されます:
16. Checking if the cache administrator user has permissions on the default tablespace No existing permission.
Oracle Autonomous Databaseは、表領域を自動的に構成します。したがって、この許可は必要ありません。
-
-
『Oracle TimesTen In-Memory Databaseキャッシュ・ガイド』のOracleデータベース・ユーザーおよびデフォルト表領域の作成を参照してください。
TimesTenデータベースの作成
TimesTenデータベースを作成およびオープンする前に、データベース定義を作成します。
TimesTenデータベースの作成には次のタスクが含まれます。
TimesTenデータベースのデータベース定義の作成
Oracleデータベース内のデータをキャッシュするTimesTenデータベース用のデータベース定義ファイルを作成する場合は、接続属性の設定に特に注意してください。
-
OracleNetServiceName
は、Oracleデータベース・インスタンスのネット・サービス名に設定する必要があります。 -
PermSize
には、データベースの永続領域の割当てサイズをMBで指定します。PermSize
を、キャッシュ・グループや索引などのすべてのデータを格納するのに十分な大きさに設定します。PermSize
値は、マシン上の物理RAMより小さくする必要があります。PermSize
は、数GBから数TBまでの値にできます。デフォルトは32 MBです。 -
DatabaseCharacterSet
は、Oracleデータベースの文字セットと一致する必要があります。任意のユーザーとしてSQL*Plusで次の問合せを実行すると、Oracle Database文字セットを確認できます。
SQL> SELECT value FROM nls_database_parameters WHERE parameter='NLS_CHARACTERSET';
-
CacheAdminWallet
を1に設定すると、ttGridAdmin dbCacheCredentialSet
コマンドに登録されているOracleキャッシュ管理ユーザーの資格証明がOracle Walletに格納されます。
次の例では、database1.dbdef
というデータベース定義ファイルの内容を示します。このファイルでは、次のことが定義されています。
-
チェックポイント・ファイルのフルパスは
/disk1/databases/database1
-
ログ・ファイルのディレクトリは
/disk2/logs
-
データベース文字セットは
AL32UTF8
-
各要素の永続メモリー領域は32 GB
-
各要素の一時メモリー領域は4 GB
-
各要素の内部トランザクション・ログ・バッファは1 GB
-
データベースへのユーザー指定同時接続の上限は3072
-
OracleNetServiceName
はinst1に設定されている。 -
CacheAdminWallet
を1に設定します。
DataStore=/disk1/databases/database1
LogDir=/disk2/logs
DatabaseCharacterSet=AL32UTF8
PermSize=32768
TempSize=4096
LogBufMB=1024
Connections=3072
OracleNetServiceName=inst1
CacheAdminWallet=1
「データベース定義の作成」を参照してください。
TimesTenデータベースの作成とオープン
キャッシュの接続属性を含めてデータベース定義を作成した後は、TimesTenデータベースの作成とオープンに必要な残りのタスクを実行できます。
『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』の「データベースの作成」を参照してください。
tnsnames.oraファイルへのOracle Databaseネット・サービス名の追加
TimesTen Scaleoutでキャッシュ環境を設定するときには、データベース内のすべてのインスタンスがOracleデータベースにアクセスできる必要があります。
トランザクション処理ワークロード・タイプの場合、事前構成済データベース・サービスLOWまたはTPを使用します:
-
databasename_low
-
databasename_tp
Oracle Databaseのtnsnames.ora
ファイルでは、アプリケーションが接続するOracle Net Servicesを定義します。ttGridAdmin
TNSNamesImport
コマンドを使用して、TimesTenデータベース内のすべてのインスタンスにtnsnames.ora
をインポートします。
ノート:
SQLNetパラメータを追加する必要がある場合は、sqlnet.ora
ファイルを作成し、ttGridAdmin
SQLNetImport
コマンドを使用してインポートします。
『Oracle TimesTen In-Memory Databaseリファレンス』のTNS名のインポート(TNSNamesImport)またはSqlnetファイルのインポート(SQLNetImport)を参照してください。
TimesTenデータベースでのユーザーの作成
キャッシュを使用するには、Oracleデータベース・ユーザーの他に、特定のTimesTenユーザーを作成する必要があります。
-
TimesTenキャッシュ管理ユーザーがキャッシュ・グループ処理を実行します。TimesTenキャッシュ管理ユーザーは、キャッシュされたOracleデータベース表にアクセスできるOracle Databaseキャッシュ管理ユーザーと同じ名前である必要があります。キャッシュ管理ユーザーのパスワードは、コンパニオンOracleデータベース・キャッシュ管理ユーザーのパスワードとは異なってもかまいません。『Oracle TimesTen In-Memory Databaseキャッシュ・ガイド』のTimesTenユーザーの作成を参照してください。
-
1人以上のキャッシュ・ユーザーがキャッシュ表を所有します。TimesTenデータベースにキャッシュされるOracleデータベース表を現在所有しているか今後所有することになるスキーマ・ユーザーごとに、Oracleデータベース・スキーマ・ユーザーと同じ名前でTimesTenキャッシュ・ユーザーを作成する必要があります。キャッシュ・ユーザーのパスワードは、同じ名前を持つOracleデータベース・スキーマ・ユーザーとは別のパスワードにすることができます。
TimesTenキャッシュ表の所有者および名前は、対応するキャッシュされたOracleデータベース表の所有者および名前と同じです。
TimesTenデータベース上のデータ・インスタンスの1つで、直接接続可能オブジェクトを使用して接続します。TimesTenキャッシュ管理ユーザーを作成し、このユーザーに、キャッシュ・グループの作成とそのキャッシュ・グループに対する操作の実行に必要な最小限の権限セットを付与します。次の例では、TimesTenキャッシュ管理ユーザー名をcacheadmin
としていますが、これは以前に作成したOracleキャッシュ管理ユーザーと同じ名前です。
ttisql "DSN=database1"
Command> CREATE USER cacheadmin IDENTIFIED BY ttpwd;
Command> GRANT CREATE SESSION, CACHE_MANAGER, CREATE ANY TABLE TO cacheadmin;
次に、キャッシュ・ユーザーを作成します。次の例では、キャッシュ・ユーザー名をsales
としていますが、これは、キャッシュする表を持つOracleデータベース・スキーマ・ユーザーと同じ名前です。
Command> CREATE USER sales IDENTIFIED BY ttpwd;
TimesTenキャッシュ管理ユーザーに必要な権限は、キャッシュ・グループに対して実行する処理によって異なります。『Oracle TimesTen In-Memory Databaseキャッシュ・ガイド』のTimesTenユーザーの作成を参照してください。
TimesTenユーザーおよび権限の詳細は、『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』のTimesTenユーザーの管理を参照してください。
TimesTenデータベースの接続可能オブジェクトの作成
OracleデータベースからデータをキャッシュするTimesTenデータベースの接続可能オブジェクトを作成する場合は、接続属性の設定に特に注意します。
これらの接続属性はすべて、他に示されていないかぎり、接続可能オブジェクトまたは接続文字列で設定できます。
-
UID
には、キャッシュされたOracleデータベース表にアクセスできるOracleデータベース・キャッシュ管理ユーザーと同じ名前のTimesTenキャッシュ管理ユーザーの名前を指定します。UID
接続属性は、直接接続可能オブジェクト、クライアント/サーバー接続可能オブジェクトまたは接続文字列で指定できます。 -
PwdWallet
は、ユーザーの資格証明が格納されるウォレットの場所を示します。TimesTenユーザー名とパスワードをウォレットに格納できます。キャッシュ管理者ユーザーおよびそれぞれのパスワードをウォレットに格納することもできます。これは、キャッシュ操作の実行およびOracleデータベースへの接続時に必要です。ウォレットに資格証明を指定することは、クライアントDSNまたは接続文字列でパスワードを指定するよりも安全です。 -
資格証明の指定に
PwdWallet
を使用していない場合は、次を使用できます。-
PWD
には、UID
接続属性で指定したTimesTenキャッシュ管理ユーザーのパスワードを指定します。 -
OraclePWD
には、UID
接続属性で指定したTimesTenキャッシュ管理ユーザーと同じ名前のOracle Databaseキャッシュ管理ユーザーのパスワードを指定します。
-
-
PassThrough
には、文をTimesTenデータベースで実行するかOracleデータベースにパススルーして実行するかの制御を設定できます。「パススルーの使用」を参照してください。 -
LockLevel
は、キャッシュではデータベース・レベル・ロックがサポートされていないため、デフォルトの0 (行レベル・ロック)に設定する必要があります。
次の例では、キャッシュを使用する接続可能オブジェクトの作成方法を示します。
-
接続文字セット、
OracleNetServiceName
、接続のためにウォレットに保存されたキャッシュ管理ユーザー資格証明を設定する接続可能ファイルを作成します。この接続可能オブジェクト・ファイルの名前は
database1CS.connect
です。このファイルは、接続文字セットとしてAL32UTF8
、キャッシュ管理ユーザー名としてcacheadmin
、キャッシュ管理ユーザー資格証明として/wallets/cacheadminwallet
を使用したウォレットの場所を設定します。ConnectionCharacterSet=AL32UTF8 OracleNetServiceName=inst1 UID=cacheadmin PwdWallet=/wallets/cacheadminwallet
ノート:
ウォレットを指定する前に、ユーザー資格証明のウォレットを作成する必要があります。Oracle Walletにユーザー資格証明を追加する方法については、『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』のOracle Walletでのキャッシュ管理ユーザー名およびパスワードの指定を参照してください。
ウォレットを指定する場合は、ユーザーが接続可能オブジェクトにアクセスするすべてのデータ要素の同じパスにウォレットが存在する必要があります。
-
ttGridAdmin connectableCreate
コマンドにより、接続可能オブジェクト・ファイルに基づいて接続可能オブジェクトが作成されます。database1CS.connect
接続可能オブジェクト・ファイルに基づいて、database1CS
接続可能オブジェクトを作成します。% ttGridAdmin connectableCreate -dbdef database1 -cs /mydir/database1CS.connect Connectable database1CS created.
-
現在のバージョンのモデルに
database1CS
接続可能オブジェクトの作成を適用して、接続可能オブジェクトを使用できるようにします。% ttGridAdmin modelApply ... Updating grid state...................................................OK Pushing new configuration files to each instance......................OK ... ttGridAdmin modelApply complete
『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』のOracle Walletでのキャッシュ管理ユーザー名およびパスワードの指定、および「接続可能オブジェクトの作成」を参照してください。
TimesTenデータベースでのキャッシュ管理ユーザーの名前およびパスワードの登録
TimesTenで、Oracleデータベースへの接続時に使用する資格証明が認識されている必要があります。同じデータベース内のすべてのインスタンスで、Oracleデータベースへの接続時に、同じOracleキャッシュ管理ユーザーIDとパスワードが使用される必要があります。
アクティブ管理インスタンスでttGridAdmin dbCacheCredentialSet
コマンドを使用して、TimesTenデータベースでOracleキャッシュ管理ユーザーの名前とパスワードを登録します。CacheAdminWallet
=1に設定すると、キャッシュ管理ユーザー資格証明はOracle Walletに格納されます。それ以外の場合、資格証明はメモリーに格納されます。
% ttGridAdmin dbCacheCredentialSet database1
Enter your Oracle user id: cacheadmin
Enter Oracle password:
Password accepted
Configuring cache.....................................................OK
プロンプトが表示されたら、Oracleデータベース・ユーザーIDとしてキャッシュ管理ユーザー名を指定し、Oracleデータベース・パスワードとしてキャッシュ管理ユーザーのパスワードを指定します。
Oracleキャッシュ管理ユーザーの名前およびパスワードは、TimesTenデータベースに1回のみ登録する必要があります。『Oracle TimesTen In-Memory Databaseキャッシュ・ガイド』のTimesTenデータベースでのキャッシュ管理ユーザー名およびパスワードの設定を参照してください。
ttGridAdmin dbCacheCredentialSet
コマンドを使用して、Oracleキャッシュ管理ユーザーの名前とパスワードを変更することもできます。このパスワードは、いつでも変更できます。キャッシュ管理ユーザー名は、TimesTenデータベースにキャッシュ・グループがない場合にのみ変更できます。『Oracle TimesTen In-Memory Databaseキャッシュ・ガイド』のキャッシュ・ユーザー名およびパスワードの変更を参照してください。