gpt4 book ai didi

sql - 如何查看在Informix DB上执行的查询

转载 作者:行者123 更新时间:2023-12-04 22:46:45 28 4
gpt4 key购买 nike

我想知道是否有一种方法可以查看在Informix上执行的查询。
如果我使用onstat -g sql,它将仅显示SQL语句类型(如果是insert或select)。但我想查看完整的查询文本,例如select * from table
可以在具有SQL Server Profiler的SQL Server上执行此操作。

最佳答案

onstat -g sql-g ses将为您提供在 session 中解析的当前和最后一条语句以及完整的语句+主机变量(到当前语句)。
如果您有快速运行的语句,则可以肯定会错过很多语句。

这是一个例子:

$ onstat -g sql 170

IBM Informix Dynamic Server Version 11.70.FC6 -- On-Line -- Up 13:39:50 -- 529332 Kbytes


Sess SQL Current Iso Lock SQL ISAM F.E.
Id Stmt type Database Lvl Mode ERR ERR Vers Explain
170 SELECT sysmaster CR Not Wait 0 0 9.24 Off

Current statement name : slctcur

Current SQL statement (3) :
select t.tabname, c.colno, c.colname from systables t, syscolumns c
where t.tabid = c.tabid order by 1,2

Last parsed SQL statement :
select t.tabname, c.colno, c.colname from systables t, syscolumns c
where t.tabid = c.tabid order by 1,2

如果要获取所有已执行语句的历史记录,则最佳的可用方法是使用“SQL TRACE”资源。仅在版本11之后可用。

使用此跟踪,可以将在实例/数据库/用户/ session 上执行的所有语句保存到旋转缓冲区中(当它们填充时,开始自行覆盖它)。

您可以使用命令 onstat -g his或查询表 sysmaster:syssqltrace观看此跟踪。

这是 SQL TRACE的IBM手册引用

只是分享,这是我的“swissknife”,用于启用和跟踪某人...
在这里,我只需要更改一些参数,注释/注释我需要的内容,然后使用informix执行。
之后,我开始使用onstat/selects监视缓冲区...
select sysadmin:task('set sql tracing off') as sql       from sysmaster:sysdual

union all select sysadmin:task("set sql user tracing off") from sysmaster:sysdual -- USER mode
union all select sysadmin:task("set sql user tracing clear") from sysmaster:sysdual -- USER mode
union all select sysadmin:task('set sql tracing user clear') from sysmaster:sysdual
union all select sysadmin:task('set sql tracing database clear') from sysmaster:sysdual
union all select sysadmin:task('set sql tracing session', 'clear') from sysmaster:sysdual

union all select sysadmin:task('set sql tracing info') from sysmaster:sysdual
union all select sysadmin:task('set sql tracing database list') from sysmaster:sysdual
union all select sysadmin:task('set sql tracing user list') from sysmaster:sysdual
union all select sysadmin:task('set sql tracing session list') from sysmaster:sysdual

--union all select sysadmin:task('set sql tracing database add','testdb') from sysmaster:sysdual
union all select sysadmin:task('set sql tracing user add','aviana') from sysmaster:sysdual
--union all select sysadmin:task('set sql tracing session','on', sid) from sysmaster:syssessions where username = 'cinacio' and (sid in (0) or pid in (0))
--union all select sysadmin:task('set sql user tracing on ', sid) from sysmaster:syssessions where username = 'cinacio' and (sid in (0) or pid in (0))
--union all select sysadmin:task('set sql user tracing on ', 354851) from sysmaster:sysdual
union all select sysadmin:task('set sql tracing on',150000,'4000b','high','user') from sysmaster:sysdual
;

对于这种事情,还有其他即兴的选择:
  • 在$ informix客户端上$ SQLIDEBUG + sqliprint命令处于 Activity 状态。
    (未使用的资源)
    它最初用于调试和调查客户端/服务器之间的通信问题。
    您可以在此获得更多信息IBM article
  • 在Windows ODBC配置中激活sql跟踪。
    这是任何ODBC驱动程序的标准功能(如果使用的话)。
    您可以在ODBC属性中激活它。
  • 激活set explain(特定于informix的语句)。
    此命令说到服务器将在 session 中执行的所有sql语句及其优化信息等保存到文件中。
    可以由自己的 session 启用(执行set explain on;语句)或通过命令onmode -Y <options>激活。
    作为引用,请检查IBM手册:explainonmode


  • 其他选择

    从此IIUG线程引用艺术: http://www.iiug.org/forums/ids/index.cgi/read/35708

    SQL Power Tools - from SQL Power Tools, Inc, - http://www.sqlpower.com/ - Can capture 100% of queries issued over TCP/IP and load then into a repository (currently SQL Server but they are working using an Informix repository) from which their GUI viewer can display, manipulate, and report. Display is not real time as the data is captured in blocks of queries into flat files and bulk loaded into the repository periodically. Uses a network sniffer utility on the server or a separate box that has near zero impact on the server itself for capture.

    iWatch - from Exact-Solutions, Inc. - www.exact-solutions.com - Can capture 100% of queries issued over TCP/IP and load then into a proprietary repository. Can display real time capture. Uses a network sniffer utility on your server or a sniffer appliance (for very high transaction rate systems) that has very low impact on the server.

    关于sql - 如何查看在Informix DB上执行的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22354057/

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