スケーラブルデータベースサーバ HiRDB Version 8 UAP開発ガイド
実行したUAPのSQLトレース情報をSQLトレースファイルに取得します。
UAP実行時にSQLエラーが発生した場合,SQLトレース情報を参照すると,エラーの原因となるSQL文を特定できます。
SQLトレースファイルは,取得した情報で満杯になると,最も古い情報から順次新しい情報に書き替えられます。
SQLトレース情報は,クライアント環境定義のPDCLTPATH及びPDSQLTRACEに値を設定することで取得できます。各クライアント環境定義については,「6.6 クライアント環境定義(環境変数の設定)」を参照してください。
SQLトレースファイルの出力先及びファイル名について説明します。
表11-1 X/Openに従ったAPI(TX_関数)の使用の有無と作成されるファイル名
| TX_関数の使用 | 作成されるファイル名 |
|---|---|
| なし | pdsql1.trc,及びpdsql2.trc |
| あり | pdsqlxxxxx-1.trc,及びpdsqlxxxxx-2.trc |
(凡例)xxxxx:UAP実行時のプロセスID
ライブラリ種別ごとのSQLトレースファイル名を次の表に示します。
表11-2 ライブラリ種別ごとのSQLトレースファイル名
| ライブラリ種別※ | TX_関数の使用 | 環境変数PDXATRCFILEMODE | クライアントライブラリ | |
|---|---|---|---|---|
| バージョン08-05より前 | バージョン08-05以降 | |||
| 通常ライブラリ | − | − | pdsql1.trc又はpdsql2.trc | pdsql1.trc又はpdsql2.trc |
| シングルスレッド版XAライブラリ | なし | LUMP | pdsql1.trc又はpdsql2.trc | pdsql1.trc又はpdsql2.trc |
| SEPARATE | pdsqlxxxxx-1.trc又はpdsqlxxxxx-2.trc | pdsql1.trc又はpdsql2.trc | ||
| あり | LUMP | pdsql1.trc又はpdsql2.trc | pdsql1.trc又はpdsql2.trc | |
| SEPARATE | pdsqlxxxxx-1.trc又はpdsqlxxxxx-2.trc | pdsqlxxxxx-1.trc又はpdsqlxxxxx-2.trc | ||
| マルチスレッド版XAライブラリ | なし | − | pdsql1.trc又はpdsql2.trc | pdsql1.trc又はpdsql2.trc |
| あり | LUMP | pdsql1.trc又はpdsql2.trc | pdsql1.trc又はpdsql2.trc | |
| SEPARATE | pdsqlxxxxx-1.trc又はpdsqlxxxxx-2.trc | pdsqlxxxxx-1.trc又はpdsqlxxxxx-2.trc | ||
| ライブラリ種別 | UNIX環境のライブラリ名※ | Windows環境のライブラリ名 |
|---|---|---|
| 通常ライブラリ | libzclt.sl,ibzclt64.sl,libzclts.sl,libzclts64.sl,libzcltk.sl,libzcltk64.sl,libzcltm.sl,libclt.a,libclt64.a,libclts.a,libclts64.a,libcltk.a,libcltk64.a,libcltm.a,libzclt6k.a,libzclt6k64.a | cltdll.dll,pdcltm32.dll,pdcltp32.dll,pdcltm50.dll,pdcltm71.dll,pdcltm80s.dll,pdcltm64.dll |
| シングルスレッド版XAライブラリ | libzcltx.sl,libzclty.sl,libzcltx64.sl,libzclty64.sl,libzcltxs.sl,libzcltys.sl,libcltxa.a,libcltya.a,libcltxas.a,libcltyas.a,libzclt6ys.a,libzclt6ys64.a | pdcltx32.dll,pdcltxs.dll,pdcltx64.dll,pdcltxs64.dll |
| マルチスレッド版XAライブラリ | libzcltxk.sl,libzcltyk.sl,libzcltxk64.sl,libzcltyk64.sl,libcltxak.a,libclttyak.a,libzclt6yk.a | pdcltxm5.dll,pdcltxm64.dll |
HiRDB SQL Tuning AdvisorのSQLトレース解析機能では,次のような解析処理ができるため性能上の問題点を特定するのに便利です。
SQLトレースを解析する手順を次に示します。
SQLトレース情報は,SQL文の実行終了時に出力されます。
出力されるSQLトレース情報の例とその説明を次に示します。
[20] [19] [22]
** UAP TRACE (CLT:VV-RR(Mmm dd yyyy) SVR:VV-RR US) WIN32(WIN32) **
USER APPLICATION PROGRAM FILE NAME : XXXXXXXX [1]
USERID : YYYYYYYY [2]
UAP START TIME : YYYY/MM/DD HH:MM:SS [3]
UAP ENVIRONMENT : [4]
LANG(ja_JP.SJIS)
USER("hirdb")
HOST(h9000vr5)
NAMEPORT(20281)
FESHOST()
SVCGRP() SVCPORT() SRVTYPE()
SWAIT(600) CWAIT(0) SWATCH(0)
BLKF(1) RDABLKF(-1) LOCKLMT(0) ISLLVL(2) DBLOG(ALL) DFLNVAL(NOUSE)
AGGR(1024) DLKPRIO(64) EXWARN(NO) VWOPTMODE(0)
LOCKSKIP(NO) CLTGRP(A) DSQLOBJCACHE(YES) PLGIXMK(NO)
CLTRCVPORT(5000) CLTRCVADDR(192.134.35.4) PLGPFSZ(8192)
PLGPFSZEXP(8192) SPACELVL(-1) STJTRNOUT()
OPTLVL("SELECT_APSL","RAPID_GROPING")
ADDITIONALOPTLVL("COST_BASE_2","APPLY_HASH_JOIN")
UAPREPLVL() REPPATH()
TRCPATH()
IPC(MEMORY) SENDMEMSIZE(16) RECVMEMSIZE(32)
HASHTBLSIZE(128) CMMTBFDDL(NO) PRPCRCLS( )
SQLTRCOPENMODE(SQL) AUTOCONNECT(ON) CWAITTIMEWRNPNT(-1) TCPCONOPT(0)
WRTLNFILSZ(-1) WRTLNCOMSZ(1024)
WRTLNPATH( ) UAPENVFILE( )
TP1SERVICE(NO) AUTORECONNECT(NO) RCCOUNT(0) RCINTERVAL(0)
KALVL(0) KATIME(0) CLTCNVMODE(NOUSE)
PRMTRC(YES) PRMTRCSIZE(256) BESCONHOLD() BESCONHTI(-1)
BLKBUFFSIZE(0) BINARYBLKF(NO) FORUPDATEEXLOCK(NO)
CNSTRNTNAME() SQLTEXTSIZE(4096) RCTRACE(-1)
FESGRP()
NBLOCKWAITTIME(0) CONNECTWAITTIME(300) DBBUFLRU(YES)
UAPEXERLOGUSE() UAPEXERLOGPRMSZ() HJHASHINGMODE(TYPE1)
DDLDEAPRP(NO) DELRSVWDFILE() HATRNQUEUING()
ODBSPLITSIZE(100) NODELAYACK(NO) CURSORLVL(0)
TAAPINFPATH() TAAPINFMODE(0) TAAPINFSIZE(409600)
JETCOMPATIBLE(NO) SUBSTRLEN() BLKFUPD() ARYERRPOS()
CALCMDWAITTIME(0) BLKFERRBREAK(NO) XAAUTORECONNECT(NO)
CLTBINDLOOPBACKADDR(NO)
STANDARDSQLSTATE() LCKWAITTIME(-1) DDLDEAPRPEXE(NO)
CONNECTION STATUS : [5]
CURHOST(dcm3500) CURPORT(4439) SRVNAME(fes1)
CNCTNO(1) SVRPID(8945) CLTPID(9155) CLTTID( ) CLTCNCTHDL(0x0)
[6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [23]
CNCT CLPID CLTID NO OP SEC SQL SQL START-TIME END-TIME OP EXEC-TIME
NO CODE NO CODE WARN TION
---- ----- ----- -- ---- --- ---- ----- ------------ ------------ ---- -----------
1 9155 0 1 CNCT 0 0 WC040 16:03:55.720 16:03:58.080 0001 2356125
1 9155 0 2 AUI2 1 0 -0000 16:03:58.630 16:03:59.400 M000 769651
*SQL* INSERT INTO ZAIKO(GNO,GNAME,KIKAKU,TANKA,SURYO,GENKA) VALUES(?,?, .........17
?,?,?,?) ........................................................................17
1 9155 0 3 SET 2 0 -0000 16:04:00.820 16:04:01.540 M000 719825
*SQL* SELECT GNO,GNAME,KIKAKU,TANKA,SURYO,GENKA FROM ZAIKO ......................17
1 9155 0 4 OPEN 2 0 -0000 16:04:02.090 16:04:02.800 M000 709123
1 9155 0 5 FETC 2 -204 -0000 16:04:03.080 16:04:03.790 M000 708902
1 9155 0 6 SET 2 0 W8800 16:04:04.060 16:04:04.830 M000 765147
*SQL(AUTHID)* INSERT INTO TBL01 VALUES('12345',12345) ...........................17
1 9155 0 7 SAUT 0 0 -0000 16:04:04.834 16:04:04.835 M000 912
*USER* hirdb01 ..................................................................18
1 9155 0 8 AUI2 3 0 -0000 16:05:05.110 16:05:05.121 M000 9456
*SQL* INSERT INTO TBL01 VALUES(?,100) ...........................................21
*PARAM* NO= 1 COD=c5 XDIM= 1 SYS= 0 LEN= 15 IND= 0 .......21
DATA=30 35 2d 30 35 00 00 00 00 00 00 00 00 00 00 *05-05.........* ..21
1 9155 9 DISC 0 0 -0000 16:05:55.110 16:05:56.660 M004 1547893
|
| オペレーションコード | 対応するSQL文 |
|---|---|
| ALCR | ALLOCATE CURSOR文 |
| AUI2 | DELETE文(静的SQL),INSERT文(静的SQL),UPDATE文(静的SQL),LOCK文(静的SQL),PURGE TABLE文(静的SQL),1行SELECT文(静的SQL),FREE LOCATOR文(静的SQL) |
| AUI3 | 代入文(静的SQL) |
| AUX | EXECUTE文 |
| AUXI | EXECUTE IMMEDIATE文,すべての定義系SQL |
| AUXO | EXECUTE文(INTO指定) |
| CALL | CALL文 |
| CLIN | INSTALL CLIB |
| CLOS | CLOSE文 |
| CLRM | REMOVE CLIB |
| CLRP | REPLACE CLIB |
| CMIT | COMMIT文 |
| CNCT | CONNECT文 |
| CPRP | コミットプリペア※ |
| DESC | DESCRIBE文(OUTPUT指定) |
| DEST | DESCRIBE TYPE文 |
| DISC | DISCONNECT文,COMMIT文(RELEASE指定) |
| DISR | ROLLBACK文(RELEASE指定) |
| DIST | Disconnect+Tran Check※ |
| DSCM | システムが使用 |
| DSET | DEALLOCATE PREPARE文 |
| DSPR | システムが使用 |
| DSRL | システムが使用 |
| FETC | FETCH文 |
| GETD | GET DIAGNOSTICS |
| HVAR | DESCRIBE文(INPUT指定) |
| JARI | INSTALL JAR |
| JARR | REPLACE JAR |
| JARU | REMOVE JAR |
| OPEN | OPEN文(動的SQL) |
| OPN2 | OPEN文(静的SQL) |
| OPNR | OPEN文(動的SQL(複数カーソル)) |
| RENV | システムが使用 |
| RNCN | CONNECT文(TO指定) |
| RNDS | DISCONNECT文(TO指定) |
| RNSC | SET CONNECTION文 |
| ROLL | ROLLBACK文 |
| RSDC | DESCRIBE文(OUTPUT,RESULT SET指定) |
| RSFT | FETCH文(RESULT SET指定) |
| RSCL | CLOSE文(RESULT SET指定) |
| SAUH | SET SESSION AUTHORIZATION文 |
| SET | PREPARE文 |
| SINF | システムが使用 |
| SOPT | システムが使用 |
| SVLS | システムが使用 |
| THRE | システムが使用 |
| THSU | システムが使用 |
| TRCK | システムが使用 |
| TRC2 | システムが使用 |
| TRST | システムが使用 |
| TSCM | システムが使用 |
| TSRL | Transfer Rollback※ |
| TSPR | Transfer Prepare※ |
注※ XAインタフェースを使用した場合だけ出力されます。
| プラットフォーム | 表示される文字 |
|---|---|
| HP-UX 11.0 | HP32 |
| HP-UX 11.0(64ビットモード) | HP64 |
| Solaris | SOL |
| Solaris(64ビットモード) | SOL64 |
| AIX | AIX |
| AIX(64ビットモード) | AIX64 |
| Linux | LINUX |
| Windows | WIN32 |
| HP-UX (IPF)32ビットモード | HPI32 |
| HP-UX (IPF)64ビットモード | HPI64 |
| Linux(IPF) | LINI64 |
| Linux (EM64T) | LINX64 |
| Windows(IPF)64ビットモード | WINI64 |
| Windows(x64)64ビットモード | WINX64 |
| Type4 JDBCドライバ | Type4 |
| ライブラリ名称 | 表示される文字 |
|---|---|
| libzclt.sl,libclt.a | UNIX,UNIX_32 |
| libzclts.sl,libclts.a | UNIX_S,UNIX_32S |
| libzcltm.sl,libcltm.a | UNIX_M,UNIX_32M |
| libzcltk.sl,libcltk.a,libzclt6k.a | UNIX_K,UNIX_32K |
| libzcltx.sl,libcltxa.a | UNIX_XA,UNIX_XA_32 |
| libzcltxs.sl,libcltxas.a,libzclt6ys.a | UNIX_XA_S,UNIX_XA_32S |
| libzcltxm.sl,libcltxam.a | UNIX_XA_M,UNIX_XA_32M |
| libzcltxk.sl,libcltxak.a,libzclt6yk.a | UNIX_XA_K,UNIX_XA_32K |
| libzclt64.sl,libclt64.a | UNIX_64 |
| libzcltk64.sl,libcltk64.a,libzclt6k64.a | UNIX_64K |
| libzclts64.sl | UNIX_64S |
| libzcltx64.sl,libzclty64.sl | UNIX_XA_64 |
| libzcltxk64.sl,libzcltyk64.sl | UNIX_XA_64K |
| libzcltxs64.sl,libzcltys64.sl,libzclt6ys64.a | UNIX_XA_64S |
| CLTDLL.DLL | WIN_32 |
| PDCLTM32.DLL | WIN_M32 |
| PDCLTM50.DLL | WIN_M50 |
| PDCLTM71.DLL | WIN_M71 |
| PDCLTM80S.DLL | WIN_M80S |
| PDCLTP32.DLL | WIN_P32 |
| PDCLTX32.DLL | WIN_XA_32 |
| PDCLTXM.DLL | WIN_XA_32M |
| PDCLTXS.DLL | WIN_XA_32S |
| PDCLTXM5.DLL | WIN_XA_50M |
| PDCLTM64.DLL | WIN_M64 |
| PDCLTX64.DLL | WIN_XA_64 |
| PDCLTXM64.DLL | WIN_XA_64M |
| PDCLTXS64.DLL | WIN_XA_64S |
| PDJDBC2.JAR | Type4 |
SQLトレース情報を出力中にSQLトレースファイルの容量が一杯になると,HiRDBはそのファイルへ出力しないで,もう一方のSQLトレースファイルにSQLトレース情報を出力します。このとき,切り替え先のSQLトレースファイルに格納されている古いSQLトレース情報から順に消去され,新しいSQLトレース情報に書き換えられます。このため,必要な情報はUAP終了時にSQLトレースファイルの内容をコピーしてバックアップを取得しておいてください。
なお,現在使用しているSQLトレースファイルを知りたい場合は,ファイルの最終更新日時を調べてください。最終更新日時の新しい方が現在使用しているSQLトレースファイルになります。
HiRDBクライアントがWindows版の場合はdirコマンド又はエクスプローラで,ファイルの最終更新日時を調べてください。
HiRDBクライアントがUNIX版の場合はOSのls -lコマンドで,ファイルの最終更新日時を調べてください。
代表的なパラメタトレースの出力例を次に示します。
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.