gpt4 book ai didi

linux - 跟踪 ODBC 对 Informix Client for Linux 的调用

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:13:04 25 4
gpt4 key购买 nike

我试图从我在 Linux 上运行的程序中跟踪 ODBC 函数调用。该程序动态链接 ODBC 管理器,然后连接到数据库并获取一些数据。

我可以通过添加到 odbcinst.ini 来使用 unixODBC 跟踪 ODBC 调用:

[ODBC]
Trace=yes
TraceFile=/tmp/sql.log

此方法由 IBM 记录:Collecting data for an ODBC Problem

但是当我将管理器从 unixODBC 更改为 Informix 自己的管理器 (libifdmr.so) 时,不会创建跟踪文件。有人成功地从 Linux 上的 Informix 管理器(和驱动程序)获得了 ODBC 跟踪吗?

客户端版本:CSDK 3.50UC3

我希望这不是错误,我的配置有问题。

至于 unixODBC:我不能在多线程应用程序中使用 unixODBC。当断开连接来自另一个线程而不是连接时,我使用连接池和我的应用程序段错误。它在多线程应用程序中也慢得多。

最佳答案

如果你运行:

strings $INFORMIXDIR/lib/cli/libifdmr.so | grep _OdbcSetTrace

你能看到任何引用资料吗?如果不是,则该库没有支持功能。如果您确实看到了,则概述的机制应该有效。如果没有,您可能遇到了可报告的错误。

您尝试在哪个级别跟踪问题?而且,既然 unixODBC 有效,为什么不使用有效的驱动程序管理器呢?


我从 $INFORMIXDIR/demo/cli 中获取示例 distsel.c,并使用 CSDK 3.50.FC3 在 Solaris 10 上编译它。我已经到了连接成功的地步,但是我正在使用的数据库中缺少表“item”,所以程序停止了 SQLExecDirect()。当我在“truss”(相当于 Linux 上的“strace”)下运行它时,即使尝试打开跟踪文件,我也看不到代码的证据。

我编译使用:

gcc -I$INFORMIXDIR/incl/cli distsel.c -DNO_WIN32 \
-L$INFORMIXDIR/lib/cli -lifdmr -lifcli -o distsel

我使用了以下 .odbc.ini 文件:

;
; odbc.ini
;
[ODBC Data Sources]
odbc_demo = IDS 11.50.FC3 stores on black

[ODBC]
Trace = yes
TraceFile = /tmp/odbc.trace

[odbc_demo]
Driver = /usr/informix/11.50.FC1/lib/cli/libifcli.so
Description = IBM Informix CLI 3.50
Server = black_19
FetchBufferSize = 99
UserName = jleffler
Password = XXXXXXXX
Database = stores
ServerOptions =
ConnectOptions =
Options =
ReadOnly = no

还有这个:

;
; odbc.ini
;
[ODBC Data Sources]
odbc_demo = IDS 11.50.FC3 stores on black

[odbc_demo]
Driver = /usr/informix/11.50.FC1/lib/cli/libifcli.so
Description = IBM Informix CLI 3.50
Server = black_19
FetchBufferSize = 99
UserName = jleffler
Password = XXXXXXXX
Database = stores
ServerOptions =
ConnectOptions =
Options =
ReadOnly = no
Trace = yes
TraceFile = /tmp/odbc.trace

因此,我相信您发现了一个错误。我不确定该错误是在您引用的常见问题解答中还是在产品中 - 我倾向于认为是后者。您应该将问题报告给 IBM 技术支持。 (我没有检查 Informix CLI (ODBC) 手册;在尝试提交产品错误之前可能值得检查一下;如果手册指示 Trace 不起作用,也许它不指示它起作用工作,然后在您列出的常见问题页面中有一个错误。)

如果您要查看 SQL 数据,常见问题解答的 SQLIDEBUG 部分有效:

SQLIDEBUG=2:distsel ./distsel

这为我生成了一个文件 distsel_6004_0_102d40 - 它对你来说会有所不同。然后,您可以使用“sqliprint”实用程序查看客户端和服务器之间的数据流。

如果找不到“sqliprint”,请回复我。

关于linux - 跟踪 ODBC 对 Informix Client for Linux 的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/657994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com