onstat命令在unix-informix数据库中的应用

时间:2022-09-02 20:16:04

· onstat -g sql 查看运行的sql语句

  对后台数据库的操作可以通过onstat -g sql 查看,如果详细了解sql语句,

  则需要在其后加上id代码值即可。

  如下:

$ onstat -g sql

IBM Informix Dynamic Server Version 9.40.FC6     -- On-Line -- Up 00:57:15 -- 2339572 Kbytes

Sess  SQL            Current            Iso Lock       SQL  ISAM F.E.
Id    Stmt type      Database           Lvl Mode       ERR  ERR  Vers Explain   
516   -              -                  -   Wait 300   0    0    9.03 Off       
511   -              clannt             CR  Not Wait   0    0    9.03 Off       
497   -              clannt             CR  Not Wait   0    0    9.03 Off       
480   -              clannt             CR  Not Wait   0    0    9.03 Off       
232   -              sysmaster          DR  Not Wait   0    0    9.03 Off       
217   -              clannt             CR  Not Wait   0    0    9.03 Off       
215   -              clannt             CR  Not Wait   0    0    9.03 Off       
214   -              clannt             CR  Not Wait   0    0    9.03 Off       
213   -              clannt             CR  Not Wait   0    0    9.03 Off       
212   -              clannt             CR  Not Wait   0    0    9.03 Off       
211   -              clannt             CR  Not Wait   0    0    9.03 Off       
210   -              clannt             CR  Wait 60    0    0    9.03 Off       
209   -              clannt             CR  Wait 60    0    0    9.03 Off       
208   -              clannt             CR  Wait 60    0    0    9.03 Off       
207   -              clannt             CR  Wait 60    0    0    9.03 Off       

 

· ONstat -m :显示消息日志的最后20行.
消息日志的内容包括:
1)、检查点信息
2)、读写错误信息
3)、ONLINE模式转换信息
4)、长事务
5)、日志文件满(LOG FILE FULL )
若想显示完整信息,可直接编译消息日志文件.


· ONstat -d:磁盘空间的使用情况,包括DBSPACE和CHUNK的信息
Dbspaces
address  number   flags    fchunk   nchunks  flags    owner    name
c57ef158 1        1        1        1        N        informix rootdbs
c57efd18 2        2001     2        1        N T      informix tmpdbs
c57efdd8 3        1        3        1        N        informix llogdbs
c57efe98 4        1        4        1        N        informix plogdbs
c57eff58 5        1        5        8        N        informix datadbs1
5 active, 2047 maximum

Chunks
address  chk/dbs offset   size     free     bpages   flags pathname
c57ef218 1   1   0        150000   148715            PO-   /dev/vg01/lvol1
c57ef378 2   2   0        250000   249881            PO-   /dev/vg01/lvol2
c57ef458 3   3   0        125000   197               PO-   /dev/vg01/lvol3
c57ef538 4   4   0        125000   2447              PO-   /dev/vg01/lvol4
其中的FREE项,显示了该CHUNK的空闲空间大小(Kbytes).


· ONstat -l :日志文件情况
Physical Logging
Buffer bufused  bufsize  numpages numwrits pages/io
 P-2  42       256      123414   1068     115.56
     phybegin physize  phypos   phyused  %used
     400035   122500   110222   42       0.03

Logical Logging
Buffer bufused  bufsize  numrecs  numpages numwrits recs/pages pages/io
 L-2  0        64       6150454  194478   8434     31.6       23.1
       Subsystem    numrecs  Log Space used
       OLDRSAM      6150454  385076912

address  number   flags    uniqid   begin        size     used    %used
c128d020 1        U-B----  6776     300035      12500    12500   100.00
c128d03c 2        U-B----  6777     303109      12500    12500   100.00
c128d058 3        U-B----  6778     3061dd      12500    12500   100.00
c128d074 4        U-B----  6779     3092b1      12500    12500   100.00
c128d090 5        U-B----  6780     30c385      12500    12500   100.00
c128d0ac 6        U---C-L  6781     30f459      12500     6768    54.14
c128d0c8 7        U-B----  6772     31252d      12500    12500   100.00
c128d0e4 8        U-B----  6773     315601      12500    12500   100.00
c128d100 9        U-B----  6774     3186d5      12500    12500   100.00
c128d11c 10       U-B----  6775     31b7a9      12250    12250   100.00                              
其中:%USED: 使用百分比
FLAGS字段的含义:
F: 空闲 B:已备份 C: 正在接收事物记录
U: 正在使用 A: 新增日志 L: 包含最后一个检查点

· ONstat - u:ONLINE的用户情况
Userthreads
address  flags   sessid   user     tty      wait     tout locks nreads   nwrites
c57f1018 ---P--D 1        informix -        0        0    0     757      36481
c57f1504 ---P--F 0        informix -        0        0    0     0        377273
c57f19f0 ---P--- 5        informix -        0        0    0     0        6742
c57f1edc ---P--B 6        informix -        0        0    0     29       257

其中:flages字段的含义:
第一列:(S:等待mutex;Y:等待条件;L:等待锁;B:等待缓冲区;
      C:等待检查点;X:长事务清理;G:等待长缓冲写;T:等待事务)
第二列:(*:事务执行时,发生I/O错误)
第三列:(A:正在备份;B:操作已被记录在日志中;P:分布处理已准备好;   
      C:正在提交;R:正在回滚)
第四列:(P:会话的主线索)
第五列:(R:在read rsam 调用中;X:进程在关键分区)
第七列:(M:特殊监控;D:特殊线索;C:清理线索;F:特殊清页进程;
       B:特殊B+树清页线索)


· ONstat -k :用户持有锁的情况
锁按照粒度分为6种: 库锁、表锁、页锁、行锁、字节锁、键锁
字节锁:更新包含有VARCHAR类型的行时,加在该行上的锁。
键锁:用于索引树上的锁。一般在相应字节上加删除标志。
这几种锁的识别如下:
    TYPE  ONLSNUM  ROWID   SIZE   
库锁  HDR+X  1000002   205     0   
表锁       100000e   0      0
页锁             100      0
行锁             101   
字节锁  HDR+B               909
键锁             很大的16进制数
锁的生命期:1、不使用事务时,操作完成即会释放对应的锁;
2、 若使用事务,锁将伴随整个事务。(即随这COMMIT WORK或ROLLBACK WORK而释放)  
(**锁的几种类型:共享锁(SHARE),排它锁(EXCLUSIVE),可升级锁**)

· ONstat -p : 显示系统资源状况(是否充分)
Profile
dskreads pagreads bufreads %cached dskwrits pagwrits bufwrits %cached
2112876  5085802  697502689 99.70   469082   1154138  9885314  95.25

isamtot  open     start    read     write    rewrite  delete   commit   rollbk
269117818 4202839  19282008 199402561 3286406  981022   270765   261330   20733

gp_read  gp_write gp_rewrt gp_del   gp_alloc gp_free  gp_curs
0        0        0        0        0        0        0

ovlock   ovuserthread ovbuff   usercpu  syscpu   numckpts flushes
0        0            0        66354.52 3954.04  341      682

bufwaits lokwaits lockreqs deadlks  dltouts  ckpwaits compress seqscans
721270   153      794000443 0        0        246      72878    784815

ixda-RA  idx-RA   da-RA    RA-pgsused lchwaits
458268   5293     1041489  1480397    1904

OVONLS:指示ONLSPACE值不够 ,ONLSPACES值应增大
OVLOCK:锁溢出  LOCKS应增大
OVUSER:用户表资源不够  USERS
OVBUF:缓冲区资源不够   BUFFERS
以上数字若持续增加,表明相应参数值应调整
DEADLOCKS:检测到的死锁数
DLTOUTS:网络超时死锁  
DEADLOCK_TIMEOUT:一般为60秒,若增大此数字,可以减少死锁数,但会增加响应时间,用户看来性能更差;若减少此数字,死锁数可能会增大,但会减少响应时间,在用户看来,响应时间变快了。