我们在通过应用程序访问GBase 8t数据库,或者调试应用程序过程中,往往需要对应用程序访问数据库的过程进行跟踪,以便排查故障,调优程序。SQLIDEBUG就是GBase 8t自带的trace工具,能够将应用程序调用数据库的详细过程记录下来。
1, 跟踪unix/linux客户端odbc程序调用
打开trace开关
通过在客户端设置SQLIDEBUG环境变量打开trace开关。例如,在环境变量文件(ksh为.profile,bsh为.bash_profile)中设置:
export SQLIDEBUG=2:/tmp/8t/sqlidebug.txt
环境变量生效后,运行odbc程序过程中,在/tmp/8t目录中自动产生sqlidebug.txt_xxx格式的文件。例如,sqlidebug.txt _10679_0_22cb1e0。应用程序通过ODBC与数据库的交互信息均被记录在/tmp/8t/ sqlidebug.txt _10679_0_22cb1e0文件中。
解析trace 文件
SQLIDEBUG trace产生的文件为二进制文件,需要通过sqliprint命令进行解析。解析语法如下:
sqliprint -o /tmp/8t/trace.txt /tmp/8t/sqlidebug.txt_10679_0_22cb1e0
trace.txt文件即为解析后的跟踪信息。
informix@linux-tnrw:/tmp/8t> more trace.txt
SQLIDBG Version 1
S->C (4) Time: 2017-04-13 10:20:10.82588
SQ_INTERNALVER
Internal Version Number: 316
C->S (14) Time: 2017-04-13 10:20:10.82589
SQ_PROTOCOLS
Cprotocol stream len = 8
byte[0] = ff
byte[1] = fe
byte[2] = 9f
byte[3] = fe
byte[4] = 74
byte[5] = aa
byte[6] = 72
byte[7] = 93
SQ_EOT
S->C (16) Time: 2017-04-13 10:20:10.82596
SQ_PROTOCOLS
Sprotocol stream len = 9
byte[0] = bd
byte[1] = be
byte[2] = 9f
byte[3] = fe
byte[4] = 7f
byte[5] = b7
byte[6] = ff
byte[7] = ef
byte[8] = e0
SQ_EOT
C->S (32) Time: 2017-04-13 10:20:10.82614
SQ_CONNECT
"stores_demo" [11]
"stores_demo" [11]
C->S (66) Time: 2017-04-13 10:20:10.82618
SQ_COMMAND
values: 0
CMD.....: "select fname , lname from customer where lname < "C"" [52]
SQ_NDESCRIBE
SQ_WANTDONE
SQ_EOT
其中:C->S代表客户端向服务器发送请求,S->C代表服务器响应客户端请求。且每个通信环节都有时间戳,通信内容。
关闭trace开关
去掉SQLIDEBUG环境变量即可。
2,跟踪windows客户端odbc程序调用
打开trace开关
windows中打开SQLIDEBUG同unix/linux原理相同。以win7为例,步骤如下:
我的电脑属性高级系统设置环境变量在系统变量中新建,变量名为SQLIDEBUG,变量值为“2:文件路径”
注意:windows下,路径名称盘符后面需要双斜杠。
设置好环境变量后,运行odbc程序访问数据库,自动在E盘下产生sqlidebug.txt_xxx格式的文件。例如,sqlidebug.txt_3864_1196_b85b58
解析跟踪文件
cmd中执行:>sqliprt E:\\ sqlidebug.txt_3864_1196_b85b58 >>E:\\trace.txt
则可将跟踪信息解析到E盘trace.txt文件。
3,跟踪 JDBC程序调用
通过在URI中增加SQLIDEBUG参数实现。 URI格式参考:"jdbc:informix-sqli://172.16.3.15:9088/testdb:user=informix;password=informix;informixserver=gbaseserver;SQLIDEBUG=C:\\JDBCTrace.txt";
java程序运行过程中自动产生C:\\JDBCTrace.txtXXX文件,例如,JDBCTrace.txt1492053131600.0通过sqliprt来解析:
sqliprt C:\\JDBCTrace.txt1492053131600.0 >>C:\\trace.txt
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞0
添加新评论0 条评论