ヘッダーをスキップ
Oracle® TimesTen In-Memory Databaseオペレーション・ガイド
リリース11.2.1
B56047-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

6 ttIsqlユーティリティの使用方法

TimesTenのttIsqlユーティリティは、TimesTenデータソースを処理するための一般的なツールです。ttIsqlコマンドライン・インタフェースを使用して、SQL文および組込みttIsqlコマンドを実行して様々なタスクを実行します。通常ttIsqlを使用して行う処理は次のとおりです。

次の項では、ttIsqlユーティリティを使用してこれらのタスクを実行する方法について説明します。

TimesTen SQLおよびすべてのttIsqlコマンドの詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のttIsqlに関する項を参照してください。

バッチ・モードおよび対話モード

ttIsqlユーティリティは、バッチ・モードまたは対話モードで使用できます。ttIsqlを対話モードで使用する場合、ユーザーはコンソールからttIsqlに直接コマンドを入力します。ttIsqlをバッチ・モードで使用する場合は、コマンドを含むファイルの名前を指定して、事前に準備したttIsqlコマンドのスクリプトを実行します。

通常、バッチ・モードは、次のようなタスクで使用します。

対話モードは、次のような処理に適しています。

デフォルトでは、シェルからttIsqlを起動すると、ttIsqlは対話モードになります。ttIsqlユーティリティは、Command>プロンプトを表示することによって、有効なttIsql組込みコマンドまたはSQL文の入力を求めます。

C:\>ttIsql

ttIsql (c) 1996-2009, Oracle. All rights reserved.
Type ? or "help" for help, type "exit" to quit ttIsql.

Command>

バッチ・モードは、2つの異なる方法で使用できます。最も一般的な方法は、ttIsqlコマンドラインで、実行するファイルの名前を-fオプションの後に指定する方法です。

たとえば、CREATE TABLE文を含むファイルを実行する場合は次のようになります。

C:\>ttIsql -f create.sql MY_DSN

ttIsql (c) 1996-2009, Oracle. All rights reserved.
Type ? or "help" for help, type "exit" to quit ttIsql.

Command> connect "DSN=MY_DSN"
Connection successful: DSN=MY_DSN;DataStore=E:\ds\MY_DSN; DRIVER=E:\WINNT\System32\TTdv1121.dll;
(Default setting AutoCommit=1)

Command> run "create.sql"

CREATE TABLE LOOKUP (KEY NUMBER NOT NULL PRIMARY KEY, VALUE CHAR (64))

Command> exit
Disconnecting...
Done.

C:\>

バッチ・モードを使用するもう1つの方法は、対話形式のコマンド・プロンプトからrunコマンドを直接入力する方法です。実行するttIsql組込みコマンドおよびSQL文を含むファイルの名前をrunコマンドの後に指定します。

Command> run "create.sql";

CREATE TABLE LOOKUP (KEY NUMBER NOT NULL PRIMARY KEY, VALUE CHAR (64))
Command>

TTISQL環境変数を使用したデフォルト設定の定義

コマンド・プロンプトからttIsqlセッションが開始されるたびに、一連のコマンドライン・オプションが自動的に実行されるように、ttIsqlユーティリティをカスタマイズできます。これは、TTISQLという環境変数を適切なttIsqlコマンドラインの値に設定して行うことができます。次に、ttIsqlコマンドライン・オプションの概要を示します。ttIsqlコマンドライン・オプションの詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のttIsqlに関する項を参照してください。

Usage: ttIsql [-h | -help | -helpcmds | -helpfull | -V]
              [-connStr <connection_string>]
              [-f <filename>]
              [-v <verbosity>]
              [-e <initialization_commands>]
              [-interactive]
              [-N <ncharencoding>]
              [-wait]

TTISQL環境変数には、ttIsqlコマンドラインと同じ構文要件があります。ttIsqlは、起動時にTTISQL環境変数の値を読み取り、現行のttIsqlセッションに対する変数で指定されたすべてのオプションを適用します。特定のコマンドライン・オプションがTTISQL環境変数およびコマンドラインの両方に指定されている場合は、コマンドラインに指定されているオプションが常に優先されます。

環境変数の値を設定する手順は、プラットフォーム、およびttIsqlが起動されるシェルによって異なります。たとえば、WindowsでTTISQL環境変数を設定する場合は、次のように入力します。

C:\>set TTISQL=-connStr "DSN=MY_DSN" -e "autocommit 0;dssize;"

この例では、次に示すように、ttIsqlMY_DSNというDSNに自動的に接続し、自動コミットを無効にし、データベースのサイズを表示します。

C:\>ttIsql

ttIsql (c) 1996-2009, Oracle. All rights reserved.
Type ? or "help" for help, type "exit" to quit ttIsql.

Command> connect "DSN=MY_DSN";
Connection successful: DSN=MY_DSN;DataStore=E:\ds\MY_DSN;DRIVER=E:\WINNT\System32\TTdv1121.dll;
(Default setting AutoCommit=1)
Command> autocommit 0;

Command> alltables;
  SYS.ACCESS$
  SYS.ARGUMENT$
  SYS.CACHE_GROUP
  SYS.COLUMNS
  SYS.COLUMN_HISTORY
  SYS.COL_STATS
  SYS.DEPENDENCY$
  SYS.DIR$
  SYS.DUAL
  SYS.ERROR$
  SYS.IDL_CHAR$
  SYS.IDL_SB4$
  SYS.IDL_UB1$
  SYS.IDL_UB2$
  SYS.INDEXES
  SYS.MONITOR
...
59 tables found.
Command>

ttIsqlコマンド・プロンプトのカスタマイズ

ttIsqlコマンド・プロンプトは、prompt属性を指定してsetコマンドを使用するとカスタマイズできます。

Command> set prompt MY_DSN;
MY_DSN

現行の接続の名前を戻す文字列書式(%c)を指定できます。

Command> set prompt %c;
con1

空白を埋め込む場合は、文字列を引用符で囲む必要があります。

Command> set prompt "MY_DSN %c> ";
MY_DSN con1>

ttIsqlオンライン・ヘルプの使用

ttIsqlユーティリティには、オンライン・バージョンのttIsql組込みコマンドのコマンド構文の定義および説明が用意されています。ttIsql内からこのオンライン・ヘルプにアクセスするには、helpコマンドを使用します。ttIsql組込みコマンドの詳細を表示するには、ヘルプを表示する1つ以上のttIsqlコマンドをhelpコマンドの後に入力します。次に、connectおよびdisconnectコマンドのオンライン・ヘルプの表示例を示します。

Command> help connect disconnect
 
Arguments in <> are required.
Arguments in [] are optional.
 
Command Usage: connect [DSN|connection_string] [as <connection_id>]
Command Aliases: (none)
Description: Connects to the data source specified by the optional DSN or 
connection string argument. If an argument is not given, then the DSN or 
connection string from the last successful connection is used. A connection ID 
may optionally be specified, for use in referring to the connection when multiple 
connections are enabled. The DSN is used as the default connection ID. If that ID 
is already in use, the connection will be assigned the ID "conN", where N is some 
number larger than 0.
Requires an active connection: NO
Requires autocommit turned off: NO
Reports elapsed execution time: YES
Works only with a TimesTen data source: NO
Example: connect; -or- connect RunData; -or- connect "DSN=RunData";
-or- connect RunData as rundata1;
 
Command Usage: disconnect [all]
Command Aliases: (none)
Description: Disconnects from the currently connected data source or all 
connections when the "all" argument is included. If a transaction is active when 
disconnecting then the transaction will be rolled back automatically. If a 
connection exists when executing the "bye", "quit" or "exit" commands then the 
"disconnect" command will be executed automatically.
Requires an active connection: NO
Requires autocommit turned off: NO
Reports elapsed execution time: YES
Works only with a TimesTen data source: NO
Example: disconnect;

すべてのttIsql組込みコマンドの簡単な説明を表示するには、引数を指定しないでhelpコマンドを入力します。すべてのttIsql組込みコマンドの詳細を表示するには、helpコマンドの後にall引数を入力します。

ttIsqlを使用して設定または表示可能な属性のリストを表示するには、次のように入力します。

Command> help attributes

ttIsqlのeditline機能の使用(UNIXのみ)

UNIXシステムでは、editlineライブラリを使用して、emacs(デフォルト)またはviバインディングを設定できます。これらのバインディングを設定すると、前のttIsqlコマンドをスクロールしたり、編集して再送信することができます。この機能は、Windowsでは使用不可(不要)です。

ttIsqlのeditline機能を無効にするには、ttIsqlコマンドのset editline offを使用します。

設定およびキーストロークに関する情報を、エディタのタイプごとに説明します。

emacsバインディング

emacsバインディングを使用するには、~/.editrc ファイルを作成し、そのファイルの最後の行にbindを挿入してttIsqlを実行します。editline libによって、現行のバインディングが表示されます。

emacsバインディングでttIsqlを使用する場合のキーストロークは、次のとおりです。

キーストローク アクション
<[←]> 挿入点を左に移動します。後退します。
<[→]> 挿入点を右に移動します。前進します。
<[↑]> 表示されているコマンドの1つ前のコマンドにスクロールします。カーソルは行末に移動します。
<[↓]> 最新のコマンド履歴項目までスクロールします。カーソルは行末に移動します。
<[Ctrl] + [A]> 挿入点を行の先頭まで移動します。
<[Ctrl] + [E]> 挿入点を行末まで移動します。
<[Ctrl] + [K]> コマンドライン上の現在の位置から行末までの文字を保存して削除(Kill)します。
<[Ctrl] + [Y]> 以前保存した文字をリストア(Yank)して現在の挿入点に挿入します。
<[Ctrl] + [F]> カーソルを右に1文字移動します([→]を参照)。
<[Ctrl] + [B]> カーソルを左に1文字移動します([←]を参照)。
<[Ctrl] + [P]> 前の履歴に移動します([↑]を参照)。
<[Ctrl] + [N]> 次の履歴に移動します([↓]を参照)。

viバインディング

viバインディングを使用するには、${HOME}/.editrcファイルを作成し、そのファイルにbind-vを挿入してttIsqlを実行します。現在の設定を取得するには、${HOME}/.editrc ファイルを作成し、そのファイルの最後の行にbindを挿入します。ttIsqlを実行すると、editline libによって現在のバインディングが表示されます。

viバインディングでttIsqlを使用する場合のキーストロークは、次のとおりです。

キーストローク アクション
[←]、[h] 挿入点を左に移動します(後退)。
[→]、[l] 挿入点を右に移動します(前進)。
[↑]、[k] 履歴内の前のコマンドにスクロールします。カーソルは行末に移動します。
[↓]、[j] 履歴内の次のコマンドにスクロールします。カーソルは行末に移動します。
[Esc] viコマンド・モードです。
0, $ 挿入点を行の先頭に移動します。カーソルは行末に移動します。
[i]、[I] 挿入モード。行の先頭の挿入モードです。
[a]、[A] 追加(後ろに挿入)モード。行末に追加します。
[R] 置換モード。
[C] 行末まで変更します。
[B] 前の単語まで移動します。
[e] 単語末まで移動します。
<[Ctrl] + [P]> 前の履歴に移動します([↑]を参照)。
<[Ctrl] + [N]> 次の履歴に移動します([↓]を参照)。

ttIsqlのコマンド履歴の使用

ttIsqlユーティリティでは、現行のttIsqlセッションで最後に実行した100個のコマンドのリストが保存されます。このリスト内のコマンドは、コマンド全体を入力せずに再度参照または実行できます。履歴リストには、SQL文およびttIsql組込みコマンドの両方が保存されます。historyコマンド(h)を使用すると、以前に実行したコマンドを参照できます。次に例を示します。

Command> h;
8 INSERT INTO T3 VALUES (3)
9 INSERT INTO T1 VALUES (4)
10 INSERT INTO T2 VALUES (5)
11 INSERT INTO T3 VALUES (6)
12 autocommit 0
13 showplan
14 SELECT * FROM T1, t2, t3 WHERE A=B AND B=C AND A=B
15 trytbllocks 0
16 tryserial 0
17 SELECT * FROM T1, t2, t3 WHERE A=B AND B=C AND A=B
Command>

historyコマンドによって、最後に実行された10個のSQL文またはttIsql組込みコマンドが表示されます。この最後10個以外のコマンドを表示するには、historyコマンドに引数として表示最大数を指定します。

履歴リストの各エントリは、一意の番号で識別されています。コマンド番号を!の後に指定すると、そのコマンドを再度実行できます。次に例を示します。

Command>
Command> ! 12;

autocommit 0
Command>

最後のコマンドを実行するには、2つの!を連続して入力します。

Command> !!;

autocommit 0
Command>

特定の文字列で始まっている最後のコマンドを実行するには、そのコマンドの最初の数文字を!の後に入力します。次に例を示します。

Command> ! auto;

autocommit 0
Command>

ttIsqlのコマンド履歴の保存および消去

savehistoryコマンドを使用すると、ttIsqlによって保存されるコマンドのリストを保存できます。

Command> savehistory history.txt;

出力ファイルがすでに存在している場合は、-aオプションを使用してこのファイルに新しいコマンド履歴を追加するか、または-fオプションを使用してこのファイルを上書きします。次の例では、既存のファイルに新しいコマンド履歴を追加する方法を示します。

Command> savehistory -a history.txt;

clearhistoryコマンドを使用すると、ttIsqlによって保存されるコマンドのリストを消去できます。

Command> clearhistory;

キャラクタ・セットの処理

ttIsqlユーティリティでは、『Oracle TimesTen In-Memory Databaseリファレンス』のサポートされているキャラクタ・セットの項に記載されているキャラクタ・セットがサポートされています。ttIsqlで文字を表示する機能は、ttIsqlを使用している端末のネイティブ・オペレーティング・システムのロケール設定によって異なります。

ロケール・ベースの出力書式を上書きするには、ncharencodingオプションまたは-Nオプションを使用します。これらのオプションの有効な値は、LOCALE(デフォルト)およびASCIIです。ASCIIを選択した場合にttIsqlでUnicode文字が検出されると、Unicode文字はエスケープされた書式で表示されます。

出力方法を変更する場合、アクティブな接続は必要ありません。

データベース構造情報の表示

データベース構造に関する情報を表示するいくつかのttIsqlコマンドが用意されています。次に、最も有効なコマンドの概要を示します。

ttIsqlのdescribeコマンドの使用

describeコマンドを使用して、各データベース・オブジェクトに関する情報を表示します。準備済のSQL文および組込みプロシージャに関するパラメータを表示します。describeコマンドの引数として、表、ビュー、マテリアライズド・ビュー、マテリアライズド・ビュー・ログ、順序、シノニムなどの名前、組込みプロシージャ、SQL文、事前に準備済のSQL文のコマンドID、PL/SQL関数、PL/SQLプロシージャまたはPL/SQLパッケージを指定できます。

describeコマンドを終了するには、セミコロンを指定する必要があります。

Command> CREATE TABLE T1 (KEY NUMBER NOT NULL PRIMARY KEY, VALUE CHAR (64));
Command> describe T1
       > ;

Table USER.T1:
  Columns:
   *KEY                            NUMBER NOT NULL
    VALUE                          CHAR (64)
1 table found.

(primary key columns are indicated with *)
Command> describe SELECT * FROM T1 WHERE KEY=?;

Prepared Statement:
  Parameters:
    Parameter 1                    NUMBER
  Columns:
    KEY NUMBER                     NOT NULL
    VALUE                          CHAR (64)
Command> describe ttOptUseIndex;

Procedure TTOPTUSEINDEX:
  Parameters:
    Parameter INDOPTION            VARCHAR (1024)
  Columns:
    (none)

1 procedure found.
Command>

ttIsqlのcachegroupsコマンドの使用

cachegroupsコマンドを使用すると、現行のデータベースで定義されているキャッシュ・グループの詳細が表示されます。キャッシュ・グループに関連付けられているWHERE句のみでなく、キャッシュ・グループに定義されているroot表および子表の属性も表示されます。cachegroupsコマンドには、情報を表示するキャッシュ・グループの名前を引数として指定します。

Command> cachegroups MY_CACHE_GROUP

Cache Group USER.MY_CACHE_GROUP:

  Duration: 40 Minutes
  Root Table: USER.T1
  Where Clause: (T1.KEY < 100)
  Type: Not Propagate

  Child Table: USER.T2
  Where Clause: (none)
  Type: Propagate

1 cache group found.
Command>

ttIsqlのdssizeコマンドの使用

dssizeコマンドを使用すると、データベースの最大サイズ、割当てサイズおよび使用中サイズのみでなく、永続パーティションおよび一時パーティションの現在のメモリー・ステータスがレポートされます。

ttIsqlのmonitorコマンドの使用

monitorコマンドを使用すると、dssizeコマンドで戻されるすべての情報およびデータベースがメモリーにロードされてから収集された接続数、チェックポイント、ロック・タイムアウト、コミット、ロールバックなどに関する追加の統計情報が表示されます。

Command> monitor; 
TIME_OF_1ST_CONNECT: Mon Feb 23 11:32:49 2009 
DS_CONNECTS: 11 
DS_DISCONNECTS: 0 
DS_CHECKPOINTS: 0 
DS_CHECKPOINTS_FUZZY: 0 
DS_COMPACTS: 0 
PERM_ALLOCATED_SIZE: 40960 
PERM_IN_USE_SIZE: 5174 
PERM_IN_USE_HIGH_WATER: 5174 
TEMP_ALLOCATED_SIZE: 18432 
TEMP_IN_USE_SIZE: 4527 
TEMP_IN_USE_HIGH_WATER: 4527 
SYS18: 0 
TPL_FETCHES: 0 
TPL_EXECS: 0 
CACHE_HITS: 0 
PASSTHROUGH_COUNT: 0 
XACT_BEGINS: 2 
XACT_COMMITS: 1 
XACT_D_COMMITS: 0 
XACT_ROLLBACKS: 0 
LOG_FORCES: 0 
DEADLOCKS: 0 
LOCK_TIMEOUTS: 0 
LOCK_GRANTS_IMMED: 17 
LOCK_GRANTS_WAIT: 0 
SYS19: 0 
CMD_PREPARES: 1 
CMD_REPREPARES: 0 
CMD_TEMP_INDEXES: 0 
LAST_LOG_FILE: 0 
REPHOLD_LOG_FILE: -1 
REPHOLD_LOG_OFF: -1 
REP_XACT_COUNT: 0 
REP_CONFLICT_COUNT: 0 
REP_PEER_CONNECTIONS: 0 
REP_PEER_RETRIES: 0 
FIRST_LOG_FILE: 0 
LOG_BYTES_TO_LOG_BUFFER: 64 
LOG_FS_READS: 0 
LOG_FS_WRITES: 0 
LOG_BUFFER_WAITS: 0 
CHECKPOINT_BYTES_WRITTEN: 0 
CURSOR_OPENS: 1 
CURSOR_CLOSES: 1 
SYS3: 0 
SYS4: 0 
SYS5: 0 
SYS6: 0 
CHECKPOINT_BLOCKS_WRITTEN: 0 
CHECKPOINT_WRITES: 0 
REQUIRED_RECOVERY: 0 
SYS11: 0 
SYS12: 1 
TYPE_MODE: 0 
SYS13: 0 
SYS14: 0 
SYS15: 0 
SYS16: 0 
SYS17: 0 
SYS9: 

オブジェクト・タイプ別のデータベース・オブジェクトのリスト

ttIsqlを使用して、データベース内の表、索引、ビュー、順序、シノニム、PL/SQL関数、プロシージャおよびパッケージを表示できます。先頭にallの付いたコマンドでは、このタイプのオブジェクトがすべて表示されます。たとえば、functionsコマンドではユーザーが所有するPL/SQL関数が表示されますが、allfunctionsでは、すべてのPL/SQL関数が表示されます。

オプションで、オブジェクト所有者およびオブジェクト名のパターンを指定することもできます。

データベース・オブジェクトを表示するには、次のコマンドを使用します。


注意:

これらの各コマンドの詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のttIsqlに関する項を参照してください。

次の例に、proceduresおよびallproceduresコマンドを示します。ユーザーTERRYが、myDSNへの接続中にproc1という名前のプロシージャを作成します。PL/SQL文に続く新しい行には、スラッシュ(/)が入力されています。

proceduresコマンドおよびallproceduresコマンドでは、これがデータベース内の唯一のPL/SQLプロシージャであることが示されます。

$ ttisql myDSN
Copyright (c) 1996-2009, Oracle.  All rights reserved.
Type ? or "help" for help, type "exit" to quit ttIsql.
connect "DSN=myDSN";
Connection successful: 
DSN=myDSN;UID=terry;DataStore=/scratch/terry/myDSN;DatabaseCharacter 
Set=AL32UTF8;ConnectionCharacterSet=US7ASCII;PermSize=32;TypeMode=0;
(Default setting AutoCommit=1)
Command> create or replace procedure proc1 as begin null; end;
       > /
Procedure created.
Command> procedures;
  TERRY.PROC1
1 procedure found.
Command> allprocedures;
  TERRY.PROC1
1 procedure found.

次に、同じDSNにPatとして接続し、qという名前のプロシージャを作成します。allproceduresコマンドでは、Terryとpatによって作成されたPL/SQLプロシージャが表示されます。

$ ttisql "dsn=myDSN;uid=PAT"
Copyright (c) 1996-2009, Oracle.  All rights reserved.
Type ? or "help" for help, type "exit" to quit ttIsql.
connect "dsn=myDSN;uid=PAT";
Connection successful: DSN=myDSN;UID=PAT;DataStore=/scratch/terry/myDSN;DatabaseCharacterSet=AL32UTF8;
ConnectionCharacterSet=US7ASCII;PermSize=32;TypeMode=0;
(Default setting AutoCommit=1)
Command> create or replace procedure q as begin null; end;
       > /
Procedure created.
Command> procedures;
  PAT.Q
1 procedure found.
Command> allprocedures;
  TERRY.PROC1
  PAT.Q
2 procedures found.

接続属性の表示および設定

ttIsqlshowおよびsetコマンドを使用すると、接続属性を表示および設定できます。ttIsqlを使用して表示および設定できる属性のリストは、『Oracle TimesTen In-Memory Databaseリファレンス』の接続属性に関する説明を参照してください。

Passthrough属性の設定を表示するには、次のように入力します。

Command> show passthrough;
PassThrough = 0

Passthrough設定を変更するには、次のように入力します。

Command> set passthrough 1;

トランザクションの処理

ttIsqlユーティリティには、トランザクションを管理するためのいくつかの組込みコマンドが用意されています。次に、これらのコマンドの概要を示します。

デフォルトでは、ttIsqlを起動すると、自動コミット機能が有効になります。このモードでは、データベースに対するすべてのSQL操作が自動的にコミットされます。自動コミット機能を無効にするには、引数0を指定してttIsqlautocommitコマンドを実行します。

自動コミットが無効になっている場合は、ttIsqlcommitコマンド、commitdurableコマンド、またはrollbackコマンドを実行して、トランザクションを手動でコミットまたはロールバックする必要があります。commitdurableコマンドを実行すると、データベース障害が発生した場合でも、トランザクションの結果が保持されます。

ttIsqlisolationコマンドを使用すると、現行の接続のトランザクション独立性プロパティを変更できます。独立性は、トランザクションの開始時にのみ変更できます。isolationコマンドには、READ_COMMITTEDまたはSERIALIZABLEのいずれかを定数として指定できます。isolationコマンドを引数を指定しないで変更すると、現在の分離レベルがレポートされます。

ttIsqlsqlquerytimeoutコマンドでは、SQL文のタイムアウト間隔を設定します。SQL文の実行時間がsqlquerytimeoutコマンドで設定した秒数を超えると、SQL文は実行されず、6111エラーが生成されます。詳細は、『Oracle TimesTen In-Memory Database Java開発者ガイド』および『Oracle TimesTen In-Memory Database C開発者ガイド』の、SQL文を実行する場合のタイムアウト値の設定に関する説明を参照してください。


注意:

TimesTenのロールバック機能および問合せタイムアウト機能を使用しても、Oracleで処理中のIMDBキャッシュ操作が停止されることはありません。このような操作には、PassThrough文、フラッシング、手動ロード、手動リフレッシュ、SYNCHRONOUS WRITETHROUGH、伝播および動的ロードが含まれます。

次に、ttIsqlの組込みトランザクション管理コマンドの一般的な使用例を示します。

E:\>ttIsql
ttIsql (c) 1996-2009, Oracle. All rights reserved.
Type ? or "help" for help, type "exit" to quit ttIsql.

Command> connect "DSN=MY_DSN";
Connection successful: DSN=MY_DSN;DataStore=E:\ds\MY_DSN;DRIVER=E:\WINNT\System32\ TTdv1121.dll;
(Default setting AutoCommit=1)
Command> autocommit 0;
Command> CREATE TABLE LOOKUP (KEY NUMBER NOT NULL PRIMARY KEY, VALUE CHAR (64));
Command> commit;
Command> INSERT INTO LOOKUP VALUES (1, 'ABC');
1 row inserted.
Command> SELECT * FROM LOOKUP;
< 1, ABC >
1 row found.
Command> rollback;
Command> SELECT * FROM LOOKUP;
0 rows found.
Command> isolation;
isolation = READ_COMMITTED
Command> commitdurable;
Command> sqlquerytimeout 10;
Command> sqlquerytimeout;
Query timeout = 10 seconds
Command> disconnect;
Disconnecting...
Command> exit;
Done.
E:\>

準備済およびパラメータ化済のSQL文の処理

TimesTenアプリケーションでは、SQL文を1回のみ準備してそれを複数回実行する方が、実行のたびに文を繰り返し準備するより効率的です。ttIsqlには、準備済のSQL文を使用するための一連の組込みコマンドが用意されています。次に、これらのコマンドの概要を示します。

ttIsqlユーティリティの準備済の文コマンドは、SQL文のパラメータ・マーカーも処理します。準備済のSQL文にパラメータ・マーカーが含まれている場合は、ttIsqlの実行時に、文の各パラメータに値を入力するように自動的に求められます。

次の例では、ttIsqlユーティリティの準備済の文コマンドを使用して、NUMBERおよびCHAR列を含む表のINSERT文を準備します。文が準備された後、文の2つのパラメータに対してそれぞれ異なる値を使用して2回実行されます。また、ttIsqlユーティリティのtimingコマンドを使用して、各コマンドに関連付けられている主要ODBC関数コールの実行に必要な経過時間を表示します。

Command> connect "DSN=MY_DSN";
Connection successful: DSN=MY_DSN;DataStore=E:\ds\MY_DSN;DRIVER=
E:\WINNT\Sys tem32\TTdv1121.dll;
(Default setting AutoCommit=1)

Command> timing 1;
Command> create table t1 (key number not null primary key, value char(20));
Execution time (SQLExecute) = 0.007247 seconds.
Command> prepare insert into t1 values (:f, :g);
Execution time (SQLPrepare) = 0.000603 seconds.

Command> exec;
Type '?' for help on entering parameter values.
Type '*' to end prompting and abort the command.
Type '-' to leave the parameter unbound.
Type '/' to leave the remaining parameters unbound and execute the command.
Enter Parameter 1 'F' (NUMBER) > 1;
Enter Parameter 2 'G' (CHAR) > 'abc';
1 row inserted.
Execution time (SQLExecute) = 0.000454 seconds.

Command> exec;
Type '?' for help on entering parameter values.
Type '*' to end prompting and abort the command.
Type '-' to leave the parameter unbound.
Type '/' to leave the remaining parameters unbound and execute the help command.
Enter Parameter 1 'F' (NUMBER) > 2;
Enter Parameter 2 'G' (CHAR) > 'def';
1 row inserted.
Execution time (SQLExecute) = 0.000300 seconds.

Command> free;
Command> select * from t1;
< 1, abc                  >
< 2, def                  >
2 rows found.
Execution time (SQLExecute + Fetch Loop) = 0.000226 seconds.

Command> disconnect;
Disconnecting...
Execution time (SQLDisconnect) = 2.911396 seconds. 
Command>

前述の例では、準備するSQL文がprepareコマンドの直後に指定されています。ttIsqlでSQL文を準備すると、常に、一意のコマンドIDが準備済の文に割り当てられます。ttIsqlユーティリティでは、複数の準備済の文の追跡にこのIDが使用されます。ttIsqlセッションには、最大256の準備済の文が同時に存在できます。freeコマンドを実行すると、準備済のSQL文に対するコマンドIDの関連付けが自動的に解除されます。

準備済の文コマンドを使用した場合にttIsqlによって生成されるコマンドIDを表示するには、文を準備する前にverbosityコマンドを使用して冗長性レベルを4に設定するか、またはdescribe *コマンドを使用して準備済のすべての文をそれらのIDとともに表示します。

コマンドIDは、ttIsqlの準備済の文コマンドを使用する場合に明示的に参照できます。ttIsqlの準備済の文コマンドの構文の詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のttIsqlの項を参照するか、またはttIsqlコマンド・プロンプトでhelpと入力してください。

次の例では、1つのNUMBERパラメータを含む述語が指定されているSELECT文を準備および実行します。fetchoneコマンドは、この文によって生成された結果行をフェッチするために使用します。showplanコマンドは、この文の実行時にTimesTen問合せオプティマイザで使用される実行計画を表示するために使用します。また、冗長性レベルは、準備済の文を追跡するためにttIsqlで使用されるコマンドIDが表示されるように4に設定します。

Command> connect "DSN=MY_DSN";
Connection successful: DSN=MY_DSN;DataStore=E:\ds\MY_DSN;DRIVER=E:\WINNT\Sys tem32\TTdv1121.dll;
(Default setting AutoCommit=1)
The command succeeded.
Command> CREATE TABLE T1 (KEY NUMBER NOT NULL PRIMARY KEY, VALUE CHAR (64));
The command succeeded.
Command> INSERT INTO T1 VALUES (1, 'abc');
1 row inserted.
The command succeeded.
Command> autocommit 0;
The command succeeded.
Command> showplan 1;
The command succeeded.
Command> verbosity 4;
The command succeeded.
Command> prepare SELECT * FROM T1 WHERE KEY=?;
Assigning new prepared command id = 0.

Query Optimizer Plan:

  STEP: 1
  LEVEL: 1
  OPERATION: RowLkHashScan
  TBLNAME: T1
  IXNAME: T1
  PRED: T1.KEY = qmark_1
  OTHERPRED: <NULL>

The command succeeded.
Command> exec;

Executing prepared command id = 0.
Type '?;' for help on entering parameter values.
Type '*;' to abort the parameter entry process.

Enter Parameter 1 (NUMBER) >1;
The command succeeded.
Command> fetchone;
Fetching prepared command id = 0.
< 1, abc >
1 row found.
The command succeeded.
Command> close;
Closing prepared command id = 0.
The command succeeded.
Command> free;
Freeing prepared command id = 0.
The command succeeded.
Command> commit;
The command succeeded.
Command> disconnect;
Disconnecting...
The command succeeded.
Command>

注意:

PL/SQLホスト変数を指定したttIsqlの使用方法については、『Oracle TimesTen In-Memory Database PL/SQL開発者ガイド』のTimesTenデータベースでのPL/SQLに関する概要の説明を参照してください。

PL/SQLブロックの作成および実行

PL/SQLブロックは、ttIsqlコマンドラインから作成および実行できます。

PL/SQLブロックから生成された結果を表示するには、serveroutputをonに設定します。

Command> set serveroutput on

出力バッファにテキスト行を挿入する無名ブロックを作成します。ブロックはスラッシュ(/)で終了する必要があります。

Command> BEGIN
       > DBMS_OUTPUT.put_line(
       >   'Welcome!');
       > END;
       > /
Welcome!
PL/SQL procedure successfully completed.
Command>

その他の例は、『Oracle TimesTen In-Memory Database PL/SQL開発者ガイド』を参照してください。

OUTパラメータを使用したPL/SQLからのデータの受渡し

OUTパラメータを使用して、PL/SQLからアプリケーションにデータを戻すことができます。次の例では、TimesTenデータベースの空き状況に関する情報を戻します。

tt_space_info PL/SQLプロシージャを作成し、SQLを使用してpermpctpermmaxpcttemppctおよびtempmaxpctの各パラメータに値を入力します。

Command> CREATE OR REPLACE PROCEDURE tt_space_info
       >   (permpct    OUT PLS_INTEGER,
       >    permmaxpct OUT PLS_INTEGER,
       >    temppct    OUT PLS_INTEGER,
       >    tempmaxpct OUT PLS_INTEGER) AS
       >    monitor    sys.monitor%ROWTYPE;
       > BEGIN
       >   SELECT * INTO monitor FROM sys.monitor;
       >   permpct := monitor.perm_in_use_size * 100 / 
                 monitor.perm_allocated_size;
       >   permmaxpct := monitor.perm_in_use_high_water * 100 / 
                 monitor.perm_allocated_size;
       >   temppct := monitor.temp_in_use_size * 100 / 
                 monitor.temp_allocated_size;
       >   tempmaxpct := monitor.temp_in_use_high_water * 100 / 
                 monitor.temp_allocated_size;
       > END;
       >/

Procedure created.

変数を宣言し、tt_space_infoをコールします。出力できるように、パラメータ値がttIsqlに戻されます。

Command> VAR permpct NUMBER
Command> VAR permpctmax NUMBER
Command> VAR temppct NUMBER
Command> VAR temppctmax NUMBER
Command> BEGIN
       >   tt_space_info(:permpct, :permpctmax, :temppct, :temppctmax);
       > END;
       >/

PL/SQL procedure successfully completed.

Command> PRINT permpct;
PERMPCT              : 4

Command> PRINT permpctmax;
PERMPCTMAX           : 4

Command> PRINT temppct;
TEMPPCT              : 11

Command> PRINT temppctmax;
TEMPPCTMAX           : 11

また、PL/SQL文で実行可能な文ハンドルを、OUT参照カーソル・パラメータで戻すこともできます。PL/SQL文はカーソルに関連付けられている問合せを選択できます。次の例は、昇順と降順をランダムに選択する参照カーソルをオープンします。

Command> VARIABLE ref REFCURSOR;
Command> BEGIN
    >    IF (mod(dbms_random.random(), 2) = 0) THEN
    >     open :ref for select object_name from SYS.ALL_OBJECTS order by 1 asc;
    >    ELSE
    >     open :ref for select object_name from SYS.ALL_OBJECTS order by 1 desc;
    >    end if;
    >   END;
    >   /

PL/SQL procedure successfully completed.

参照カーソルから結果セットをフェッチするには、PRINTコマンドを使用します。

Command> PRINT ref 
REF           : 
< ACCESS$ >
< ALL_ARGUMENTS >
< ALL_COL_PRIVS >
< ALL_DEPENDENCIES >
...
143 rows found.

または、結果セットが降順になっている場合、次のように出力されます。

Command> PRINT ref
REF          : 
< XLASUBSCRIPTIONS >
< WARNING_SETTINGS$ >
< VIEWS >
...
143 rows found.

問合せオプティマイザ計画の参照および変更

次の項では、問合せオプティマイザ計画、SQLコマンド・キャッシュ内のコマンド、またはSQLコマンド・キャッシュ内のコマンドに関する問合せ計画を表示する方法について説明します。

showplanコマンドの使用

組込みshowplanコマンドを使用すると、TimesTen Data Managerで問合せの実行に使用される問合せオプティマイザ計画が表示されます。また、ttIsqlには、この問合せオプティマイザ計画を変更するための組込み問合せオプティマイザ・ヒント・コマンドが用意されています。showplanコマンドを次に示す組込みコマンドと組み合せて使用すると、最適な実行計画を設計できます。TimesTen問合せオプティマイザの詳細は、「TimesTen問合せオプティマイザ」を参照してください。

  • optprofile: 現行のオプティマイザ・ヒントの設定および結合順序を表示します。

  • setjoinorder: 結合順序を設定します。

  • setuseindex: 索引ヒントを設定します。

  • tryhash: ハッシュ索引の使用を有効または無効にします。

  • trymergejoin: マージ結合を有効または無効にします。

  • trynestedloopjoin: ネステッド・ループ結合を有効または無効にします。

  • tryserial: シリアル・スキャンを有効または無効にします。

  • trytmphash: 一時ハッシュ索引の使用を有効または無効にします。

  • trytmptable: 中間結果表の使用を有効または無効にします。

  • trytmpttree: 一時範囲索引の使用を有効または無効にします。

  • tryttree: 範囲索引の使用を有効または無効にします。

  • tryrowid: ROWIDスキャンの使用を有効または無効にします。

  • trytbllocks: 表ロックの使用を有効または無効にします。

  • unsetjoinorder: 結合順序を消去します。

  • unsetuseindex: 索引ヒントを消去します。

showplanコマンドおよび問合せオプティマイザ・ヒント・コマンドを使用する場合は、自動コミット機能が無効である必要があります。自動コミットを無効にするには、ttIsqlautocommit組込みコマンドを使用します。

次の例では、これらのコマンドを使用して問合せオプティマイザの実行計画を変更する方法を示します。

Command> CREATE TABLE T1 (A NUMBER);
Command> CREATE TABLE T2 (B NUMBER);
Command> CREATE TABLE T3 (C NUMBER);
Command>
Command> INSERT INTO T1 VALUES (3);
1 row inserted.
Command> INSERT INTO T2 VALUES (3);
1 row inserted.
Command> INSERT INTO T3 VALUES (3);
1 row inserted.
Command> INSERT INTO T1 VALUES (4);
1 row inserted.
Command> INSERT INTO T2 VALUES (5);
1 row inserted.
Command> INSERT INTO T3 VALUES (6);
1 row inserted.
Command>
Command> autocommit 0;
Command> showplan;
Command> SELECT * FROM T1, T2, T3 WHERE A=B AND B=C AND A=B;

Query Optimizer Plan:

  STEP: 1
  LEVEL: 3
  OPERATION: TblLkSerialScan
  TBLNAME: T1
  IXNAME: <NULL>
  PRED: <NULL>
  OTHERPRED: <NULL>

  STEP: 2
  LEVEL: 3
  OPERATION: TblLkSerialScan
  TBLNAME: T2
  IXNAME: <NULL>
  PRED: <NULL>
  OTHERPRED: T1.A = T2.B AND T1.A = T2.B

  STEP: 3
  LEVEL: 2
  OPERATION: NestedLoop
  TBLNAME: <NULL>
  IXNAME: <NULL>
  PRED: <NULL>
  OTHERPRED: <NULL>

  STEP: 4
  LEVEL: 2
  OPERATION: TblLkSerialScan
  TBLNAME: T3
  IXNAME: <NULL>
  PRED: <NULL>
  OTHERPRED: T2.B = T3.C

  STEP: 5
  LEVEL: 1
  OPERATION: NestedLoop
  TBLNAME: <NULL>
  IXNAME: <NULL>
  PRED: <NULL>
  OTHERPRED: <NULL>

< 3, 3, 3 >
1 row found.
Command> trytbllocks 0;
Command> tryserial 0;
Command> SELECT * FROM T1, t2, t3 WHERE A=B AND B=C AND A=B;

Query Optimizer Plan:

  STEP: 1
  LEVEL: 3
  OPERATION: TmpTtreeScan
  TBLNAME: T1
  IXNAME: <NULL>
  PRED: <NULL>
  OTHERPRED: <NULL>

  STEP: 2
  LEVEL: 3
  OPERATION: TmpTtreeScan
  TBLNAME: T2
  IXNAME: <NULL>
  PRED: T2.B >= T1.A
  OTHERPRED: <NULL>

  STEP: 3
  LEVEL: 2
  OPERATION: MergeJoin
  TBLNAME: <NULL>
  IXNAME: <NULL>
  PRED: T1.A = T2.B AND T1.A = T2.B
  OTHERPRED: <NULL>

  STEP: 4
  LEVEL: 2
  OPERATION: TmpTtreeScan
  TBLNAME: T3
  IXNAME: <NULL>
  PRED: <NULL>
  OTHERPRED: T2.B = T3.C

  STEP: 5
  LEVEL: 1
  OPERATION: NestedLoop
  TBLNAME: <NULL>
  IXNAME: <NULL>
  PRED: <NULL>
  OTHERPRED: <NULL>

< 3, 3, 3 >
1 row found.
Command>

この例では、3つの表に対して問合せが実行され、問合せオプティマイザの計画が表示されています。1つ目のバージョンの問合せでは、問合せオプティマイザのデフォルトの実行計画が使用されています。一方、2つ目のバージョンでは、trytbllocksおよびtryserial組込みヒント・コマンドを使用して問合せオプティマイザの計画が変更されています。2つ目のバージョンの問合せでは、シリアル・スキャンおよびネステッド・ループ結合ではなく、一時索引スキャンおよびマージ結合が使用されています。

このように、showplanコマンドをttIsqlの組込み問合せオプティマイザ・ヒント・コマンドと組み合せて使用すると、アプリケーション要件を満たすために使用する実行計画を迅速に決定できます。

SQLコマンド・キャッシュからのコマンドおよび実行計画の表示

次の項では、コマンドおよびその実行計画の表示方法について説明します。

SQLコマンド・キャッシュに格納されたコマンドの表示

ttIsqlcmdcacheコマンドで、ttSqlCmdCacheInfo組込みプロシージャが起動され、TimesTen SQLコマンド・キャッシュの内容が表示されます。このプロシージャの詳細は、「SQLコマンド・キャッシュに格納されたコマンドの表示」を参照してください。

パラメータなしでcmdcacheコマンドを実行する場合、SQLコマンド・キャッシュの内容がすべて表示されます。ttSqlCmdCacheInfo組込みプロシージャと同様、コマンドIDを指定して、表示する特定のコマンドを指定できます。

また、特定の所有者または問合せテキストと一致するコマンドのみが表示されるように、ttIsqlcmdcacheコマンドで結果をフィルタ処理できます。

cmdcacheコマンドの構文は次のとおりです。

cmdcache [[by {sqlcmdid | querytext | owner}] <query_substring>

ownerパラメータを指定した場合、結果が所有者によりフィルタ処理され、<query_substring>により識別され、戻された各コマンドに表示されます。querytextパラメータを指定した場合、<query_substring>内で指定された部分文字列を含む問合せがすべて表示されるように結果がフィルタ処理されます。cmdcache<query_substring>など、<query_substring>のみを指定した場合、コマンドでは<query_substring>で問合せテキストがフィルタ処理されます。

SQLコマンド・キャッシュでの文に関する問合せ計画の表示

ttIsqlexplainコマンドでは、個々のSQLコマンドに関する問合せ計画を表示します。

  • SQLコマンド・キャッシュからコマンドIDを指定した場合、explainコマンドによりttSqlCmdQueryPlan組込みプロシージャが起動され、TimesTen SQLコマンド・キャッシュに格納された個々のコマンドに関する問合せ計画が表示されます。実行計画を書式設定された方法で表示する場合は、ttSqlCmdQueryPlan組込みプロセスをコールするかわりに、explainコマンドを実行します。どちらの方法でも同じ情報が提示されますが、ttSqlCmdQueryPlan組込みプロセスではデータが生データ形式で提示されます。ttSqlCmdQueryPlanプロシージャの詳細は、「SQLコマンド・キャッシュに格納されているコマンドに関連付けられた問合せ計画の表示」を参照してください。

  • SQL文または履歴項目番号を指定した場合、そのSQL文に関する実行計画を表示するために必要なSQL文をexplainコマンドで実行します。

explainコマンドの構文は次のとおりです。

explain [plan for] {[<Connid>.]<ttisqlcmdid> | sqlcmdid <sqlcmdid> | <sqlstmt> | !<historyitem>}

ttSqlCmdQueryPlan組込みプロシージャと同様、コマンドIDを提示して、表示する特定のコマンドを指定できます。コマンドIDは、「SQLコマンド・キャッシュに格納されたコマンドの表示」で説明されているとおり、cmdcacheコマンドで取得できます。

次の例に、38001456というコマンドIDに関する実行計画を示します。

Command> explain sqlcmdid 38001456;
 
Query Optimizer Plan:
 Query Text: select * from all_objects where object_name = 'DBMS_OUTPUT'
 
  STEP:             1
  LEVEL:            12
  OPERATION:        TblLkTtreeScan
  TABLENAME:        OBJ$
  TABLEOWNERNAME:   SYS
  INDEXNAME:        USER$.I_OBJ
  INDEXEDPRED:      
  NONINDEXEDPRED:   (RTRIM( NAME ))  = DBMS_OUTPUT;NOT( 10 = TYPE#) ;(  FLAGS ^ 128 = 0) ;
 
 
  STEP:             2
  LEVEL:            12
  OPERATION:        RowLkTtreeScan
  TABLENAME:        OBJAUTH$
  TABLEOWNERNAME:   SYS
  INDEXNAME:        OBJAUTH$.I_OBJAUTH1
  INDEXEDPRED:      ( (GRANTEE#=1 )  OR (GRANTEE#=10 ) )  AND ( (PRIVILEGE#=8 ) )
  NONINDEXEDPRED:   OBJ# = OBJ#;
 
 
  STEP:             3
  LEVEL:            11
  OPERATION:        NestedLoop(Left OuterJoin)
  TABLENAME:        
  TABLEOWNERNAME:   
  INDEXNAME:        
  INDEXEDPRED:      
  NONINDEXEDPRED: 
...
 STEP:             21
  LEVEL:            1
  OPERATION:        Project
  TABLENAME:        
  TABLEOWNERNAME:   
  INDEXNAME:        
  INDEXEDPRED:      
  NONINDEXEDPRED:   
 
Command> 

また、ttIsqlexplainコマンドで、指定したSQL問合せに関する実行計画を生成できます。たとえば、select * from dual;というSQL問合せに関する実行計画は次のようになります。

Command> explain select * from dual;
 
Query Optimizer Plan:
 
  STEP:                1
  LEVEL:               1
  OPERATION:           RowLkSerialScan
  TBLNAME:             DUAL
  IXNAME:              <NULL>
  INDEXED CONDITION:   <NULL>
  NOT INDEXED:         <NULL>
 

また、コマンド履歴をもとに実行計画を取得することもできます。次の例では、以前に実行したSQL文の実行計画を、履歴コマンドIDを使用して表示する方法を示します。

Command> select * from all_objects where object_name = 'DBMS_OUTPUT';
< SYS, DBMS_OUTPUT, <NULL>, 241, <NULL>, PACKAGE, 2009-10-13 10:41:11, 2009-10-13 
10:41:11, 2009-10-13:10:41:11, VALID, N, N, N, 1, <NULL> >
< PUBLIC, DBMS_OUTPUT, <NULL>, 242, <NULL>, SYNONYM, 2009-10-13 10:41:11, 
2009-10-13 10:41:11, 2009-10-13:10:41:11, INVALID, N, N, N, 1, <NULL> >
< SYS, DBMS_OUTPUT, <NULL>, 243, <NULL>, PACKAGE BODY, 2009-10-13 10:41:11, 
2009-10-13 10:41:11, 2009-10-13:10:41:11, VALID, N, N, N, 2, <NULL> >
3 rows found.
Command> history;
1     connect "DSN=cache";
2     help cmdcache;
3     cmdcache;
4     explain select * from dual;
5     select * from all_objects where object_name = 'DBMS_OUTPUT';
Command> explain !5;
 
Query Optimizer Plan:
 
  STEP:                1
  LEVEL:               10
  OPERATION:           TblLkTtreeScan
  TBLNAME:             SYS.OBJ$
  IXNAME:              USER$.I_OBJ
  INDEXED CONDITION:   <NULL>
  NOT INDEXED:         O.FLAGS & 128 = 0 AND CAST(RTRIM (O.NAME) AS VARCHAR2(30 
BYTE) INLINE) = 'DBMS_OUTPUT' AND O.TYPE# <> 10
 
  STEP:                2
  LEVEL:               10
  OPERATION:           RowLkTtreeScan
  TBLNAME:             SYS.OBJAUTH$
  IXNAME:              OBJAUTH$.I_OBJAUTH1
  INDEXED CONDITION:   (OA.GRANTEE# = 1 OR OA.GRANTEE# = 10) AND OA.PRIVILEGE# = 8
  NOT INDEXED:         OA.OBJ# = O.OBJ#
 
  STEP:                3
  LEVEL:               9
  OPERATION:           NestedLoop(Left OuterJoin)
  TBLNAME:             <NULL>
  IXNAME:              <NULL>
  INDEXED CONDITION:   <NULL>
  NOT INDEXED:         <NULL>
 
  STEP:                4
  LEVEL:               9
  OPERATION:           TblLkTtreeScan
  TBLNAME:             SYS.OBJAUTH$
  IXNAME:              OBJAUTH$.I_OBJAUTH1
  INDEXED CONDITION:   (OBJAUTH$.GRANTEE# = 1 OR OBJAUTH$.GRANTEE# = 10) AND 
(OBJAUTH$.PRIVILEGE# = 2 OR OBJAUTH$.PRIVILEGE# = 3 OR OBJAUTH$.PRIVILEGE# = 4 OR 
OBJAUTH$.PRIVILEGE# = 5 OR OBJAUTH$.PRIVILEGE# = 8)
  NOT INDEXED:         O.OBJ# = OBJAUTH$.OBJ#
... 
 STEP:                19
  LEVEL:               1
  OPERATION:           NestedLoop(Left OuterJoin)
  TBLNAME:             <NULL>
  IXNAME:              <NULL>
  INDEXED CONDITION:   <NULL>
  NOT INDEXED:         O.OWNER# = 1 OR (O.TYPE# IN (7,8,9) AND (NOT( ISNULLROW 
(SYS.OBJAUTH$.ROWID)) OR NOT( ISNULLROW (SYS.SYSAUTH$.ROWID)))) OR (O.TYPE# IN 
(1,2,3,4,5) AND NOT( ISNULLROW (SYS.SYSAUTH$.ROWID))) OR (O.TYPE# = 6 AND NOT( 
ISNULLROW (SYS.SYSAUTH$.ROWID))) OR (O.TYPE# = 11 AND NOT( ISNULLROW 
(SYS.SYSAUTH$.ROWID))) OR (O.TYPE# NOT IN (7,8,9,11) AND NOT( ISNULLROW 
(SYS.OBJAUTH$.ROWID))) OR (O.TYPE# = 28 AND NOT( ISNULLROW (SYS.SYSAUTH$.ROWID))) 
OR (O.TYPE# = 23 AND NOT( ISNULLROW (SYS.SYSAUTH$.ROWID))) OR O.OWNER# = 10

timing ODBC関数コール

一般的なODBC関数コールの実行に必要な時間に関する情報は、ttIsqltimingコマンドを使用して表示できます。タイミング機能が有効になっている場合は、多くの組込みttIsqlコマンドによって、実行されるttIsqlコマンドに対応する第一のODBC関数コールの実行経過時間がレポートされます。

たとえば、ttIsqlconnectコマンドの実行時には、いくつかのODBC関数コールが実行されますが、connectに関連付けられている第一のODBC関数コールはSQLDriverConnectです。この関数コールは、次に示すように測定およびレポートされます。

Command> timing 1;
Command> connect "DSN=MY_DSN";
Connection successful: DSN=MY_DSN;DataStore=E:\ds\MY_DSN;DRIVER=E:\WINNT\System32\ TTdv1121.dll;
(Default setting AutoCommit=1)
Execution time (SQLDriverConnect) = 1.2626 seconds.
Command>

前述の例では、SQLDriverConnectコールの実行に約1.26秒かかりました。

問合せを測定するtimingコマンドを使用すると、問合せの実行に必要な時間および問合せ結果のフェッチに必要な時間が測定されます。問合せ結果を書式設定し表示する時間の測定を回避するには、問合せを実行する前に冗長性レベルを0(ゼロ)に設定します。

Command> timing 1;
Command> verbosity 0;
Command> SELECT * FROM T1;
Execution time (SQLExecute + FetchLoop) = 0.064210 seconds.
Command>

XLAブックマークの管理

xlabookmarkdeleteコマンドを使用すると、現在のXLAブックマークのステータスの確認およびブックマークの削除を行うことができます。このコマンドには、XLA権限またはオブジェクト所有権が必要です。

たとえば、XLAアプリケーションxlaSimpleを実行している場合は、次のように入力してブックマークのステータスを確認できます。

Command> xlabookmarkdelete;

XLA Bookmark: xlaSimple
  Read Log File: 0
  Read Offset: 630000
  Purge Log File: 0
  Purge Offset: 629960
  PID: 2808
  In Use: No
1 bookmark found.

ブックマークを削除するには、次のように入力します。

Command> xlabookmarkdelete xlaSimple;
Command>