Informix数据库培训教材(上)
二、ONSTAT工具
Onstat 工具 ●显示动态服务器共享内存中的信息 ●涉及少量磁盘操作 ●不需要锁等系统资源,对系统性能影响极小 ●提供关于系统有价值的信息 ●命令行交互式监控系统
Onstat命令是一种非常有用的系统实时监控工具。该命令直接从共享内存的数据结构中读取住处。报告但是的系统状况。能常 onstat 的命令不会进行磁盘的I/O操作,也不会对系统资源加锁,所以他对系统性能的影响减少到最小。下面介绍一些onstat 的一些常用的选项:
●Onstat -- 列出所有选项
●Onstat --I 设置进入交互模式
●Onstat -- 显示运行模式和数据库引擎状态 ●Onstat --g sub_option 运行多线索选项
●Onstat --r
●Onstat --g act 显示系统中所有活动的线索
●Onstat --g ath --r 2 每隔两秒显示系统中所有活动的信息
用法:onstat [--abcdfghklmpstuxzBCDFRX][--I] [--r seconds] [--o file] [infile] --a Print all info 显示所有信息 --b Print buffers 显示缓冲区
--c Print confuguration file 显示配置文件信息
--d Print DBspaces and chunks 显示dbspace和chunk信息 --f Print datakip status 显示dataskip状态信息 --g MT subcommand (default:all) 显示onstat子命令 --I interactive mode 进入onstat交互模式 --k Print lockd 显示用户持有锁信息 --l Print logging 显示日志文件信息
--m Print message log 显示消息日志的最后一行 --p Print profile 显示系统资源状况 --s Print latches 显示门闸信息 --t Print TBLspaces 显示表空间信息 --u Print user threads 显示用户使用信息 --B Print all buffers 显示所有缓冲区信息 --D Print DBspaces and detailed chunk stats
--R Print LRU queues 显示LPU队列
--X Print entire list of sharers and waiters for buffers缓冲区全部列表 --F Print page flushers 页刷新进程
36
Informix数据库培训教材(上)
三、几个常用的onstat 选项:
●onstat --m :显示消息日志的最后20行。
消息日志的内容包括:
1.检查点信息 2.读写错误信息
3.ONLINE模式转换信息 4.长事务
5.日志文件满(LOG FILE FULL)
若想显示完整信息,可直接编译消息日志文件。
●onstat --d: 磁盘空间的使用情况,包括DBSPACE和CHUNK信息 例:
RSAM Version 5.0.3UC1 --On_Line—Up 09:45:41 --816 Kbytes Dbspaces
Address number flags fchunk nchunks flags owner name 8040a244 1 1 1 1 N informix rootdbs 1 active, 8 total
Chunks
Address chk/dbs offset size free bpages flags pathname 80409d84 1 1 0 300000 231871 PO- /dev/rdata 1 active ,8 total
其中的FREE项,显示了该CHUNK 的空闲空间大小(Kbytes).
●onstat --l : 日志文件情况 Physical Logging
Buffer bufused bufsize numpages numwrits pages/io P—2 0 16 0 0 0.00 Phybegin physize phypos phyused %used 101782 15000 960 0 0.00
Logical Logging
Buffer bufused bufsize numrecs numpages numwrits recs/pages pages/io L—2 0 16 1 1 1 1.0 1.0
Address number flags uniqid begin size used %used 8042e94 1 U---C-L 1 10521a 7500 630 8.40 8042deb0 2 F------- 0 106f66 7500 0 0.00 8042decc 3 F------ - 0 108cb2 7500 0 0.00 8042dec8 4 F------- 0 10a9fe 7500 0 0.00 8042df04 5 F------- 0 10c74a 7500 0 0.00 8042df20 6 F------ 0 10e496 7500 0 0.00 其中:%USED: 使用百分比
37
Informix数据库培训教材(上)
FLAGS 字段的含义:
F:空闲 B:已备份 C:正在接收事物记录 U:正在使用 A:新增日志 L:包含最后一个检查点
●onstat -u : ONLINE 的用户情况
userthreads
address flags sessid user tty wait tout locks nreads nwrites 82442014---P---D 1 informix- 0 0 0 17 60008 82442450---P---F 0 informix- 0 0 0 0 1140 8244288c---P---B 10 informix- 0 0 0 8 0 82442cc8---P---D 11 informix- 0 0 0 0 0 4 active, 128 total, 7 maximum concurrent
其中:flags 字段的含义:
第一列:(S:等待 mutex; Y:等待条件;L:等待锁; B:等待缓冲区; C:等待检查点;X:长事务清理;G:等待长缓冲写;T:等待事务) 第二列:(*:事务执行时,发生I/O错误)
第三列:(A:正在备份;B:操作已被记录在日志中;P:分布处理已准备好;C:正在提交;R:正在回滚)
第四列:(P:会话的主线索)
第五列:(R:在read rsdm 调用中;X:进程在关键分区)
第七列:(M:特殊监控;D:特殊线索;C:清理线索;F:特殊清页进程; B:特殊B+树清页线索)
●onstat –k : 用户持有锁的情况 Locks
Address wtlist owner lkltst type tblsnum rowid key#/bsiz 0 active,2000 total, 2048 hash buckts
◆ 锁分为6种:库锁、表锁、页锁、行锁、字节锁、键锁
这几种锁的识别如下:
TYPE TBLSNUM ROWID SIZE 库锁 HDR+X 1000002 205 0 表锁 100000e 0 0 页锁 100 0 行锁 101
字节锁 HRD+B 909 键锁 很大的16进制数
其中:字节锁:更新包含有VARCHAR类型的行时,加在该行上的锁。 键锁:用于索引树上的锁。一般在相应字节上加删除标志。 ◆ 锁的生命期:
1.不使用事务时,操作完成即会释放对应的锁:
2.若使用事务,锁将伴随整个事务。(即随这COMMIT WORK或ROLLBACK
WORK而释放)
◆ 锁的几种类型:共享锁(SHARE),排它锁(EXCLUSIVE),可升级锁
38
Informix数据库培训教材(上)
●onstat -p : 显示系统资源状况(是否充分) Profile
dekreads pagreads bufreads êched dskwrits pagwrits bufwrits êched 181 199 358 49.44 7 8 2 0.00
isamtot open start read write rewrite delete commit rollbk 3 1 1 0 0 0 0 1 0
ovtbls ovlock ovuser ovbuff usercpu syscpu numckpts flushes 0 0 0 0 0.00 0.00 2 239
bufwaits lokwaits lockreqs deadlks dltouts lchwaits ckpwaits compress 0 0 0 0 0 0 0 0
其中:
OVTBLS:指示TBLSPACE值不够,TBLSPACES值应增大 OVLOCK:锁溢出 LOCKS就增大 OVUSER:用户表资源不够 USERS OVBUF:缓冲区资源不够 BUFFERS 以上数字若持续增加,表明相应参数值应调整 DEADLOCKS:检测到的死锁数 DLTOUTS:网络超时死锁
DEADLOCK—TIMEOUT:一般为60秒,若增大此数字,可以减少死锁数,但会增加响应时间,用户看来性更差;若减少此数字,死锁数可能会增大,但会减少响应时间,在用户看来,响应时间变快了。
四、ONCHECK工具
Oncheck工具 ●定位并修复数据与索引的不一致 ●检查动态服务器磁盘上的数结构 ●显示不同数据结构的报告 ●某些选项可能回在它所涉及的表上家一个共享锁
Oncheck 命令用于修复磁盘上损坏的索引的数据页,该命令也可用于检查并打印系统的数据结构,在使用 oncheck 时一定要小心,因为该命令的某些选项会表加共享锁,如:oncheck --pt
为防止对系统损坏,系统会对所有共享内存中的数据进行一致性检查。一旦发现数据页出现一致性错误,系统将把问题和可能的解决方案利用oncheck 写入消息日志文件,并返回isam 错误代码-105
39
Informix数据库培训教材(上)
如果发现一致性错误信息,用户应该立即关闭系统并按消息日志中的提示信息运行
oncheck,如果oncheck 运行失败,则应尝试卸出表在重新装入;如果是索引的错误,应考虑先删除在重建立。如果所有这些步骤都失败了,只有根据原由的系统归档备份来恢复系统。
用法:oncheck {--c CheckOption │ -p PrintOption } [-y │-n] [-q]
[ {database [: [owner . ] table [, fragdbs │ # index ]] │ TBL space
umber │Chunk number } {rowid │page number }]
--c --check ( 检查)
r --reserved pages(保留页)
e --TBLSpace extents and chunk extents c --database catalogs (目录) i --table indexes (表的索引)
I --table indexes and rowids in index (表的索引和索引的rowid)
d --TBLSpace data rows including bitmaps (表空间的数据行包括位图) D --TBLSpace data rows including bitmaps, remainder pages and blobs
--p --print(显示)
r --reserved pages (--cr) (保留页) e --extents report (--ce) (extent) c -- catalog report (--cc) (目录)
k --keys in index (--ci) (索引的键值) l --leafnode keys only (--ci)
L --leafnode keys and rowids (--cI)
d --TBLspace data rows (--cd) database[:[owner.] table [,fragdbs]] [rowid]
D --TBLspace data rows including bitmaps, remainder pages and BLOBs(--cD)
Database [:[owner.]table [,frsgdbs]] [page number]
t --TBLspace report database[:[owner.]table [,fragdbs]]
T --TBLspace disk utilization report database[:[owner.]table[,fragdbs]] p --Dump page for the given
[table[,fragdbs] and rowid │ TBLspace and page number] P --Dump page for the given chunk number and page number [chunk num and page number]
B --BLOBspace utilization for given table(s) Database[:[owner.]table[,fragdbs]]
--q --Quiet mode - print only error messages --n --Answer NO to all questions --y --Answer YES to all questions
五、几个主要的oncheck选项:
40