监控ONLINE系统后动情况的工具主要有以下三类:
? 系统监控接口(SMI)
? tbstat
? tbcheck
一、 系统监控接口(SMI):
我们主要通过SQL命令操作online的内部数据库sysmaster中的内部表/结构,来获取有关的维护信息。Sysmaster是在online初次初始化时,系统自动创建的。它实际主要存储了一些数据结构,而不是真正的表。使用SMI有如下限制:
? 不能对SMI中的表加锁或使用隔离级别。
? 不允许使用insert,delete,update等语句(只读)
? 不能使用dbschema,dbexport等命令
? 使用select rowid语句将会产生不可预料的结果
主要的SMI表有:
sysdatabases:online中的数据库信息
systabnames:某数据库中所有表的信息
syslogs:逻辑日志信息
sysdbspaces:数据库信息
syschunks,syslocks等
例1:显示处于脱机(offline)状态的chunk的序号和所在数据库空间
Select chknum,dbsnum from syschunks where is_offline=1 or misline=!
例二:显示满chunk的信息
Select chknum,dbsnum from syschunks where nfree=0
二、 TBSTAT
? 列出当前时刻的信息(实际也是读取SMI表)
? 不需要磁盘I/O
? 不需要锁等系统资源,因此不会影响系统性能
用法: tbstat [-abcdklmpstuzBDFPRX] [-r seconds] [-o file] [infile]
-a print all info (options: bcdklmpstu)
-b print buffers(缓冲区)
-c print configuration file(配置文件)
-d print dbspaces and chunks(dbspace和chunk)
-k print locks(锁)
-l print logging(日志)
-m print message log(消息日志)
-p print profile(profile文件)
-s print latches(门闸)
-t print tblspaces(表空间)
-u print users(用户)
-z zero profile counts
-B print all buffers
-D print dbspaces and detailed chunk stats
-F print page flushers(页刷新进程)
-P print profile, including BIGreads
-R print LRU queues(LRU队列)
-X print entire list of sharers and waiters for buffers
-r repeat options every n seconds (default: 5)
-o put shared memory into specified file (default: tbstat.out)
infile use infile to obtain shared memory information
三、 几个常用的tbstat选项:
? tbstat -m :显示消息日志的最后20行.
消息日志的内容包括:
1)、检查点信息
2)、读写错误信息
3)、ONLINE模式转换信息
4)、长事务
5)、日志文件满(LOG FILE FULL )
若想显示完整信息,可直接编译消息日志文件.
? Tbstat -d:磁盘空间的使用情况,包括DBSPACE和CHUNK的信息
例:RSAM Version 5.03.UC1 -- 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).
? Tbstat -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
8042de94 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
8042dee8 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: 使用百分比
FLAGS字段的含义:
F: 空闲 B:已备份 C: 正在接收事物记录
U: 正在使用 A: 新增日志 L: 包含最后一个检查点
? Tbstat - u:ONLINE的用户情况
Users
address flags pid user tty wait tout locks nreads nwrites
804019f4 ------D 329 root console 0 0 0 179 2
80401a64 ------D 0 root console 0 0 0 0 0
80401ad4 ------F 330 root 0 0 0 0 0
3 active, 20 total
Transactions
address flags user locks log begin isolation retrys coordinator
804022b4 A---- 804019f4 0 0 NOTRANS 0
804028d8 A---- 80401a64 0 0 NOTRANS 0
2 active, 20 total
其中: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+树清页线索)
? Tbstat -k :用户持有锁的情况
锁按照粒度分为6种: 库锁、表锁、页锁、行锁、字节锁、键锁
字节锁:更新包含有VARCHAR类型的行时,加在该行上的锁。
键锁:用于索引
共有 0 位网友发表了评论,平均得分: 0 查看完整内容