afliao
作者afliao·2017-04-13 11:19
数据库管理员·南大通用

GBase 8t SQLIDEBUG跟踪ODBC,JDBC调用过程

字数 2690阅读 1421评论 0赞 0

我们在通过应用程序访问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:文件路径”
QQ截图20170413111827.png

QQ截图20170413111827.png

注意: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 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广