この章では、キャッシュ・グリッドを作成する方法について説明します。 キャッシュ・グループの作成および使用を把握するため、明示的にロードされる読取り専用ローカル・キャッシュ・グループおよび動的な更新可能グローバル・キャッシュ・グループを作成する方法について説明します。 また、キャッシュ表にデータを移入する方法、およびTimesTenデータベースのキャッシュ表とOracle Databaseのキャッシュ表間での更新の転送を監視する方法についても説明します。
この章の内容は次のとおりです。
キャッシュ・グリッドまたはキャッシュ・グループを作成するには、最初にTimesTenをインストールし、OracleシステムおよびTimesTenシステムを構成しておく必要があります。 TimesTenのインストールの詳細は、『Oracle TimesTen In-Memory Databaseインストレーション・ガイド』を参照してください。
次のタスクを実行します。
Oracle In-Memory Database Cacheを使用するには、Oracleユーザーをいくつか作成しておく必要があります。
1人以上のスキーマ・ユーザーは、TimesTenデータベースにキャッシュされるOracle表を所有します。既存ユーザーまたは新規ユーザーをスキーマ・ユーザーにすることができます。
キャッシュ管理ユーザーは、Oracleオブジェクトを作成し、保持します。これらのOracleオブジェクトには、キャッシュ・グリッドを管理し、特定のキャッシュ・グループ・タイプの定義済動作を実行するための情報が保存されます。
オペレーティング・システム・シェルまたはコマンド・プロンプトからOracleシステムでSQL*Plusを起動し、sys
ユーザーとしてOracle Databaseインスタンスに接続します。
% cd TimesTen_install_dir/oraclescripts % sqlplus sys as sysdba Enter password: password
SQL*Plusを使用して、timesten
ユーザーとキャッシュ管理ユーザーの両方が使用するデフォルトの表領域を作成します。 この表領域は、Oracle In-Memory Database Cacheのオブジェクトを保存するためにのみ使用し、他のアプリケーションと共有しないでください。 次に、SQL*PlusスクリプトTimesTen_install_dir
/oraclescripts/initCacheGlobalSchema.sql
を実行して、次の要素を作成します。
timesten
ユーザー
キャッシュ・グリッドの情報を保存するために使用する、timesten
ユーザーが所有するOracle表
デフォルトの表領域を引数としてinitCacheGlobalSchema.sql
スクリプトに渡します。 次の例では、デフォルトの表領域の名前をcachetblsp
としています。
SQL> CREATE TABLESPACE cachetblsp DATAFILE 'datfttuser.dbf' SIZE 100M; SQL> @initCacheGlobalSchema "cachetblsp"
次に、SQL*Plusを使用して、スキーマ・ユーザーを作成します。 このユーザーに、TimesTenデータベースにキャッシュされるOracle Databaseの表を作成するために必要な最小限の権限セットを付与します。 次の例では、スキーマ・ユーザーをoratt
としています。
SQL> CREATE USER oratt IDENTIFIED BY oracle; SQL> GRANT CREATE SESSION, RESOURCE TO oratt;
次に、SQL*Plusを使用して、次の処理を実行します。
キャッシュ管理ユーザーを作成します。
SQL*PlusスクリプトTimesTen_install_dir
/oraclescripts/grantCacheAdminPrivileges.sql
を実行して、キャッシュ・グリッド処理およびキャッシュ・グループ処理を実行するために必要な最小限の権限セットをキャッシュ管理ユーザーに付与します。
キャッシュ管理ユーザー名を引数としてgrantCacheAdminPrivileges.sql
スクリプトに渡します。 次の例では、キャッシュ管理ユーザー名をcacheuser
とし、そのデフォルトの表領域の名前をcachetblsp
としています。
SQL> CREATE USER cacheuser IDENTIFIED BY oracle 2 DEFAULT TABLESPACE cachetblsp QUOTA UNLIMITED ON cachetblsp; SQL> @grantCacheAdminPrivileges "cacheuser" SQL> exit
キャッシュ管理ユーザーが必要とする権限は、作成するキャッシュ・グループおよびそのキャッシュ・グループに対して実行する処理のタイプによって異なります。
timesten
ユーザー、スキーマ・ユーザーおよびキャッシュ管理ユーザーの詳細は、「Oracleユーザーの作成」を参照してください。
UNIXでは、ホーム・ディレクトリにある.odbc.ini
ファイルまたはTimesTen_install_dir
/info/sys.odbc.ini
ファイルで、TimesTen DSN cachealone1
を作成し、次の属性を設定します。
[cachealone1] DataStore=/users/OracleCache/alone1 PermSize=64 OracleNetServiceName=oracledb DatabaseCharacterSet=AL32UTF8
Windowsでは、TimesTenユーザーDSNまたはシステムDSN cachealone1
を作成し、次の属性を設定します。
データ・ストア・パスおよび名前: c:\temp\alone1
永続データのサイズ: 64
Oracleネット・サービス名: oracledb
データベース・キャラクタ・セット: AL32UTF8
これ以外のDSN属性にはデフォルト設定を使用します。
Oracle Databaseからデータをキャッシュするために使用するTimesTenデータベースのDSNを定義する方法の詳細は、「TimesTenデータベースのDSNの定義」を参照してください。
TimesTen DSNの詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のTimesTenデータ・ストアの作成に関する説明を参照してください。
注意: データ・ストアという用語は、TimesTenデータベースと同義で使用されます。 |
Oracle In-Memory Database Cacheを使用するには、Oracleユーザーの他に、TimesTenユーザーもいくつか作成しておく必要があります。
キャッシュ・マネージャ・ユーザーは、キャッシュ・グリッド処理およびキャッシュ・グループ処理を実行します。 TimesTenキャッシュ・マネージャ・ユーザーは、キャッシュされたOracle表にアクセスできるOracleユーザーと同じ名前である必要があります。 たとえば、Oracleユーザーには、キャッシュされたOracle表を選択し、更新するための権限が必要です。キャッシュ管理ユーザー、スキーマ・ユーザーまたは他の既存ユーザーをOracleユーザーにすることができます。キャッシュ・マネージャ・ユーザーのパスワードは、同じ名前を持つOracleユーザーとは別のパスワードにすることができます。
キャッシュ・マネージャ・ユーザーは、キャッシュ・グリッドを作成および構成し、キャッシュ・グループを作成します。 キャッシュ・グループのロードやリフレッシュなどの処理を実行できます。ただし、これらの処理は十分な権限を持つTimesTenユーザーも実行できます。 また、キャッシュ・マネージャ・ユーザーは、グリッド自体や、キャッシュ・グループに対して実行される非同期処理(例: 自動リフレッシュ)など、キャッシュ環境の様々な側面を監視することもできます。
1人以上のキャッシュ表ユーザーが、キャッシュ表を所有します。 TimesTenデータベースにキャッシュされるOracle表を現在所有しているか、または今後所有することになるスキーマ・ユーザーごとに、Oracleスキーマ・ユーザーと同じ名前でTimesTenキャッシュ表ユーザーを作成する必要があります。キャッシュ表ユーザーのパスワードは、同じ名前を持つOracleスキーマ・ユーザーとは別のパスワードにすることができます。
TimesTenキャッシュ表の所有者および名前は、対応するキャッシュされたOracle表の所有者および名前と同じです。
インスタンス管理者として、オペレーティング・システム・シェルまたはコマンド・プロンプトからTimesTenシステムでttIsql
ユーティリティを起動し、cachealone1
DSNに接続して、Oracle Databaseからデータをキャッシュするために使用するTimesTenデータベースを作成します。
% ttIsql cachealone1
ttIsql
を使用して、キャッシュ・マネージャ・ユーザーを作成します。 このユーザーに、キャッシュ・グリッドおよびキャッシュ・グループを作成し、そのキャッシュ・グループに対して処理を実行するために必要な最小限の権限セットを付与します。 次の例では、キャッシュ・マネージャ・ユーザー名をcacheuser
としています。この名前は、以前に作成したOracleキャッシュ管理ユーザーと同じ名前です。
Command> CREATE USER cacheuser IDENTIFIED BY timesten; Command> GRANT CREATE SESSION, CACHE_MANAGER, CREATE ANY TABLE TO cacheuser;
次に、ttIsql
を使用して、キャッシュ表ユーザーを作成します。 次の例では、キャッシュ表ユーザー名をoratt
としています。この名前は、以前に作成したOracleスキーマ・ユーザーと同じ名前です。
Command> CREATE USER oratt IDENTIFIED BY timesten; Command> exit
キャッシュ・マネージャ・ユーザーが必要とする権限は、作成するキャッシュ・グループおよびそのキャッシュ・グループに対して実行する処理のタイプによって異なります。 キャッシュ・マネージャ・ユーザーおよびキャッシュ表ユーザーの詳細は、「TimesTenユーザーの作成」を参照してください。
TimesTenユーザーおよび権限の詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のアクセス制御の管理に関する説明を参照してください。
ttIsql
ユーティリティを起動して、cachealone1
DSNにキャッシュ・マネージャ・ユーザーとして接続します。 接続文字列で、UID
属性にキャッシュ・マネージャ・ユーザー名を指定します (この例では、TimesTenキャッシュ・マネージャ・ユーザー名はOracleキャッシュ管理ユーザー名と同じです)。 接続文字列内で、PWD
属性にキャッシュ・マネージャ・ユーザーのパスワードを指定し、OraclePWD
属性にキャッシュ管理ユーザーのパスワードを指定します。
% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
ttIsql
を使用して、ttCacheUidPwdSet
組込みプロシージャをコールし、Oracleキャッシュ管理ユーザーの名前とパスワードを設定します。
Command> call ttCacheUidPwdSet('cacheuser','oracle');
キャッシュ管理ユーザーの名前とパスワードは、TimesTenデータベースに1回のみ設定する必要があります。 TimesTenデータベースがこの設定を使用する仕組みの詳細は、「キャッシュ管理ユーザーの名前およびパスワードの設定」を参照してください。
Oracleユーザー、TimesTenデータベースおよびTimesTenユーザーを作成し、Oracleキャッシュ管理ユーザーの名前とパスワードをTimesTenデータベースに設定した後、キャッシュ・グリッドを作成して、Oracle Databaseから表をキャッシュするTimesTenデータベースのフレームワークを定義する必要があります。
キャッシュ・マネージャ・ユーザーとして、ttIsql
ユーティリティを使用してttGridCreate
組込みプロシージャをコールし、キャッシュ・グリッドmyGrid
を作成します。
Command> call ttGridCreate('myGrid');
次に、ttIsql
を使用してttGridNameSet
組込みプロシージャをコールし、TimesTenデータベースをmyGrid
キャッシュ・グリッドに関連付けます。
Command> call ttGridNameSet('myGrid');
キャッシュ・グリッドの内容および機能の詳細は、「キャッシュ・グリッドの構成」を参照してください。
キャッシュ・グリッドを作成し、TimesTenデータベースをグリッドに関連付けると、キャッシュ・グループを作成する準備は完了です。 図2-1に示すように、読取り専用キャッシュ・グループを作成します。 次に、図2-2に示すように、ASYNCHRONOUS WRITETHROUGH(AWT)キャッシュ・グループを作成します。
次のタスクを完了して、読取り専用キャッシュ・グループおよびAWTキャッシュ・グループを作成します。
SQL*Plusを起動し、スキーマ・ユーザーとしてOracle Databaseに接続します。
% sqlplus oratt/oracle
SQL*Plusを使用して、表readtab
(図2-3を参照)および表writetab
(図2-4を参照)を作成します。
SQL> CREATE TABLE readtab (keyval NUMBER NOT NULL PRIMARY KEY, str VARCHAR2(32)); SQL> CREATE TABLE writetab (pk NUMBER NOT NULL PRIMARY KEY, attr VARCHAR2(40));
次に、SQL*Plusを使用して、数行をreadtab
表およびwritetab
表に挿入し、変更をコミットします。
SQL> INSERT INTO readtab VALUES (1, 'Hello'); SQL> INSERT INTO readtab VALUES (2, 'World'); SQL> INSERT INTO writetab VALUES (100, 'TimesTen'); SQL> INSERT INTO writetab VALUES (101, 'IMDB'); SQL> COMMIT;
次に、SQL*Plusを使用して、readtab
表に対するSELECT権限およびwritetab
表に対するSELECT、INSERT、UPDATE、DELETEの各権限をキャッシュ管理ユーザーに付与します。
SQL> GRANT SELECT ON readtab TO cacheuser; SQL> GRANT SELECT ON writetab TO cacheuser; SQL> GRANT INSERT ON writetab TO cacheuser; SQL> GRANT UPDATE ON writetab TO cacheuser; SQL> GRANT DELETE ON writetab TO cacheuser;
readtab
表に対するSELECT権限は、この表をキャッシュする読取り専用キャッシュ・グループを作成し、キャッシュされたOracle表からTimesTenキャッシュ表への自動リフレッシュ処理を実行するために必要です。
writetab
表に対するSELECT権限は、この表をキャッシュするAWTキャッシュ・グループを作成するために必要です。 writetab
表に対するINSERT、UPDATE、DELETEの各権限は、キャッシュされたOracle表へのTimesTenキャッシュ表からのライトスルー処理を実行するために必要です。
キャッシュ管理ユーザーが読取り専用キャッシュ・グループおよびAWTキャッシュ・グループを作成し、それぞれのグループに対して処理を実行するために必要な権限の詳細は、「Oracleユーザーへの権限の付与」を参照してください。
キャッシュ・マネージャ・ユーザーとして、ttIsql
ユーティリティを使用してttCacheStart
組込みプロシージャをコールし、TimesTenデータベースでキャッシュ・エージェントを起動します。
Command> call ttCacheStart;
キャッシュ・エージェントの起動方法の詳細は、「キャッシュ・エージェントの管理」を参照してください。
キャッシュ・マネージャ・ユーザーとして、ttIsql
ユーティリティを使用して、Oracle表oratt.readtab
をキャッシュする読取り専用キャッシュ・グループreadcache
(図2-5を参照)およびOracle表oratt.writetab
をキャッシュする動的AWTグローバル・キャッシュ・グループwritecache
(図2-6を参照)を作成します。
Command> CREATE READONLY CACHE GROUP readcache > AUTOREFRESH INTERVAL 5 SECONDS > FROM oratt.readtab > (keyval NUMBER NOT NULL PRIMARY KEY, str VARCHAR2(32)); Command> CREATE DYNAMIC ASYNCHRONOUS WRITETHROUGH GLOBAL CACHE GROUP writecache > FROM oratt.writetab > (pk NUMBER NOT NULL PRIMARY KEY, attr VARCHAR2(40));
キャッシュ・グループreadcache
およびwritecache
に加えて、それぞれのキャッシュ表oratt.readtab
およびoratt.writetab
が、TimesTenデータベースに作成されます。キャッシュ表の所有者および名前は、キャッシュされたOracle表と同じものとなります。
ttIsql
cachegroups
コマンドを使用して、readcache
キャッシュ・グループおよびwritecache
キャッシュ・グループの定義を表示します。
Command> cachegroups; Cache Group CACHEUSER.READCACHE: Cache Group Type: Read Only Autorefresh: Yes Autorefresh Mode: Incremental Autorefresh State: Paused Autorefresh Interval: 5 Seconds Autorefresh Status: ok Aging: No aging defined Root Table: ORATT.READTAB Table Type: Read Only Cache Group CACHEUSER.WRITECACHE: Cache Group Type: Asynchronous Writethrough global (Dynamic) Autorefresh: No Aging: LRU on Root Table: ORATT.WRITETAB Table Type: Propagate 2 cache groups found.
読取り専用キャッシュ・グループの詳細は、「読取り専用キャッシュ・グループ」を参照してください。
AWTキャッシュ・グループの詳細は、「ASYNCHRONOUS WRITETHROUGH(AWT)キャッシュ・グループ」を参照してください。
動的キャッシュ・グループの詳細は、「動的キャッシュ・グループ」を参照してください。
グローバル・キャッシュ・グループの詳細は、「グローバル・キャッシュ・グループ」を参照してください。
キャッシュ・マネージャ・ユーザーとして、ttIsql
ユーティリティを使用してttRepStart
組込みプロシージャをコールし、TimesTenデータベースでレプリケーション・エージェントを起動します。
Command> call ttRepStart;
レプリケーション・エージェントは、AWTキャッシュ・グループのTimesTenキャッシュ表にコミットされた更新を、キャッシュされたOracle表に伝播します。
レプリケーション・エージェントの起動方法の詳細は、「レプリケーション・エージェントの管理」を参照してください。
グローバル・キャッシュ・グループまたはそのキャッシュ表に対して処理を実行するには、グローバル・キャッシュ・グループが関連付けられているキャッシュ・グリッドにTimesTenデータベースをアタッチする必要があります。
キャッシュ・マネージャ・ユーザーとして、ttIsql
ユーティリティを使用してttGridAttach
組込みプロシージャをコールし、myGrid
キャッシュ・グリッドにTimesTenデータベースをアタッチします。
Command> call ttGridAttach(1,'alone1','mysys',5001);
この例で、alone1
はグリッド・メンバーを一意に識別するために使用する名前を、mysys
はTimesTenシステムのホスト名を、5001
はキャッシュ・エージェントのTCP/IPポートを示しています。 ttGridAttach
組込みプロシージャをコールすると、キャッシュ・エージェントがまだ実行中でない場合に、エージェントが自動的に起動されます。
この章の例には、唯一のグリッド・メンバーとしてスタンドアロンTimesTenデータベースが1つのみ含まれていますが、アクティブ・スタンバイ・ペアや他のスタンドアロンTimesTenデータベースなどをグリッド・メンバーとして追加することもできます。 既存のキャッシュ・グリッドに他のメンバーを作成および追加する方法、およびグリッド・メンバー間でグローバル・キャッシュ・グループのデータを共有する方法の詳細は、第6章「他のキャッシュ・グリッド・メンバーの作成」を参照してください。
この項では、読取り専用キャッシュ・グループを手動でロードする方法について説明します。 次に、TimesTenキャッシュ表にコミットされた更新を、キャッシュされたOracle表に自動的に伝播する方法について説明します。
次のタスクを完了して、読取り専用キャッシュ・グループに対して処理を実行します。
キャッシュ・マネージャ・ユーザーとして、ttIsql
ユーティリティを使用して、readcache
キャッシュ・グループのTimesTenキャッシュ表oratt.readtab
にOracle表oratt.readtab
の内容をロードします。
Command> LOAD CACHE GROUP readcache COMMIT EVERY 256 ROWS; 2 cache instances affected. Command> exit
ttIsql
ユーティリティを開始して、cachealone1
DSNにインスタンス管理者として接続します。 ttIsql
を使用して、oratt.readtab
キャッシュ表に対するSELECT権限をキャッシュ・マネージャ・ユーザーに付与して、このユーザーがこの表に対してSELECT問合せを発行できるようにします。
% ttIsql cachealone1 Command> GRANT SELECT ON oratt.readtab TO cacheuser; Command> exit
ttIsql
ユーティリティを起動して、cachealone1
DSNにキャッシュ・マネージャ・ユーザーとして接続します。 ttIsql
を使用して、oratt.readtab
キャッシュ表の内容を問い合せます。
% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle" Command> SELECT * FROM oratt.readtab; < 1, Hello > < 2, World > 2 rows found.
キャッシュ・グループを手動でロードする方法の詳細は、「キャッシュ・グループのロードおよびリフレッシュ」を参照してください。
Oracleスキーマ・ユーザーとしてSQL*Plusを使用して、Oracle表readtab
を対象に、新規行の挿入、既存行の削除および既存行の更新を実行し、これらの変更をコミットします。
SQL> INSERT INTO readtab VALUES (3, 'Welcome'); SQL> DELETE FROM readtab WHERE keyval=2; SQL> UPDATE readtab SET str='Hi' WHERE keyval=1; SQL> COMMIT;
5秒後、readcache
キャッシュ・グループのoratt.readtab
キャッシュ表は、図2-7に示すように、キャッシュされたOracle表oratt.readtab
にコミットされた更新で自動的にリフレッシュされます。
キャッシュされたOracle表にコミットされた更新によってreadcache
キャッシュ・グループが自動的にリフレッシュされた後、キャッシュ・マネージャ・ユーザーとして、ttIsql
ユーティリティを使用してoratt.readtab
キャッシュ表の内容を問い合せます。
Command> SELECT * FROM oratt.readtab; < 1, Hi > < 3, Welcome > 2 rows found. Command> exit
キャッシュ・グループの自動リフレッシュの詳細は、「AUTOREFRESHキャッシュ・グループ属性」を参照してください。
この項では、AWTキャッシュ・グループを動的にロードする方法について説明します。 次に、TimesTenキャッシュ表にコミットされた更新を、キャッシュされたOracle表に自動的に伝播する方法について説明します。
次のタスクを完了して、AWTキャッシュ・グループに対して処理を実行します。
ttIsql
ユーティリティを開始して、cachealone1
DSNにインスタンス管理者として接続します。 ttIsql
を使用して、oratt.writetab
キャッシュ表に対するSELECT権限をキャッシュ・マネージャ・ユーザーに付与し、このユーザーがこの表に対して動的ロードSELECT文を発行できるようにします。
% ttIsql cachealone1 Command> GRANT SELECT ON oratt.writetab TO cacheuser; Command> exit
ttIsql
ユーティリティを起動して、cachealone1
DSNにキャッシュ・マネージャ・ユーザーとして接続します。 ttIsql
を使用して、Oracle表oratt.writetab
からwritecache
キャッシュ・グループのTimesTenキャッシュ表oratt.writetab
に、リクエストに応じてキャッシュ・インスタンスをロードします。
% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle" Command> SELECT * FROM oratt.writetab WHERE pk=100; < 100, TimesTen > 1 row found. Command> exit
動的キャッシュ・グループでは、動的ロード文でリクエストに応じてキャッシュ・インスタンスをキャッシュ表にロードできます。 キャッシュ・インスタンスを一意に識別するTimesTenキャッシュ表にSELECT、UPDATE、DELETEまたはINSERTのいずれかの文を発行すると、キャッシュ表でデータが見つからない場合に、キャッシュされたOracle表からキャッシュ・インスタンスが自動的にロードされます。 動的にロードされるキャッシュ・インスタンスは、キャッシュ・グループのルート表の単一行と子表のすべての関連行で構成されています。
動的ロード処理の詳細は、「キャッシュ・グループの動的ロード」を参照してください。
LOAD CACHE GROUP文を使用すると、動的キャッシュ・グループのキャッシュ表にデータを手動でロードすることもできます。
ttIsql
ユーティリティを開始して、cachealone1
DSNにインスタンス管理者として接続します。 ttIsql
を使用して、oratt.writetab
キャッシュ表に対するINSERT、DELETEおよびUPDATEの各権限をキャッシュ・マネージャ・ユーザーに付与して、このユーザーがこの表に対して更新を実行できるようにします。
% ttIsql cachealone1 Command> GRANT INSERT ON oratt.writetab TO cacheuser; Command> GRANT DELETE ON oratt.writetab TO cacheuser; Command> GRANT UPDATE ON oratt.writetab TO cacheuser; Command> exit
ttIsql
ユーティリティを起動して、cachealone1
DSNにキャッシュ・マネージャ・ユーザーとして接続します。 ttIsql
を使用して、oratt.writetab
キャッシュ表を対象に、新規行の挿入、既存行の削除および既存行の更新を実行し、これらの変更をコミットします。
% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle" Command> INSERT INTO oratt.writetab VALUES (102, 'Cache'); Command> DELETE FROM oratt.writetab WHERE pk=101; Command> UPDATE oratt.writetab SET attr='Oracle' WHERE pk=100; Command> COMMIT; Command> exit
writecache
キャッシュ・グループのoratt.writetab
キャッシュ表にコミットされた更新は、図2-8に示すように、Oracle表oratt.writetab
に自動的に伝播されます。
Oracleスキーマ・ユーザーとして、SQL*Plusを使用してwritetab
表の内容を問い合せます。
SQL> SELECT * FROM writetab; PK ATTR ---------- ------------------------------- 100 Oracle 102 Cache SQL> exit
キャッシュ・グリッドおよびキャッシュ・グループを作成する前に、次のタスクを完了して、TimesTenシステムおよびOracleシステムを元の状態にリストアします。
ttIsql
ユーティリティを起動して、cachealone1
DSNにキャッシュ・マネージャ・ユーザーとして接続します。 ttIsql
を使用してttGridDetach
組込みプロシージャをコールし、TimesTenデータベースをmyGrid
キャッシュ・グリッドからデタッチします。
% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle" Command> call ttGridDetach;
TimesTenデータベースをキャッシュ・グリッドからデタッチした場合の影響の詳細は、「キャッシュ・グリッドからのTimesTenデータベースのデタッチ」を参照してください。
キャッシュ・マネージャ・ユーザーとして、ttIsql
ユーティリティを使用してttRepStop
組込みプロシージャをコールし、TimesTenデータベースでレプリケーション・エージェントを停止します。
Command> call ttRepStop; Command> exit
レプリケーション・エージェントの停止方法の詳細は、「レプリケーション・エージェントの管理」を参照してください。
ttIsql
ユーティリティを開始して、cachealone1
DSNにインスタンス管理者として接続します。 ttIsql
を使用して、DROP ANY TABLE権限をキャッシュ・マネージャ・ユーザーに付与し、このユーザーがキャッシュ・グループを削除するときに基礎となるキャッシュ表を削除できるようにします。
% ttIsql cachealone1 Command> GRANT DROP ANY TABLE TO cacheuser; Command> exit
ttIsql
ユーティリティを起動して、cachealone1
DSNにキャッシュ・マネージャ・ユーザーとして接続します。 ttIsql
を使用して、readcache
読取り専用キャッシュ・グループおよびwritecache
AWTキャッシュ・グループを削除します。
% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle" Command> DROP CACHE GROUP readcache; Command> DROP CACHE GROUP writecache;
キャッシュ・グループreadcache
およびwritecache
に加えて、それぞれのキャッシュ表oratt.readtab
およびoratt.writetab
が、TimesTenデータベースから削除されます。
キャッシュ・グループの削除の詳細は、「キャッシュ・グループの削除」を参照してください。
キャッシュ・マネージャ・ユーザーとして、ttIsql
ユーティリティを使用してttGridDestroy
組込みプロシージャをコールし、myGrid
キャッシュ・グリッドを破棄します。
Command> call ttGridDestroy('myGrid');
キャッシュ・グリッドの破棄の詳細は、「キャッシュ・グリッドの破棄」を参照してください。
キャッシュ・マネージャ・ユーザーとして、ttIsql
ユーティリティを使用してttCacheStop
組込みプロシージャをコールし、TimesTenデータベースでキャッシュ・エージェントを停止します。
Command> call ttCacheStop; Command> exit
キャッシュ・エージェントの停止方法の詳細は、「キャッシュ・エージェントの管理」を参照してください。
次に、ttDestroy
ユーティリティを使用して、cachealone1
DSNに接続し、TimesTenデータベースを破棄します。
% ttDestroy cachealone1
SQL*Plusを起動し、sys
ユーザーとしてOracle Databaseに接続します。 SQL*Plusを使用して、timesten
ユーザー、スキーマ・ユーザーoratt
およびキャッシュ管理ユーザーcacheuser
を削除します。
% sqlplus sys as sysdba
Enter password: password
SQL> DROP USER timesten CASCADE;
SQL> DROP USER oratt CASCADE;
SQL> DROP USER cacheuser CASCADE;
DROP USER文のCASCADEを指定すると、ユーザーそのものが削除される前に、そのユーザーが所有するすべてのオブジェクト(表やトリガーなど)が削除されます。
次に、SQL*Plusを使用して、TT_CACHE_ADMIN_ROLEロールを削除します。
SQL> DROP ROLE tt_cache_admin_role;
次に、SQL*Plusを使用して、timesten
ユーザーおよびキャッシュ管理ユーザーによって使用され、表領域およびそのデータ・ファイルの内容などを含むデフォルトの表領域cachetblsp
を削除します。
SQL> DROP TABLESPACE cachetblsp INCLUDING CONTENTS AND DATAFILES; SQL> exit
表2-1 TimesTenデータベースにOracleデータをキャッシュするための手順
タスク番号 | タスク |
---|---|
1 |
Oracle Databaseに、次のユーザーを作成します。
Oracleユーザーの詳細は、「Oracleユーザーの作成」を参照してください。 キャッシュ管理ユーザーに、キャッシュ・グリッド処理を実行し、目的のタイプのキャッシュ・グループを作成して、そのキャッシュ・グループに対して処理を実行するのに必要な権限を付与します。 権限を付与するには、 実行対象のスクリプトを確認するには、「Oracleデータのキャッシュ管理に使用されるOracleオブジェクトの自動作成」または「Oracleデータのキャッシュ管理に使用されるOracleオブジェクトの手動による作成」を参照してください。 Oracleオブジェクトを手動で作成している場合は、さらに 権限の中には、キャッシュされたOracle表を作成するまでは付与できないものもあります。 これらの権限を付与するには、 特定のキャッシュ処理を実行するためにキャッシュ管理ユーザーに付与する必要がある権限の詳細は、「Oracleユーザーへの権限の付与」を参照してください。 |
2 |
Oracle Databaseからデータをキャッシュするために使用するTimesTenデータベースを参照するDSNを定義します。 Oracle Databaseインスタンスを参照するOracleネット・サービス名を Oracle Databaseキャラクタ・セットを 次に、データベースがスタンドアロン・データベースであるか、またはアクティブ・スタンバイ・ペアのアクティブ・マスター・データベースである場合は、DSNに接続してデータベースを作成します。 Oracle Databaseからデータをキャッシュするために使用するTimesTenデータベースのDSNを定義する方法の詳細は、「TimesTenデータベースのDSNの定義」を参照してください。 |
3 |
TimesTenデータベースに、次のユーザーを作成します。
インスタンス管理者としてCREATE USER文を実行します。 TimesTenユーザーの詳細は、「TimesTenユーザーの作成」を参照してください。 キャッシュ・マネージャ・ユーザーに、キャッシュ・グリッド処理を実行し、目的のタイプのキャッシュ・グループを作成して、そのキャッシュ・グループに対して処理を実行するのに必要な権限を付与します。 インスタンス管理者としてGRANT文を実行します。 特定のキャッシュ処理を実行するためにキャッシュ・マネージャ・ユーザーに付与する必要がある権限の詳細は、「TimesTenユーザーへの権限の付与」を参照してください。 |
4 |
TimesTenデータベースにキャッシュ管理ユーザーの名前とパスワードを設定するには、キャッシュ・マネージャ・ユーザーとして TimesTenデータベースにキャッシュ管理ユーザーの名前およびパスワードを設定する方法の詳細は、「キャッシュ管理ユーザーの名前およびパスワードの設定」を参照してください。 |
5 |
キャッシュ・グリッドを作成するには、キャッシュ・マネージャ・ユーザーとしてTimesTenデータベースで キャッシュ・グリッドの作成の詳細は、「キャッシュ・グリッドの作成」を参照してください。 |
6 |
TimesTenデータベースをキャッシュ・グリッドに関連付けるには、キャッシュ・マネージャ・ユーザーとしてTimesTenデータベースで TimesTenデータベースをキャッシュ・グリッドに関連付ける方法の詳細は、「TimesTenデータベースとキャッシュ・グリッドの関連付け」を参照してください。 |
7 |
TimesTenデータベースでキャッシュ・エージェントを起動するには、キャッシュ・マネージャ・ユーザーとして TimesTenデータベースでのキャッシュ・エージェントの起動方法の詳細は、「キャッシュ・エージェントの管理」を参照してください。 |
8 |
キャッシュ・グループのスキーマを設計するには、どのOracle表をキャッシュし、そのOracle表内でどの列とどの行をキャッシュするかを決定します。 複数表キャッシュ・グループの場合、表間の関係を決定するには、どの表がルート表であり、どの表がルート表の直接の子表であり、どの表が他の子表の子表であるかを定義します。 キャッシュ列ごとに、Oracleデータ型のマップ先となるTimesTenデータ型を決定します。 Oracle DatabaseとTimesTenデータベース間の有効なデータ型マッピングのリストの詳細は、「OracleおよびTimesTenのデータ型のマッピング」を参照してください。 キャッシュ・グループごとに、アプリケーションの要件および目的に基づいて、どのタイプ(読取り専用、SWT、AWT、ユーザー管理)を作成するかを決定します。 また、各キャッシュ・グループが明示的にロードされるか、動的であるか、ローカルであるか、グローバルであるかを決定します。 次に、キャッシュ・グループを作成します。 キャッシュ・グループの作成の詳細は、「キャッシュ・グループの作成」を参照してください。 |
9 |
このTimesTenデータベースをアクティブ・スタンバイ・ペアのアクティブ・マスター・データベースとする場合は、データベースにアクティブ・スタンバイ・ペアのレプリケーション・スキームを作成します。 |
10 |
TimesTenデータベースにアクティブ・スタンバイ・ペアのレプリケーション・スキームまたは1つ以上のAWTキャッシュ・グループが含まれる場合、データベースでレプリケーション・エージェントを起動するには、キャッシュ・マネージャ・ユーザーとして TimesTenデータベースでのレプリケーション・エージェントの起動方法の詳細は、「レプリケーション・エージェントの管理」を参照してください。 |
11 |
TimesTenデータベースに1つ以上のグローバル・キャッシュ・グループが含まれる場合、TimesTenデータベースを関連付け先のキャッシュ・グリッドにアタッチするには、キャッシュ・マネージャ・ユーザーとして TimesTenデータベースをキャッシュ・グリッドにアタッチする方法の詳細は、「キャッシュ・グリッドへのTimesTenデータベースのアタッチ」を参照してください。 |
12 |
明示的にロードされるキャッシュ・グループのキャッシュ表を手動でロードするにはLOAD CACHE GROUP文を使用し、動的キャッシュ・グループのキャッシュ表をロードするには適切なSELECT文、UPDATE文またはINSERT文を使用します。 キャッシュ・グループのキャッシュ表を手動でロードする方法の詳細は、「キャッシュ・グループのロードおよびリフレッシュ」を参照してください。 動的キャッシュ・グループのキャッシュ表を動的にロードする方法の詳細は、「キャッシュ・グループの動的ロード」を参照してください。 |
13 |
後続のスタンドアロンTimesTenデータベースを既存のキャッシュ・グリッドにメンバーとして追加できます。 スタンドアロン・データベースを作成するには、タスク2を実行します。次に、タスク3と4、6から8、および10と11を実行してデータベースを構成し、グリッドにメンバーとしてそのデータベースを追加します。 別のスタンドアロンTimesTenデータベースを作成し、そのデータベースを既存のキャッシュ・グリッドに追加する方法の詳細は、「後続のスタンドアロンTimesTenデータベースの作成および構成」を参照してください。 |
14 |
キャッシュ表を別のTimesTenデータベースにレプリケートして高可用性を実現できるよう、アクティブ・スタンバイ・ペアを既存のキャッシュ・グリッドにメンバーとして追加できます。 アクティブ・マスター・データベースを作成するには、タスク2を実行します。次に、タスク3と4、6から11を実行してデータベースを構成し、グリッドにメンバーとしてそのデータベースを追加します。 アクティブ・マスター・データベースを作成し、そのデータベースを既存のキャッシュ・グリッドに追加する方法の詳細は、「アクティブ・マスター・データベースの作成および構成」を参照してください。 アクティブ・マスター・データベースからスタンバイ・マスター・データベースを作成するには、タスク2を実行してスタンバイ・マスター・データベース用のDSNを作成した後、ADMIN権限を持つTimesTen外部ユーザーとして、スタンバイ・マスター・データベース・システムで スタンバイ・マスター・データベースを作成し、そのデータベースを既存のキャッシュ・グリッドに追加する方法の詳細は、「スタンバイ・マスター・データベースの作成および構成」を参照してください。 スタンバイ・マスター・データベースからオプションの読取り専用サブスクライバ・データベースを作成するには、タスク2を実行して、サブスクライバ・データベースのDSNを作成します。 次に、ADMIN権限を持つTimesTen外部ユーザーとして、サブスクライバ・データベース・システムで アクティブ・スタンバイ・ペアの読取り専用サブスクライバ・データベースを作成する方法の詳細は、「読取り専用サブスクライバ・データベースの作成および構成」を参照してください。 |