キャッシュされたOracle Database表に対して発行されたDDL文の追跡
TT_
version_schema-ID
_DDL_T
トリガーが起動されて表に行が挿入されると、その文はTT_
version
_DDL_L
表で追跡できます。version
はTimesTenの内部バージョン番号、schema-ID
はキャッシュされたOracle Database表を所有するユーザーのIDです。
トリガーは、キャッシュされたOracle Database表を所有するOracle Databaseユーザーごとに作成されます。DDL追跡表が1つ作成され、キャッシュされたすべてのOracle Database表に対して発行されたDDL文が格納されます。Oracleキャッシュ管理ユーザーは、TT_
version
_DDL_L
表およびTT_
version
_schema-ID
_DDL_T
トリガーを所有します。
デフォルトでは、DDL文は追跡されません。TimesTenで、キャッシュされたOracle Database表に対して発行されたDDL文を追跡できるようにし、TimesTenキャッシュ管理ユーザーとしてttCacheDDLTrackingConfig
組込みプロシージャをコールします。次の例では、キャッシュされたOracle Database表に対して発行されたDDL文の追跡を有効にします。
% ttIsql "DSN=cache1;UID=cacheadmin;PwdWallet=/wallets/cacheadminwallet" Command> CALL ttCacheDDLTrackingConfig('enable');
TT_
version
_DDL_L
表およびTT_
version
_schema-ID
_DDL_T
トリガーは、CREATE TRIGGER
、CREATE SEQUENCE
、CREATE TYPE
、CREATE PROCEDURE
、CREATE TABLE
、CREATE ANY TRIGGER
などの一連の必要な権限がOracleキャッシュ管理ユーザーに付与されている場合に自動的に作成されます。DDL文の追跡が有効化されている場合、キャッシュ・グループを作成したとき、これらのOracle Databaseオブジェクトが作成されます。
TimesTen Classicで、Oracle Databaseデータのキャッシュを管理するために使用するOracle Databaseオブジェクトを手動で作成した場合は、TimesTenキャッシュ管理ユーザーとして、ttIsql
ユーティリティのcachesqlget
コマンドにORACLE_DDL_TRACKING
オプションおよびINSTALL
フラグを指定して実行する必要があります。このコマンドは、DDL文を追跡する対象のキャッシュされたOracle Database表を所有するOracle Databaseユーザーごとに実行する必要があります。このコマンドを実行すると、Oracle DatabaseでTT_
version
_DDL_L
表およびTT_
version
_schema-ID
_DDL_T
トリガーを作成するために使用するSQL*Plusスクリプトが生成されます。
スクリプトの生成後、SQL*Plusを使用してsys
ユーザーとしてスクリプトを実行します。
次の例では、Oracle Databaseオブジェクトを手動で作成すると、DDL追跡表およびトリガーを作成します。この例では、ttIsql
ユーティリティのcachesqlget
コマンドによって生成されるSQL*Plusスクリプトは、/tmp/trackddl.sql
ファイルに保存されます。キャッシュされたOracle Database表sales
の所有者が、引数としてこのコマンドに渡されます。
% ttIsql "DSN=cache1;UID=cacheadmin;PwdWallet=/wallets/cacheadminwallet"
Command> cachesqlget ORACLE_DDL_TRACKING sales INSTALL /tmp/trackddl.sql;
Command> exit
% sqlplus sys as sysdba
Enter password: password
SQL> @/tmp/trackddl
SQL> exit
Oracleキャッシュ管理ユーザーとしてttCacheInfo
ユーティリティまたはtimesten_home
/install/oraclescripts/cacheInfo.sql
SQL*Plusスクリプトを実行し、キャッシュされたOracle Database表で発行されたDDL文を追跡するのに使用するOracle Databaseオブジェクトに関する情報を表示します。次の例では、cacheInfo.sql
SQL*Plusスクリプトを実行します。
% cd timesten_home/install/oraclescripts
% sqlplus cacheadmin/orapwd
SQL> @cacheInfo.sql
***************** Database Information *********************
Database name: DATABASE1
Unique database name: database1
Primary database name:
Database Role: PRIMARY
Database Open Mode: READ WRITE
Database Protection Mode: MAXIMUM PERFORMANCE
Database Protection Level: UNPROTECTED
Database Flashback On: NO
Database Current SCN: 21512609
*************************************************************
*************Autorefresh Objects Information ***************
Grid name: grid1 (7D03C680-BD93-4233-A4CF-B0EDB0064F3F)
Timesten database name: database1
Cache table name: SALES.CUSTOMERS
Change log table name: tt_07_96977_L
Number of rows in change log table: 4
Maximum logseq on the change log table: 1
Timesten has autorefreshed updates upto logseq: 1
Number of updates waiting to be autorefreshed: 0
Number of updates that has not been marked with a valid logseq: 0
*************DDL Tracking Object Information ***************
Common DDL Log Table Name: TT_07_DDL_L
DDL Trigger Name: TT_07_315_DDL_T
Schema for which DDL Trigger is tracking: SALES
Number of cache groups using the DDL Trigger: 10
****************************
PL/SQL procedure successfully completed.
キャッシュされたOracle Database表を所有するOracle Databaseユーザーごとに戻される情報には、DDL追跡表の名前、その対応するDDLトリガーの名前、DDLトリガーが関連付けられているユーザーの名前、DDLトリガーに関連付けられているユーザーが所有する表をキャッシュするキャッシュ・グループの数などがあります。
1つのキャッシュ・グループに複数のキャッシュ表が含まれている場合、DDLトリガーに関連付けられているユーザーが所有する各キャッシュ表がキャッシュ・グループの数にカウントされます。
このマニュアルの「キャッシュ用のSQL*Plusスクリプト」および『Oracle TimesTen In-Memory Databaseリファレンス』のttCacheDDLTrackingConfigおよびttCacheInfoを参照してください。