SQL_SNAP機能は、アプリケーションが実行したSQL文の情報を、ファイルに出力します。このファイルをスナップファイルといいます。この情報により、アプリケーションのデバッグ時に、SQL文が正しく動いているかどうかを確認することができます。
SQL_SNAP機能を利用するには、クライアント用の動作環境ファイルにSQL_SNAPパラメタを設定します。
指定形式については、“7.4.1 クライアント用の動作環境ファイルによる定義”を参照してください。
注意
本機能の利用は性能に影響を与えるため、デバッグ作業が終了したら、SQL_SNAPパラメタの設定をOFFにしてください。
また、格納データを暗号化している場合でも、スナップファイル内の情報は暗号化されません。そのため、デバッグ作業が終了したら、SQL_SNAPパラメタの設定をOFFにしてください。
次にSQL_SNAPパラメタの指定の例を示します。
出力レベル1のデバッグ情報を、SQLSNAP.LSTに出力します。
SQL_SNAP = (ON,SQLSNAP.LST,1)
繰り返し幅を指定して、デバッグ情報をSQLSNAP.LSTに出力します。
SQL_SNAP = ( ON,SQLSNAP.LST,1,100 )
↑
繰り返し幅 (1)
(1) 繰り返し幅を指定すると、実行したSQL文の情報を、指定した繰り返し幅でファイルに出力できます。これにより、必要な分だけの情報が取得できます。繰り返し幅の量を超えた時点で出力ファイルを再作成します。
たとえば、100を指定した場合は、100個のSQL文情報をファイルに出力した時点で、次のSQL文情報をファイルの先頭に出力します。
SQL_SNAP機能で出力される情報は、出力レベルの指定によって異なります。
1および2はシステム単位でスナップファイルを出力する場合に指定します。PRC1およびPRC2はプロセス単位でスナップファイルを出力する場合に指定します。
なお、出力されるSQL文は、アプリケーションに記述したものと同一ではありません。コンパイル・リンク時に加工したものが出力されます。
また、複数のアプリケーションが動作する場合は、クライアント用の動作環境ファイルの実行パラメタ(DIV_TRACE_FILE)の指定により、出力ファイル名の後にプロセスIDなどの情報を付加して、個別のトレース情報を出力します。
アプリケーションがマルチスレッド環境で動作する場合は、DIV_TRACE_FILEの指定に関係なく、出力ファイル名の後にプロセスIDやセションIDなどの情報を自動的に付加して、個別のトレース情報を出力します。
出力レベルの指定と出力情報の対応を以下に示します。
出力する情報 | 出力レベル | |||
---|---|---|---|---|
1 | 2 | PRC1 | PRC2 | |
アプリケーション名 | ○ | ○ | ○ | ○ |
SQL文 (注1) | ○ | ○ | ○ | ○ |
カーソル情報 | ○ | ○ | ○ | ○ |
ホスト変数情報(注2) | - | ○ | - | ○ |
SQLSTATE | ○ | ○ | ○ | ○ |
SQL文の処理時間 | ○ | ○ | ○ | ○ |
メッセージ | ○ | ○ | ○ | ○ |
注1)SQL文名のみ出力します。
注2)ホスト変数の属性(ATTRIBUTE)とデータ(VALUES)を出力します。ホスト変数の属性(ATTRIBUTE)は次のように表示されます。
ホスト変数の属性 (ATTRIBUTE) | ホスト変数のデータ型 |
---|---|
CHAR(n) | 固定長で長さn文字の文字列型 |
VCHAR(n) | 可変長で長さ最大n文字の文字列型 |
NCHAR(n) | 固定長で長さn文字の日本語文字列型 |
NVCHAR(n) | 可変長で長さ最大n文字までの日本語文字列型 |
NUMERIC | 桁数p、小数点以下q桁のゾーン形式10進数型( NUMERIC(p,q) ) |
DECIMAL | 桁数p、小数点以下q桁のパック形式10進数型 ( DECIMAL(p,q) ) |
SMALLINT | -215~215-1の整数型 |
INTEGER | -231~231-1の整数型 |
LONG | -263~263-1の整数型 |
FLOAT | 4バイトの浮動小数点数型 |
DOUBLE | 8バイトの浮動小数点数型 |
BLOB | バイナリ属性のデータ型 (SQL TYPE IS BLOB) |
ROW_ID | ROW_ID型 |
レベル1を指定した場合
出力レベルに1を指定した場合は、以下の情報が出力されます。
SQL-SNAP START 14:01:13 (1) 04/18 (2) APPLICATION : sample1 (3) STATEMENT : CONNECT (4) SQLSTATE : 00000 (5) SQLMSG : JYP2001I 正常に終了しました. (6) SQL-SNAP END 14:01:16 (7) (00:00:03.204000) (8) SQL-SNAP START 14:01:16 04/18 APPLICATION : sample1 STATEMENT : OPEN (9) CURSOR NAME : 会社名取出 (10) CURSOR : SELECT DISTINCT 会社名 FROM BUSINESS.取引先会社,BUSINESS.発注,BUS INESS.在庫 WHERE 取引先会社.取引先番号=発注.取引先番号 AND 取引製 品番号=製品番号 AND 製品名=? (11) SQLSTATE : 00000 SQLMSG : JYP2001I 正常に終了しました. SQL-SNAP END 14:01:17 (00:00:00.867000) SQL-SNAP START 14:01:17 04/18 APPLICATION : sample1 STATEMENT : FETCH (12) CURSOR NAME : 会社名取出 (13) SQLSTATE : 00000 SQLMSG : JYP2001I 正常に終了しました. SQL-SNAP END 14:01:17 (00:00:00.055000) :
(1) SQL文の実行を開始した時刻(時:分:秒)を示します。
(2) SQL文の実行を開始した日付(月/日)を示します。
(3) 実行したアプリケーションの名前を示します。
(4) 実行したSQL文の種類を示します。ここでは、CONNECT文を実行したことを示します。
(5) SQL文の実行後にSQLSTATEに通知された状態コードを示します。ここでは、CONNECT文の実行結果として、状態コード“00000”がSQLSTATEに通知されたことを示します。
(6) SQL文の実行後にSQLMSGに通知されたメッセージ内容を示します。ここでは、CONNECT文の実行結果として、メッセージ“JYP2001I 正常に終了しました.”がSQLMSGに通知されたことを示します。
(4)~(6)は、1つのSQL文の実行情報です。1つのSQL文の実行情報は、SQL-SNAP START と SQL-SNAP ENDの間に表示されます。
(7) SQL文の実行を終了した時刻(時:分:秒)を示します。
(8) SQL文の開始から終了までの経過時間(時:分:秒)を示します。
(9) カーソルのOPEN文を実行したことを示します。
(10) オープンしたカーソル名を示します。ここでは“会社名取出”を示します。
(11) カーソルの探索条件を示します。
(12) FETCH文を実行したことを示します。
(13) FETCH文を実行したカーソル名を示します。ここでは“会社名取出”を示します。
レベル2を指定した場合
出力レベルに2を指定した場合は、以下の情報が出力されます。
Solaris/Linuxの場合
SQL-SNAP START 14:01:13 (1) 04/18 (2) APPLICATION : sample1 (3) STATEMENT : CONNECT (4) CONNECTION INFORMATION (5) 001 : <SQL-SERVER> : SV1 002 : <USER-NAME> : USER1/PASS1 SQLSTATE : 00000 (6) SQLMSG : JYP2001I 正常に終了しました. (7) SQL-SNAP END 14:01:16 (8) (00:00:03.204000) (9) SQL-SNAP START 14:01:16 04/18 APPLICATION : sample1 STATEMENT : OPEN (10) CURSOR NAME : 会社名取出 (11) CURSOR : SELECT DISTINCT 会社名 FROM BUSINESS.取引先会社,BUSINESS.発注,BUS INESS.在庫 WHERE 取引先会社.取引先番号=発注.取引先番号 AND 取引製 品番号=製品番号 AND 製品名=? (12) INPUT VARIABLE (13) 001 : ATTRIBUTE NCHAR(10) (14) 0000(00000) a5c6a5ec a5d3a1a1 a1a1a1a1 a1a1a1a1 * テレビ * (14) 0010(00016) a1a1a1a1 * * (14) SQLSTATE : 00000 SQLMSG : JYP2001I 正常に終了しました. SQL-SNAP END 14:01:17 (00:00:00.867000) SQL-SNAP START 14:01:17 04/18 APPLICATION : sample1 STATEMENT : FETCH (15) CURSOR NAME : 会社名取出 (16) OUTPUT VARIABLE (17) 001 : ATTRIBUTE NCHAR(10) (18) 0000(00000) a5a2a5a4 a5c7a5a2 bea6bbf6 a1a1a1a1 * アイデア商事 * (18) 0010(00016) a1a1a1a1 * * (18) SQLSTATE : 00000 SQLMSG : JYP2001I 正常に終了しました. SQL-SNAP END 14:01:17 (00:00:00.055000) :
(1) SQL文の実行を開始した時刻(時:分:秒)を示します。
(2) SQL文の実行を開始した日付(月/日)を示します。
(3) 実行したアプリケーションの名前を示します。
(4) 実行したSQL文の種類を示します。ここでは、CONNECT文を実行したことを示します。
(5) 実行したCONNECT文のコネクション情報を示します。ここでは、コネクション情報として、SQLサーバ名“SV1”およびユーザ指定“USER1/PASS1”を示します。
(6) SQL文の実行後にSQLSTATEに通知された状態コードを示します。ここでは、CONNECT文の実行結果として、状態コード“00000”がSQLSTATEに通知されたことを示します。
(7) SQL文の実行後にSQLMSGに通知されたメッセージ内容を示します。ここでは、CONNECT文の実行結果として、メッセージ“JYP2001I 正常に終了しました.”がSQLMSGに通知されたことを示します。
(4)~(7)は、1つのSQL文の実行情報です。1つのSQL文の実行情報は、SQL-SNAP START と SQL-SNAP ENDの間に表示されます。
(8) SQL文の実行を終了した時刻(時:分:秒)を示します。
(9) SQL文の開始から終了までの経過時間(時:分:秒)を示します。
(10) カーソルのOPEN文を実行したことを示します。
(11) オープンしたカーソル名を示します。ここでは“会社名取出”を示します。
(12) カーソルの探索条件を示します。
(13) カーソルに対する入力のホスト変数を示します。
(14) カーソルに対する入力のホスト変数の属性とデータの内容を16進数で示します。ここでは、ホスト変数“製品名”の属性とデータを示します。
(15) FETCH文を実行したことを示します。
(16) FETCH文を実行したカーソル名を示します。ここでは“会社名取出”を示します。
(17) FETCH文により位置づけた行に対する出力のホスト変数を示します。
(18) FETCH文に指定した出力のホスト変数の属性とデータの内容を16進数で示します。ここでは、ホスト変数“会社名”の属性と内容を示します。