onstat -g his 命令:打印 SQL 跟踪信息

可以使用 onstat -g his 命令显示 sysmaster 数据库中 syssqltrace 表(包括 syssqltrace 、syssqltrace_info 、syssqltrace_hvar 和 syssqltrace_itr)收集的 SQL 跟踪信息。

SQLTRACE 配置参数的 level 设置会影响由 syssqltrace 表存储和显示的 SQL 跟踪信息,并影响 onstat -g his 显示的信息。syssqltrace 表每行描述一条以前执行的 SQL 语句。缺省情况下,只有 DBSA 可以查看来自 onstat -g his 命令的 syssqltrace 信息。然而,当将 UNSECURE_ONSTAT 配置参数设置为 1 时,所有的用户都可以查看该信息。

语法:
示例输出

输出的内容依赖于跟踪的设置。

输出中的 Statement history 部分提供有关正在跟踪的当前设置的信息。

        Statement history:
        
        Trace Level                 Low	
        Trace Mode               Global	
        Number of traces           1000	
        Current Stmt ID               2	
        Trace Buffer size          2008	
        Duration of buffer          293 Seconds
        Trace Flags          0x00001611	
        Control Block        0x4c2f0028
      
下表是该输出的描述:
元素 描述
Trace Level 已跟踪的信息量。可用值为 LOW 、MED 、HIGH 和 OFF
Trace Mode 执行跟踪的类型。Global 参考系统上的所用用户。User 只参考由 SQL 管理 API 函数启用的用户。
Number of traces 跟踪的 SQL 语句的数量。该值在 onconfig 文件中进行设置,除非 SQL 管理 API 函数动态更改了 ntraces 参数。它的取值范围是 500 到 2147483647 。如果有 100,000 个跟踪缓冲区,每秒组织运行 1000 条 SQL 语句并要跟踪所有的语句,那么这些缓冲区在重写之前将持续 100 秒。
Current Stmt ID 当前 SQL 语句的 ID 。每条被跟踪的语句都获得一个唯一 ID 。
Trace Buffer size 每个跟踪缓冲区将获取的数据量(以字节表示)。如果将此大小设置为 2 KB ,但是有一条 12 KB 的 SQL 语句,那么该语句将会截断至少 10 KB 。更多的数据可能会被截断,它依赖于要跟踪的其它的数据。
Duration of buffer 以秒表示跟踪的数据在当前跟踪缓冲区跨度的时间量。它不是 sqltrace 功能已运行的时间。在上述示例中,Duration of buffer 是 293 秒,它表示跟踪的第一条和最后一条 SQL 语句之间的时间。
Trace Flags 当前设置的 SQL 跟踪标志
Control Block 该 SQL 跟踪控制 block 的内存地址
每次语句运行后,以下的信息重复显示一次。在该示例中,调用了两个变量。
          Statement # 2:     @ 0x4c2f3028
          
          Database:        sysmaster
          Statement text:
          select count(*) from systables,syscolumns where systables.tabid > ? and
          systables.nrows < ?
          
          SELECT using tables [ systables syscolumns ]
          
        
下表是该输出的描述:
元素 描述
Database 数据库名或该数据库的 systables 条目部分的编号
Statement text 该 SQL 语句的文本。如果该语句时存储过程,那么该语句文本将显示该过程的堆跟踪。如果声明和数字统计大于跟踪缓冲区,那么该语句文本可能会被截断。
        Iterator/Explain
        ================
        ID   Left  Right   Est Cost   Est Rows   Num Rows   Partnum   Type
        3      0      0         17         42        146   1048579   Index Scan
        4      0      0       5249       2366       2366   1048580   Seq Scan
        2      3      4       5266      99372     345436         0   Nested Join
        1      2      0          1          1          1         0   Group
      
下表是该输出的描述:
元素 描述
ID SQL 迭代器 ID
Left 迭代器左侧输入的 ID
Right 迭代器右侧输入的 ID
Est Cost 本次迭代的估计成本
Est Rows 本次迭代的估计行数
Num Rows 本次迭代的实际行数
Partnum 表编号或索引分区编号
Type 操作类型
如果 SQL 语句包含一个或多个变量,并且您正在跟踪主机变量,那么输出中会显示 Host Variables 小节。
          Host Variables
          ==============
          1 integer    100
          2 float      1000.0000000000000000
          
        
The following table describes this output:
元素 描述
Column 1 该语句中变量的位置
Column 2 该变量的数据类型
Column 3 该变量值
          Statement information:
          Sess_id  User_id  Stmt Type  Finish Time   Run Time   TX Stamp  PDQ
          5        2053     SELECT     01:08:48      0.4247     340a6e9    0
          
        
下表是该输出的描述:
元素 描述
Sess_id 会话 ID
User_id 此操作系统用户 ID
Stmt Type SQL 语句类型
Finish Time 当天该 SQL 语句结束的时间
Run Time 虚拟处理器或线程处理该语句所花费的总时间。例如:如果 Finish Time 是 1:15:00 ,Run Time 是 9 分钟并且启动时间不一定是 1:06:00 ,那么可能在并行语句部分调用了多个虚拟处理器或线程。
TX Stamp 该事务中记录 BEGIN WORK 语句的时间
PDQ SQL 语句 PDQ 级别
输出中 Statement Statistics 部分提供有关该语句的特定信息。
  Statement Statistics:
          Page       Buffer     Read       Buffer     Page       Buffer     Write
          Read       Read       % Cache    IDX Read   Write      Write      % Cache
          1285       19444      93.39      0          810        17046      95.25
          
          Lock       Lock       LK Wait    Log        Num        Disk       Memory
          Requests   Waits      Time (S)   Space      Sorts      Sorts      Sorts
          10603      0          0.0000     60.4 KB    0          0          0
          
          Total      Total      Avg        Max        Avg        I/O Wait   Avg Rows
          Executions Time (S)   Time (S)   Time (S)   IO Wait    Time (S)   Per Sec
          1          30.8660    30.8660    30.8660    0.0141     29.2329    169.8959
          
          Estimated  Estimated  Actual     SQL        ISAM       Isolation  SQL
          Cost       Rows       Rows       Error      Error      Level      Memory
          102        1376       5244       0          0          CR         32608
          
        
元素 描述
Page Read 该 SQL 语句已从磁盘读取的页数
Buffer Read 该 SQL 语句从缓冲池读取而不是从磁盘读取页的次数
Read % Cache 应从缓冲池读取页的次数的百分比
Buffer IDX Read 尚未明确
Page Write 写入磁盘的页数
Buffer Write 修改并发送回缓冲池的页数
Write % Cache 页面写入缓冲池而不是写入磁盘的次数的百分比
Lock Requests 该语句所需的锁的总数
Lock Waits 该 SQL 语句等待锁的次数
LK Wait Time (S) 该语句等待锁的时间(以秒为单位)
Log Space 逻辑日志中该 SQL 语句已使用的存储空间量
Num Sorts 用于执行语句的排序总数
Disk Sorts 对于该 SQL 语句,对磁盘执行的排序的次数
Memory Sorts 对于该 SQL 语句,对内存执行的排序的次数
Total Executions 该语句已执行的总次数,或者该游标重用的次数
Total Time (S) 执行该语句的总时间(以秒表示)
Avg Time (S) 执行该语句的平均时间(以秒表示)
Max Time (S) 运行 SQL 语句的总时间(以秒为单位),不包括应用程序使用的任何时间。如果您准备一个查询然后查询 5 次,该查询每次将一个跟踪添加到跟踪缓冲区中。Max Time 是任意执行所花的最长时间
Avg IO Wait 语句等待 I/O 的时间量,不包括任何异步 I/O
I/O Wait Time (S) 语句等待 I/O 的时间量,不包括任何异步 I/O(以秒为单位)
Avg Rows Per Sec 该语句每秒产生的平均行数
Estimated Cost 与 SQL 语句关联的查询优化程序的代价
Estimated Rows 返回的估计行数,由语句的优化程序估计
Actual Rows 该语句返回的行数
SQL Error SQL 错误编号
ISAM Error RSAM 或 ISAM 错误编号
Isolation Level 该语句运行时使用的隔离级别
SQL Memory 该 SQL 语句需要的字节数

有关 syssqltrace 系统监视接口表的完整结构,请参阅 syssqltrace

有关 SQLTRACE 配置参数的详细设置信息,请参阅 SQLTRACE 配置参数