分类: DB2/Informix
2008-05-31 16:37:53
onstat 实用程序
onstat
实用程序提供了一种从命令行监视数据库服务器共享内存的方法。onstat
实用程序从共享内存读取数据,并报告执行这个命令期间的精确统计数据。也就是说,onstat
提供那些在处理期间动态改变的信息,包括缓冲区、锁、索引和用户方面的变化。
onstat
输出的标题表示数据库服务器的状态。当数据库服务器被阻塞时,onstat
在标题行后面显示下一行:所有 onstat
输出都包含一个标题。onstat -
选项只显示输出标题,这可以用来检查数据库服务器模式。标题采用以下形式:
Version--Mode (Type)--(Checkpnt)--Up Uptime--Sh_mem Kbytes
>>-onstat-------------------------------------------------------> .-----------------------------. V (1) >--+-+-----------------+----+-------------------------+-+------+-> '-filename_source-' +- -a---------------------+ +- -b---------------------+ +- -B---------------------+ +- -c---------------------+ +- -C---------------------+ +- -d---------------------+ +- -D---------------------+ +- -f---------------------+ +- -F---------------------+ +- -g--Monitoring options-+ +- -G---------------------+ +- -i---------------------+ +- -k---------------------+ +- -K---------------------+ +- -l---------------------+ +- -m---------------------+ +- -o--+---------------+--+ '-filename_dest-' +- -O---------------------+ +- -p---------------------+ +- -P---------------------+ +- -r--+---------+--------+ '-seconds-' +- -R---------------------+ +- -s---------------------+ +- -t---------------------+ +- -T---------------------+ +- -u---------------------+ +- -x---------------------+ +- -X---------------------+ '- -z---------------------' +- ---------------------------------------------------------+ '- --------------------------------------------------------- |
注意:每个选项只能出现一次。在一个 onstat
命令调用中可以指定多个选项。
元素 | 用途 |
---|---|
- | 显示输出标题。 |
-- | 显示所有 onstat 选项及其功能。 |
-a | 解释为 onstat -cuskbtdlp ;以这个次序显示输出。 |
-b | 显示关于当前使用的缓存区的信息,包括缓冲池中的常驻页面数量。 |
-B | 获得关于所有数据库服务器缓冲区(而不只是当前使用的缓存区)的信息。参见 -b 。 |
-c | 显示 ONCONFIG 文件:* $INFORMIXDIR/etc/ $ONCONFIG(在 UNIX 上) * %INFORMIXDIR%\etc\ %ONCONFIG% (在 Windows 上)。 |
-C | 输出 B-tree 扫描器信息。 |
-d | 显示每个存储空间中的块的信息。 |
-D | 显示每个 dbspace 中前 50 个块的页面读和页面写信息。 |
-f | 列出当前受 DATASKIP 特性影响的 dbspace。 |
-F | 显示将页面刷新到磁盘的每种写操作类型的计数。 |
-g | 提供监视选项。 |
-G | 输出全局事务 ID。 |
-i | 使 onstat 实用程序进入交互模式。 |
-j | 显示活动的 onpload 进程的交互状态。 |
-k | 显示关于活动的锁的信息。 |
-l | 显示关于物理和逻辑页面的信息,包括页面地址。 |
-m | 显示数据库服务器消息日志中最近的 20 行。 |
-o | 将共享内存段的拷贝保存到文件。 |
-O | 显示关于 Optical Subsystem 内存缓存和 blobspace 缓冲区的信息。 |
-p | 显示配置计数。 |
-P | 显示所有分区的分区号,以及属于这个分区的缓冲池页面的拆分情况。 |
-r | 以指定的时间间隔重复执行附带的 onstat 选项。默认值是 5 秒。 |
-R | 显示关于 LRU 队列、FLRU 队列和 MLRU 队列的详细信息。 |
-s | 显示一般的锁存器信息。 |
-t | 显示活动的 tblspace 的 tblspace 信息,包括驻留状态。 |
-T | 显示所有 tblspace 的 tblspace 信息。 |
-u | 输出用户活动的配置。 |
-x | 显示关于事务的信息。 |
-X | 获得关于正在共享和等待缓冲区的线程的精确信息。 |
-z | 将配置计数设置为零。 |
filename_dest | 为共享内存段的拷贝指定目标文件。 |
filename_source | 指定 onstat 对于请求的信息读取的信息源文件。 |
监视选项 | 指定要使用的 onstat -g 监视选项。 |
秒数 | 指定每次执行 onstat -r 命令之间间隔的秒数。 |
下面的 onstat -g
选项只用于支持和调试。在每个 onstat -g
命令中只能包含其中一个选项。更多信息参见 IBM Informix Performance Guide。
onstat -g 选项 | 主题或功能 |
---|---|
-g act | 活动的线程。输出示例见 onstat -g act 选项。 |
-g afr pool name session id | 显示为指定的会话或共享内存池分配的内存段。每个会话获得一个共享内存池。获得池名称的方法见 -mem 选项。输出示例见 onstat -g afr pool name session id 选项。 |
-g all | 输出所有多线程信息。 |
-g ath | 输出所有线程。sqlmain 线程代表客户机会话。rstcb 值对应于 onstat -u 命令的用户字段。输出示例见 onstat -g ath 选项。关于使用 onstat -g ath 输出 Enterprise Replication 线程的信息,参见 IBM Informix Dynamic Server Enterprise Replication Guide。 |
-g cat [modifier] | 输出 Enterprise Replication 全局编目中的信息。全局编目包含企业中每个服务器上定义的服务器、复制和复制集的汇总信息。更多信息和输出示例见 onstat -g cat 选项。 |
-g cac agg | 显示缓存中当前的用户定义的聚合定义。 |
-g cac stmt | 显示 SQL 语句缓存的内容。输出与 -g ssc 语句相同。 |
-g con | 输出条件和等待者。输出示例见 onstat -g con 选项。 |
-g ddr | 输出 Enterprise Replication 数据库日志读取程序的状态。如果日志读取被阻塞,那么在问题解决之前,无法复制数据。更多信息和输出示例见 onstat -g ddr 选项。 |
-g dic table | 如果不带任何参数,就会为共享内存词典中缓存的每个表输出一行信息。如果提供一个表名作为参数,就输出这个表的内部 SQL 信息。更多信息见 IBM Informix Performance Guide。输出示例见 onstat -g dic table 选项。 |
-g dis | 输出数据库服务器列表及其状态,以及关于每个数据库服务器、INFORMIXDIR、sqlhosts 文件、ONCONFIG 文件和主机名的信息。输出示例见 onstat -g dis 选项。 |
-g dll | 输出已经装载的动态库的列表。输出示例见 onstat -g dis 选项。 |
-g dri | 输出数据复制信息。参见 IBM Informix 管理员指南中关于监视高可用性数据复制状态(High-Availability Data-Replication)的内容。输出示例见 onstat -g dri 选项。 |
-g dsc | 输出数据分布缓存信息。输出示例见 onstat -g dsc 选项。 |
-g dss [modifier] | 输出关于各个数据同步线程的活动和用户定义数据类型的详细统计信息。更多信息和输出示例见 onstat -g dss 选项。 |
-g dtc | 输出关于删除表清理器的统计数据,删除表清理器会从删除表中删除不再需要的行。更多信息和输出示例见 onstat -g dtc 选项。 |
-g env | 输出数据库服务器当前使用的环境变量值。更多信息见 onstat -g env 选项。 |
-g ffr pool name session id | 输出一个共享内存池的空闲段。输出示例见 onstat -g ffr pool name session id 选项。 |
-g glo | 输出全局多线程信息。这些信息包括虚拟处理器的 CPU 使用信息、会话的总数和其他多线程全局计数器。在 Windows 上,虚拟处理器就是操作系统线程。'pid' 字段下显示的值是线程 id,而不是进程 id(Windows)。输出示例见 onstat -g glo 选项。 |
-g grp [modifier] | 输出 Enterprise Replication 分组程序的统计数据。该分组程序计算日志记录、用日志记录重新构建原来的事务、对事务进行打包、把事务放入发送队列中。更多信息和输出示例见 onstat -g grp 选项。 |
-g his | 输出关于 SQLTrace 配置参数的信息。 |
-g imc | 输出关于连接到数据库服务器的 MaxConnect 实例的信息。如果 MaxConnect 没有连接到数据库服务器,那么这个命令显示 “No MaxConnect servers are connected”。 |
-g ioa | 输出来自 -g ioq 和 -g iov 的组合信息。输出示例见 onstat -g ioa 选项。 |
-g iob | 输出大缓冲区使用信息汇总。输出示例见 onstat -g iob 选项。 |
-g iof | 按照块或文件,输出异步 I/O 统计数据。这个选项与 -D 选项相似,但是它还显示非块、临时和分类工作文件的信息。输出示例见 onstat -g iof 选项。 |
-g iog | 输出 AIO 全局信息。输出示例见 onstat -g iog 选项。 |
-g ioq queue name | 输出特定队列中未完成的 I/O 操作。如果给出 gfd 或 kaio 队列名,就为每个 CPU VP 显示一个队列。如果省略队列名,就显示所有队列的 I/O 统计数据。输出示例见 onstat -g ioq queue name 选项。 |
-g iov | 按照虚拟处理器,输出异步 I/O 统计数据。输出示例见 onstat -g iov 选项。 |
-g ipl | 输出索引页面日志状态。 |
-g lmx | 输出所有锁定的互斥(mutex)。输出示例见 onstat -g lmx 选项。 |
-g lsc | 显示关于 light scan 的信息。 |
-g mem pool name session id | 输出一个内存池的统计数据。还显示池名称、包含这个池的共享内存段类型、池的地址、池的总大小、它包含的空闲内存的字节数,以及池中空闲和已分配的内存段数量。如果不提供参数,就显示所有池的信息。块池在主池列表后面的部分单独列出。还可以使用 ISA 获得关于内存池的详细信息。如果运行的 SQL 查询从 PER_STMT_EXEC 和 PER_STMT_PREP 内存池中分配内存,onstat -g mem 会显示关于 PRP.sessionid.threadid 池和 EXE.sessionid.threadid 池的信息。输出示例见 onstat -g mem pool name session id 选项。更多信息见 IBM Informix DataBlade API 程序员指南。 |
-g mgm | 输出 Memory Grant Manager 资源信息。输出示例见 onstat -g mgm 选项。 |
-g nbm | 输出非常驻段的块位图,每个 8 KB 块对应一位。位设置为 1 就表示这个块是空闲的。输出示例见 onstat -g nbm 选项。 |
-g nif [modifier] | 输出网络接口的统计数据。可以通过这些信息判断数据为什么没有复制。更多信息和输出示例见 onstat -g nif 选项。 |
-g nsc client id | 按照客户机 id,输出共享内存状态。如果省略客户机 id,就显示所有客户机状态。这个命令输出与 nss 命令相同的状态数据。输出示例见 onstat -g nsc client_id 选项。 |
-g nsd | 输出轮询线程(poll thread)线程的网络共享内存数据。输出示例见 onstat -g nsd 选项。 |
-g nss session id | 按照会话 id,输出共享内存状态。如果省略会话 id,就显示所有会话状态。这个命令输出与 nsc 命令相同的状态数据。 |
-g nta | 输出来自 -g ntd 、-g ntm 、-g ntt 和 -g ntu 的组合网络统计数据。如果安装了 MaxConnect,就可以使用这个命令提供的统计数据进行 MaxConnect 性能调优。 |
-g ntd | 按照服务,输出网络统计数据。输出示例见 onstat -g ntd 选项。 |
-g ntm | 输出网络邮件统计数据。输出示例见 onstat -g ntm 选项。 |
-g ntt | 输出网络用户时间。输出示例见 onstat -g ntt 选项。 |
-g ntu | 输出网络用户统计数据。输出示例见 onstat -g ntu 选项。 |
-g pos | 输出 $INFORMIXDIR/etc/ .infos.DBSERVERNAME 文件(UNIX)或 %INFORMIXDIR%\etc\ .infos.DBSERVERNAME 文件(Windows)。输出示例见 onstat -g pos 选项。 |
-g ppf partition number 0 | 输出特定分区的分区配置;如果使用 0,就输出所有分区的配置。如果 TBLSPACE_STATS 配置参数设置为 0,就显示:Partition profiles is disabled。输出示例见 onstat -g ppf partition number 0 选项。 |
-g prc | 输出关于 SPL 例程缓存的信息。输出示例见 onstat -g prc 选项。 |
-g qst | 输出队列统计数据。 |
-g que | 输出高层队列接口(这是 Enterprise Replication Queue Manager 的所有队列的通用接口)的统计数据。更多信息和输出示例见 onstat -g que 选项。 |
-g rbm | 输出常驻段(通信消息区域)的块位图。输出示例见 onstat -g rbm 选项。 |
-g rcv [serverid] | 输出关于接收管理器的统计数据。接收管理器是接收队列和数据同步之间的一组服务例程。更多信息和输出示例见 onstat -g rcv 选项。 |
-g rea | 显示已经做好准备的线程。输出示例见 onstat -g rea 选项。 |
-g rep [replname] | 输出调度管理器队列中的事件。更多信息和输出示例见 onstat -g rep 选项。 |
-g rqm [modifier] | 输出由 Reliable Queue Manager(RQM)管理的低层队列(每个单独的队列)的统计数据和内容。更多信息和输出示例见 onstat -g rqm 选项。 |
-g rwm | 输出读/写互斥。输出示例见 onstat -g rwm 选项。 |
-g sch | 输出每个虚拟处理器的信号量操作、旋转(spin)和忙等待的数量。在 Windows 上,虚拟处理器就是操作系统线程。‘pid’ 字段下显示的值是线程 id,而不是进程 id(Windows)。输出示例见 onstat -g sch 选项。 |
-g seg | 输出共享内存段统计数据。这个选项显示数据库服务器当前使用的共享内存段的数量和大小。输出示例见 onstat -g seg 选项。 |
-g ses sessionid | 按照会话 id,输出会话信息。如果省略会话 id,就为每个会话输出一行汇总信息。更多信息见 onstat -g ses 选项。 |
-g sle | 显示所有休眠的线程。输出示例见 onstat -g sle 选项。 |
-g smb option | 输出关于 sbspace 的详细信息。更多信息见 onstat -g smb 选项。 |
-g smxoption | 显示服务器多路复用器组的连接信息。 |
-g spi | 输出虚拟处理器请求过 10,000 次以上的 旋转锁。这些旋转锁称为 longspin。longspin 的总数显示在 glo 命令输出的最前面。longspin 过多就意味着系统负载过大,同一个计算机或节点具有过多的虚拟处理器,或者出现了内部问题。要想减少 longspin,可以减少虚拟处理器的数量(通常对 CPU 分类)、减少计算机上的负载或者使用不会过时的或处理器亲合性特性。 |
-g sql session id | 按照会话 id,输出 SQL 信息。如果省略会话 id,就为每个会话输出一行汇总信息。更多信息见 onstat -g sql 选项。 |
-g ssc | 监视数据库服务器读取缓存中的 SQL 语句的次数。输出示例见 onstat -g ssc 选项。它显示与 onstat -g cac stmt 相同的输出。更多信息见 IBM Informix Performance Guide 中的 improving query performance。 |
-g ssc all | 报告 key-only 缓存项以及完整缓存的语句。如果 hits 列中的值小于 STMT_CACHE_HITS 值,这个缓存项就是 key-only 缓存项。更多信息见 IBM Informix Performance Guide 中有关内存使用的信息。 |
-g ssc pool | 报告 SQL 语句缓存的所有内存池的使用情况。输出显示内存池的名称、类、地址和总大小。更多信息见 IBM Informix Performance Guide 中有关改善查询性能的信息。 |
-g stk tid all | 显示线程 ID 指定的线程的堆栈,或者是所有线程的堆栈。这个选项并未在所有平台上都得到支持,而且输出不一定精确。输出示例见 onstat -g stk tid 选项。 |
-g stm [session id] | 显示每个 SQL 预备语句使用的内存。输出示例见 onstat -g stm 选项。更多信息见 IBM Informix Performance Guide 中有关 内存使用和改善查询性能的信息。 |
-g sts | 输出每个线程的最大和当前堆栈使用量。输出示例见 onstat -g sts 选项。 |
-g sync | 显示哪个同步是活跃的。输出示例见 onstat -g sync 选项。 |
-g tpf tid | 输出特定线程 ID 的线程配置。输出示例见 onstat -g tpf tid 选项。 |
-g ufr pool name session id | 输出分配的段。 |
-g vpcache | 返回关于 CPU VP 内存块缓存的统计数据。 |
-g wai | 显示正在等待的线程;包括所有等待互斥或条件的线程和正在生成的线程。 |
-g wmx | 显示所有互斥以及等待者。输出示例见 onstat -g wmx 选项。 |
-g wst | 输出等待统计数据。 |
通过使用 filename_source
参数和其他选项标志,可以从 filename_source 包含的共享内存段中获得 onstat 统计数据。首先,必须使用 onstat -o
命令创建一个包含共享内存段的文件。
Creating a snapshot of the shared memory for further analysis onstat -o myfile Checking some information, for example dbspace information onstat -d myfile Results Dbspaces address number flags fchunk nchunks pgsize flags owner name ad357e8 1 0x60001 1 1 2048 N B informix rootdbs b62a5b0 2 0x60001 2 1 4096 N B informix dbsp1 2 active, 2047 maximum Chunks address chunk/dbs offset page Rd page Wr pathname ad35948 1 1 0 493 5803 /local0/engines/ol_tuxedo/ifmxdata/rootdbs b62a710 2 2 0 4 20 /local0/engines/ol_tuxedo/ifmxdata/dbsp1 2 active, 32766 maximum NOTE: The values in the "page Rd" and "page Wr" columns for DBspace chunks are displayed in terms of system base page size. Expanded chunk capacity mode: always |
要想让 onstat
实用程序进入交互模式,应该使用 -i
选项。在交互模式下,可以一个接一个地输入多个选项,而不必退出程序。关于使用交互模式的更多信息,参见 onstat -i
。
通过使用 seconds
参数和 -r
选项标志,可以让其他所有标志以指定的时间间隔反复执行。