この章では、明示的にロードされる読取り専用のローカル・キャッシュ・グループおよび動的な更新可能グローバル・キャッシュ・グループを作成する方法を示して、キャッシュ・グループの作成および使用について説明します。また、この例ではグローバル・キャッシュ・グループを作成するため、この章では、グリッドを作成する方法を説明します。さらに、キャッシュ表に移入する方法、およびTimesTenデータベースのキャッシュ表とOracle Databaseのキャッシュされた表の間で更新の転送を監視する方法についても説明します。
キャッシュ・グリッドまたはキャッシュ・グループを作成するには、最初にTimesTenをインストールし、Oracle DatabaseシステムおよびTimesTenシステムを構成しておく必要があります。TimesTenのインストールの詳細は、『Oracle TimesTen In-Memory Databaseインストレーション・ガイド』を参照してください。
次のタスクを実行します。
TimesTen Application-Tier Database Cacheを使用するには、Oracle Databaseで次のユーザーを作成する必要があります。
1人以上のスキーマ・ユーザーは、TimesTenデータベースにキャッシュされるOracle Database表を所有します。既存ユーザーまたは新規ユーザーをスキーマ・ユーザーにすることができます。
キャッシュ管理ユーザーは、Oracle Databaseオブジェクトを作成して保持し、これらのOracle Databaseオブジェクトには、キャッシュ環境を管理し、特定のキャッシュ・グループ・タイプの定義済動作を実行するための情報が格納されます。
オペレーティング・システム・シェルまたはコマンド・プロンプトからOracle DatabaseシステムでSQL*Plusを起動し、sys
ユーザーとしてOracle Databaseインスタンスに接続します。
% cd TimesTen_install_dir/oraclescripts % sqlplus sys as sysdba Enter password: password
SQL*Plusを使用して、他のアプリケーションと共有しないTimesTen Application-Tier Database Cache管理オブジェクトの格納に使用するデフォルトの表領域を作成します。TimesTenでキャッシュしたOracle実表も格納できますが、キャッシュ管理のために、この表領域をTimesTenのみで使用することを強く推奨します。
SQL*Plusを使用して、SQL*PlusスクリプトTimesTen_install_dir
/oraclescripts/initCacheGlobalSchema.sql
を実行して、次の要素を作成します。
timesten
ユーザー
キャッシュ・グリッド(構成されている場合)を含むキャッシュ環境に関する情報を格納するためにtimesten
ユーザーが所有するOracle Database表
デフォルトの表領域を引数として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
としています。
注意: grantCacheAdminPrivileges.sql スクリプトを実行するユーザーが必要な権限と、このユーザーがキャッシュ管理ユーザーに付与する権限については、このスクリプト内のコメントを参照してください。 |
SQL> CREATE USER cacheuser IDENTIFIED BY oracle 2 DEFAULT TABLESPACE cachetblsp QUOTA UNLIMITED ON cachetblsp; SQL> @grantCacheAdminPrivileges "cacheuser" SQL> exit
キャッシュ管理ユーザーが必要とする権限は、作成するキャッシュ・グループおよびそのキャッシュ・グループに対して実行する処理のタイプによって異なります。
timesten
ユーザー、スキーマ・ユーザーおよびキャッシュ管理ユーザーの詳細は、「Oracle Databaseユーザーの作成」を参照してください。
SQL> SELECT value FROM nls_database_parameters WHERE parameter='NLS_CHARACTERSET';
UNIXでは、ホーム・ディレクトリにある.odbc.ini
ファイルまたはTimesTen_install_dir
/info/sys.odbc.ini
ファイルで、TimesTen DSN cachealone1
を作成し、次の接続属性を設定します。
[cachealone1] DataStore=/users/OracleCache/alone1 PermSize=64 OracleNetServiceName=oracledb DatabaseCharacterSet=AL32UTF8 CacheGridEnable=1
Windowsでは、TimesTenユーザーDSNまたはシステムDSN cachealone1
を作成し、次の接続属性を設定します。
データ・ストア・パスおよび名前: c:\temp\alone1
永続データのサイズ: 64
Oracleネット・サービス名: oracledb
データベース・キャラクタ・セット: AL32UTF8
キャッシュ・グリッドを作成できるようにキャッシュ・グリッドは有効化されます。
これ以外の接続属性にはデフォルト設定を使用します。
Oracle DatabaseからデータをキャッシュするTimesTenデータベースのDSNを定義する方法の詳細は、「TimesTenデータベースのDSNの定義」を参照してください。
TimesTen DSNの詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のTimesTenデータベースの管理に関する説明を参照してください。
注意: データ・ストアという用語は、TimesTenデータベースと同義で使用されます。 |
TimesTen Application-Tier Database Cacheを使用するには、Oracle Databaseユーザーの他に、次のTimesTenユーザーを作成する必要があります。
キャッシュ・マネージャ・ユーザーは、キャッシュ・グリッド処理およびキャッシュ・グループ処理を実行します。TimesTenキャッシュ管理ユーザーは、キャッシュされたOracle Database表にアクセスできるコンパニオンOracle Databaseユーザーと同じ名前である必要があります。コンパニオンOracle Databaseユーザーは、キャッシュ管理ユーザー、スキーマ・ユーザーまたはその他の既存ユーザーにすることができます。使いやすくするために、キャッシュ管理ユーザーをキャッシュ・マネージャ・ユーザーのコンパニオンOracle Databaseユーザーにすることをお薦めします。キャッシュ・マネージャ・ユーザーのパスワードは、同じ名前を持つコンパニオンOracle Databaseユーザーとは別のパスワードにすることができます。
キャッシュ・マネージャ・ユーザーは、キャッシュ・グリッドを作成および構成し(構成されている場合)、キャッシュ・グループを作成する必要があります。また、グリッド自体、およびキャッシュ・グループに対して実行される様々な処理を監視することもできます。
1人以上のキャッシュ表ユーザーが、キャッシュ表を所有します。TimesTenデータベースにキャッシュされるOracle Database表を現在所有しているか、または今後所有することになるスキーマ・ユーザーごとに、Oracle Databaseスキーマ・ユーザーと同じ名前でTimesTenキャッシュ表ユーザーを作成する必要があります。キャッシュ表ユーザーのパスワードは、同じ名前を持つOracle Databaseスキーマ・ユーザーとは別のパスワードにすることができます。
TimesTenキャッシュ表の所有者および名前は、対応するキャッシュされたOracle Database表の所有者および名前と同じです。
インスタンス管理者として、オペレーティング・システム・シェルまたはコマンド・ラインからTimesTenシステムでttIsql
ユーティリティを起動し、cachealone1
DSNに接続して、Oracle Databaseのデータをキャッシュするために使用するTimesTenデータベースを作成します。
% ttIsql cachealone1
ttIsql
を使用して、キャッシュ・マネージャ・ユーザーを作成します。このユーザーに、キャッシュ・グリッドを作成し(構成されている場合)、キャッシュ・グループを作成し、そのキャッシュ・グループに対して操作を実行するために必要な最小限の権限セットを付与します。次の例では、キャッシュ・マネージャ・ユーザー名をcacheuser
としていますが、この名前は前に作成したキャッシュ管理ユーザーと同じ名前です。
Command> CREATE USER cacheuser IDENTIFIED BY timesten; Command> GRANT CREATE SESSION, CACHE_MANAGER, CREATE ANY TABLE TO cacheuser;
次に、ttIsql
を使用して、キャッシュ表ユーザーを作成します。次の例では、キャッシュ表ユーザー名をoratt
としていますが、この名前は以前に作成したOracle Databaseスキーマ・ユーザーと同じ名前です。
Command> CREATE USER oratt IDENTIFIED BY timesten; Command> exit
キャッシュ・マネージャ・ユーザーが必要とする権限は、作成するキャッシュ・グループおよびそのキャッシュ・グループに対して実行する処理のタイプによって異なります。キャッシュ・マネージャ・ユーザーおよびキャッシュ表ユーザーの詳細は、「TimesTenユーザーの作成」を参照してください。
TimesTenユーザーおよび権限の詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のアクセス制御の管理に関する説明を参照してください。
ttIsql
ユーティリティを起動して、cachealone1
DSNにキャッシュ・マネージャ・ユーザーとして接続します。接続文字列で、UID
接続属性にキャッシュ・マネージャ・ユーザー名を指定します。キャッシュ・マネージャ・ユーザーのパスワードをPWD
接続属性に指定します。そのコンパニオンOracleユーザー(キャッシュ・マネージャのコンパニオン・ユーザーと同じ名前で作成済)のパスワードを、接続文字列内のOraclePWD
接続属性に指定します。この例では、キャッシュ管理ユーザーはキャッシュ・マネージャ・ユーザーのコンパニオン・ユーザーであるため、パスワードが指定されています。
% ttIsql "DSN=cachealone1;UID=cacheuser;PWD=timesten;OraclePWD=oracle"
ttIsql
を使用して、ttCacheUidPwdSet
組込みプロシージャをコールし、キャッシュ管理ユーザーの名前およびパスワードを設定します。
Command> call ttCacheUidPwdSet('cacheuser','oracle');
キャッシュ管理ユーザーの名前とパスワードは、TimesTenデータベースに1回のみ設定する必要があります。TimesTenデータベースがこの設定を使用する方法の詳細は、「キャッシュ管理ユーザーの名前およびパスワードの設定」を参照してください。
この例ではグローバル・キャッシュ・グループを使用するため、キャッシュ・グリッドを作成して、Oracle DatabaseからデータをキャッシュするTimesTenデータベース内でグローバル・キャッシュ・データの管理に使用するフレームワークを定義する必要があります。Oracle Databaseユーザー、TimesTenデータベースおよびTimesTenユーザーを作成した後に、キャッシュ・グリッドを作成し、キャッシュ管理ユーザーの名前とパスワードをそのTimesTenデータベースに設定します。
キャッシュ・マネージャ・ユーザーとして、ttIsql
ユーティリティを使用してttGridCreate
組込みプロシージャをコールし、キャッシュ・グリッドmyGrid
を作成します。
Command> call ttGridCreate('myGrid');
次に、ttIsql
を使用してttGridNameSet
組込みプロシージャをコールし、TimesTenデータベースをmyGrid
キャッシュ・グリッドに関連付けます。
Command> call ttGridNameSet('myGrid');
キャッシュ・グリッドの内容および機能の詳細は、「キャッシュ・グリッドの構成」を参照してください。
この項では、読取り専用のキャッシュ・グループ(図2-1を参照)、および非同期ライトスルー(AWT)キャッシュ・グループ(図2-2を参照)を作成します。
次のタスクを完了して、読取り専用キャッシュ・グループおよび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));
図2-3 読取り専用キャッシュ・グループにキャッシュされるOracle Database表の作成
次に、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, 'CACHE'); 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 Database表からTimesTenキャッシュ表への自動リフレッシュ処理を実行するために必要です。
writetab
表に対するSELECT
権限は、この表をキャッシュするAWTキャッシュ・グループを作成するために必要です。writetab
表に対するINSERT
、UPDATE
およびDELETE
の各権限は、TimesTenキャッシュ表からキャッシュされたOracle Database表にライトスルー処理を実行するために必要です。
キャッシュ管理ユーザーが読取り専用キャッシュ・グループおよびAWTキャッシュ・グループを作成し、それぞれのグループに対して処理を実行するために必要な権限の詳細は、「Oracle Databaseユーザーへの権限の付与」を参照してください。
キャッシュ・マネージャ・ユーザーとして、ttIsql
ユーティリティを使用してttCacheStart
組込みプロシージャをコールし、TimesTenデータベースでキャッシュ・エージェントを起動します。
Command> call ttCacheStart;
キャッシュ・エージェントの起動方法の詳細は、「キャッシュ・エージェントの管理」を参照してください。
キャッシュ・マネージャ・ユーザーとして、ttIsql
ユーティリティを使用して、Oracle Database表oratt.readtab
をキャッシュする読取り専用キャッシュ・グループreadcache
およびOracle Database表oratt.writetab
をキャッシュする動的AWTグローバル・キャッシュ・グループwritecache
を作成します。
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 Database表と同じものとなります。図2-5に、oratt.writetab
表をキャッシュするwritecache
キャッシュ・グループを示します。
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 Database表に伝播します。
レプリケーション・エージェントの起動方法の詳細は、「レプリケーション・エージェントの管理」を参照してください。
ローカルのキャッシュ・グループのみを作成している場合は、TimesTenデータベースをキャッシュ・グリッドにアタッチする必要はありません。ただし、グローバル・キャッシュ・グループまたはそのキャッシュ表に対して処理を実行するには、グローバル・キャッシュ・グループが関連付けられているキャッシュ・グリッドに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 Database表に自動的に伝播する方法について説明します。
次のタスクを完了して、読取り専用キャッシュ・グループに対して処理を実行します。
キャッシュ・マネージャ・ユーザーとして、ttIsql
ユーティリティを使用して、readcache
キャッシュ・グループのTimesTenキャッシュ表oratt.readtab
にOracle Database表oratt.readtab
の内容をロードします。
Command> LOAD CACHE GROUP readcache COMMIT EVERY 256 ROWS; 2 cache instances affected. Command> exit
図2-6に、Oracle Databaseデータがoratt.readtab
キャッシュ表にロードされる方法を示します。
ttIsql
ユーティリティを開始して、cachealone1
DSNにインスタンス管理者として接続します。ttIsql
を使用して、oratt.readtab
キャッシュ表に対するSELECT
権限をキャッシュ・マネージャ・ユーザーに付与して、このユーザーがこの表に対してSELECT
問合せを発行できるようにします。
% ttIsql cachealone1 Command> GRANT SELECT ON oratt.readtab TO cacheuser; Command> exit
ttIsql
ユーティリティを起動し、キャッシュ・マネージャ・ユーザーとしてcachealone1
DSNに接続します(キャッシュ・マネージャ・ユーザーのパスワードおよびそのコンパニオンOracleユーザーのパスワードを指定します)。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 Databaseスキーマ・ユーザーとしてSQL*Plusを使用して、Oracle Database表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 Databaseのoratt.readtab
表にコミットされた更新で、5秒後に自動的にリフレッシュされます。
図2-7 Oracle Database更新でのTimesTenキャッシュ表の自動リフレッシュ
キャッシュされたOracle Database表にコミットされた更新によってreadcache
キャッシュ・グループが自動的にリフレッシュされた後、キャッシュ・マネージャ・ユーザーとして、ttIsql
ユーティリティを使用してoratt.readtab
キャッシュ表の内容を問い合せます。
Command> SELECT * FROM oratt.readtab; < 1, Hi > < 3, Welcome > 2 rows found. Command> exit
キャッシュ・グループの自動リフレッシュの詳細は、「AUTOREFRESHキャッシュ・グループ属性」を参照してください。
この項では、AWTキャッシュ・グループを動的にロードする方法について説明します。次に、TimesTenキャッシュ表にコミットされた更新を、キャッシュされたOracle Database表に自動的に伝播する方法について説明します。
次のタスクを完了して、AWTキャッシュ・グループに対して処理を実行します。
ttIsql
ユーティリティを開始して、cachealone1
DSNにインスタンス管理者として接続します。ttIsql
を使用して、oratt.writetab
キャッシュ表に対するSELECT
権限をキャッシュ・マネージャ・ユーザーに付与し、このユーザーがこの表に対して動的ロードSELECT
文を発行できるようにします。
% ttIsql cachealone1 Command> GRANT SELECT ON oratt.writetab TO cacheuser; Command> exit
ttIsql
ユーティリティを起動し、キャッシュ・マネージャ・ユーザーとしてcachealone1
DSNに接続します(キャッシュ・マネージャ・ユーザーのパスワードおよびそのコンパニオンOracleユーザーのパスワードを指定します)。ttIsql
を使用して、Oracle Database表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 Database表からキャッシュ・インスタンスが自動的にロードされます。動的にロードされるキャッシュ・インスタンスは、キャッシュ・グループのルート表の単一行と子表のすべての関連行で構成されています。
動的ロード処理の詳細は、「キャッシュ・インスタンスの動的ロード」を参照してください。
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 Database表oratt.writetab
に自動的に伝播されます。
図2-8 TimesTenキャッシュ表に対する更新のOracle Databaseへの自動伝播
Oracle Databaseスキーマ・ユーザーとして、SQL*Plusを使用してwritetab
表の内容を問い合せます。
SQL> SELECT * FROM writetab; PK ATTR ---------- ------------------------------- 100 Oracle 102 Cache SQL> exit
キャッシュ・グリッドおよびキャッシュ・グループを作成する前に、次のタスクを完了して、TimesTenシステムおよびOracle Databaseシステムを元の状態にリストアします。
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