Oracle DatabaseのオプションであるIn-Memory Database Cache(IMDB Cache)を使用すると、Oracle Databaseの表をTimesTenインメモリー・データベースにキャッシュできます。アプリケーションは、通常、頻繁にアクセスされるデータまたはパフォーマンスを重要視するデータを選択してキャッシュします。IMDB Cacheは、外部キー制約によって相互に関連付けられたキャッシュ表の集合を意味するキャッシュ・グループという概念を使用します。キャッシングおよびエージングの単位は外部キー制約によって関連付けられた一連のレコードになるため、これは重要な機能です。キャッシュされた各表は、Oracle Databaseの表全体または表のサブセットにマップされます。キャッシュ・グリッドは、アプリケーションのキャッシュ・データを集中管理するTimesTenデータベースの集合です。キャッシュ・グリッド(別名グリッド・メンバー)に関連する各キャッシュ・データベースは、1つ以上のキャッシュ・グループを含みます。グローバル・キャッシュ・グループは、キャッシュ・グリッド・メンバーで共有されるキャッシュ・グループです。キャッシュ・グリッド・メンバーは、peer-to-peerで相互に通信し、グローバル・キャッシュ・グループの一貫性を管理します。新しいキャッシュ・グリッド・メンバーをキャッシュ・グリッドに動的にアタッチしたり、キャッシュ・グリッドからデタッチできます。
このページの例では、Oracle DatabaseのHRサンプル・スキーマを使用します。例では、Oracle HRスキーマからTimesTenデータベースに表をキャッシュするためにIn-Memory Database Cacheを設定する方法について、手順を追ったチュートリアルが示されています。
Oracle Databaseにおける必須の構成
Oracle Databaseの表をIn-Memory Database Cacheにキャッシュするには、Oracle Databaseにキャッシュ管理ユーザーおよびTimesTenシステム表を作成する必要があります。次に、Oracle Databaseで行う必要のある構成手順の概要を示します。
1. | 新しい表領域の作成 | CREATE TABLESPACE文を使用して、In-Memory Database Cacheオブジェクトを管理するための専用の表領域を作成します。 |
2. | TimesTenユーザーの作成 | スクリプトinitCacheGlobalSchema.sqlを実行して、TimesTenユーザーを作成します。このユーザーは、キャッシュ・グリッドとそのグリッド・メンバーに関する情報を格納するOracle表を所有します。 |
3. | キャッシュ管理ユーザーの作成 | CREATE USER文を使用して、キャッシュ管理ユーザーを作成します。このユーザーは、Oracle Databaseとキャッシュ・データベースの間で変更を追跡します。 |
4. | キャッシュ管理ユーザーへのシステム権限の付与 | スクリプトgrantCacheAdminPrivileges.sql を実行して、キャッシュ管理ユーザーにシステム権限を付与します。キャッシュ管理ユーザーは、この権限を使用して、Oracle表のキャッシュを管理するためのオブジェクトを作成できます。 |
5. | キャッシュ管理ユーザーへのデータ・アクセス権の付与 | キャッシュ管理ユーザーは、キャッシュされる表にアクセスできる必要があります。GRANT文を使用して、必要なオブジェクト権限をキャッシュ管理ユーザーに付与します。 |
この例は、前述の構成手順を使用して、In-Memory Database Cacheとともに使用できるようOracle Databaseを構成する方法を示しています。
キャッシュ・データベースの設定方法
次に、TimesTenがインストールされて実行されるキャッシュ・データベースの構成手順を示します。
1. | データベースの作成 | Oracle表をキャッシュするには、キャッシュ・データベースのDatabaseCharacterSetが、Oracle Databaseで定義されているデータベース・キャラクタ・セットと同じである必要があります。DSN属性OracleNetServiceNameには、Oracle Databaseを指すTNSサービス名を含む必要があります。 |
2. | キャッシュ・マネージャ・ユーザーの作成 | CREATE USER文を使用して、キャッシュ・マネージャ・ユーザーを作成します。このユーザーには、ADMINまたはCACHE_MANAGER権限を付与する必要があります。キャッシュ・マネージャ・ユーザーは、キャッシュ・グリッドを設定および管理し、キャッシュ・グループ操作を行います。 |
3. | キャッシュ表ユーザーの作成 | キャッシュ対象のOracle表を持つユーザーは、キャッシュ・データベースにも存在する必要があります。CREATE USER文を使用して、キャッシュ表ユーザーを作成します。 |
4. | データベースへのOracleキャッシュ管理ユーザーの関連付け | プロシージャttCacheUidPwdSetを使用して、キャッシュ・データベースにOracleキャッシュ管理ユーザーの名前およびパスワードを設定します。 |
5. | キャッシュ・グリッドの作成 (1回のみ) |
組み込みプロシージャttGridCreateを使用して、キャッシュ・グリッドを作成します。この手順は、キャッシュ・グリッドの最初のデータベース・メンバーのみが実行する必要があります。 |
6. | キャッシュ・グリッドへのキャッシュ・データベースの関連付け | プロシージャttGridNameSetを使用して、現行のデータベースをキャッシュ・グリッドに関連付けます。 |
この例は、前述の構成手順を使用して、キャッシュ用にTimesTenデータベースを設定する方法を示しています。
キャッシュ・データベースにキャッシュ・グループを追加する方法
次に、TimesTenがインストールされて実行されるキャッシュ・データベースに、キャッシュ・グループを追加する手順を示します。
1. | キャッシュ・エージェントの起動 | キャッシュ・エージェント・プロセスが起動されていない場合は、組込みプロシージャttCacheStartを使用して起動します。 |
2. | キャッシュ・グループの定義 | CREATE CACHE GROUP文を使用して、キャッシュ・グループおよびキャッシュ表を定義します。 |
3. | レプリケーション・エージェントの起動 | 組込みプロシージャttRepStartを使用して、レプリケーション・エージェント・プロセスを起動します。この手順は、データベースに非同期WRITETHROUGHキャッシュ・グループがある場合にのみ実行する必要があります。 |
4. | キャッシュ・グリッドへの新しいグリッド・メンバーのアタッチ | プロシージャttGridAttachをコールして、キャッシュ・グリッドに現行のキャッシュ・データベースを追加します。この手順は、データベースがグローバル・キャッシュ・グループを含む場合か、またはグローバル・キャッシュ・グリッド操作が必要な場合にのみ必要です。 |
5. | キャッシュ・グループへのデータの事前ロード | LOAD CACHE GROUP文を使用して、Oracle Databaseのデータを含むキャッシュ・グループを事前にロードします。 |
この例は、前述の手順を使用して、キャッシュ・グループを作成し、作成したグループをキャッシュ・データベースに移入する方法を示しています。
ホーム | サイト・マップ | 連絡先 | Copyright © 2009 |