INFORMIX的監控和管理命令 作者: springwind
監控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類型的行時,加在該行上的鎖。 鍵鎖:用索引樹上的鎖。一般在相應字節上加刪除標志。 這幾種鎖的識別如下: TYPE TBLSNUM 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),可升級鎖**) ; tbstat -p : 顯示系統資源狀況(是否充分) Profile dskreads pagreads bufreads %cached dskwrits pagwrits bufwrits %cached 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: ; 定位並修復數據與索引的不一致 ; 檢查磁盤上的數據結構 ; 顯示不同數據結構的報告 ; 某些選項可能回在它所涉及的表上家一個共享鎖 用法: tbcheck [-clist] [-plist] [-qny] [ { database[:[owner.]table] | TBLSpace number | 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)(索引的鍵值) K - keys and rowids in index (-cI) l - leaf node keys only (-ci) L - leaf node keys and rowids (-cI) d - TBLSpace data rows (-cd) D - TBLSpace data rows including bitmaps, remainder pages and blobs (-cD) t - TBLSpace report T - TBLSpace disk utilization report p - dump page for the given [table and rowid | TBLSpace and page number] P - dump page for the given chunk number and page number B - BLOBSpace utilization for given table(s) [database:[owner.]]table
-q - quiet mode - print only error messages -n - answer NO to all questions -y - answer YES to all questions
五、 幾個主要的tbcheck選項: ; TBCHECK -PT DATABASE:TABLE 產生有關TBLSPACE的報告。包括EXTENT和空間使用信息。信息的輸出來自TBLSPACE TBLSPACE,這是一個特殊的TBLSPACE,用來跟蹤ONLINE創建的數據庫,是根DBSPACE中的第二個TBLSPACE,其TBLSNUM為1000002。這個TBLSPACE中的每行保存一個數據庫的信息。 ; TBCHECK -Cd DATABASE:TABLE 測試一個表空間的數據。它從表空間中讀取所有頁做一致性檢查,並檢測位圖也以確認該頁被正確映射。它所做的工作包括:確認數據的有效性,對特殊數據做相應標志(如BLOB頁,剩余頁等)。 ; TBCHECK -Ci DATABASE:TABLE 測試表上的索引,比如是否所有的ROWID都指向表中的有效行,必要時,重建SYSINDEXES信息。它所做的工作包括:驗証索引是否有效,重建被損壞的索引,並對索引樹重新做相應調整。 索引策略: 應加索引的字段:用連接(JOIN)的字段,用來過濾的字段(在WHERE條件中使用的字段,稱為過濾器),用排序的字段(ORDER BY)。 不應加索引的字段:有高重復值的字段 另外,可以用主鍵限制索引個數,加復合索引來避免重復,用聚簇索引加快索引速度。 六、其它重要的工具: ; UPDATE STATISTICS [LOW | MEDIUM | HIGH] 此語句的三個主要作用:更新內部表;產生數據分布;優化存儲過程 應定期使用 ; tbinit 用初始化數據庫共享內存。每次開機都必須執行此命令。一般將它放在/etc/rc2.d目錄下的一個自引導文件中。 例如:當以應用軟件注冊時,系統提示: DBERR 529/C-ISAM 123 [Open Database] 使用finderr查529錯誤,提示: -529 Cannot attach to shared memory. {不能使用共享內存} 此時,使用tbinit命令將數據庫共享內存進行初始化,系統恢復正常。 ; tbmode -sy| tbmode -ky 用關閉數據庫共享內存。為了數據的安全,每次關機前都必須執行此命令。為了簡化操作,我們經常將它放在/etc/rc0.d目錄下的一個自引導文件中,讓系統進入多用戶時自動來執行此文件。 ; finderr 用來查詢數據庫的錯誤。當系統出現數據庫錯誤時,系統處了給你簡單的出錯提示外,還給出一個錯誤號。你可以使用此命令對這種錯誤進行深入的分析,然針對不同的錯誤進行相應的處理。 例如:當你在超級用戶root下對儲蓄數據庫bankstar進行操作時,系統提示: 387: No connect permission. 111: ISAM error: no record found. 意思是:系統出現387錯誤,錯誤的原因是:沒有connect權限。 原因分析: 操作數據庫至少需要CONNECT權限。解決如下:informix用戶注冊,執行如下SQL語句:grant connect to root ; dbaccess(略)
大梦 回复于:2003-01-04 21:03:01
UP
fywlily 回复于:2003-02-16 16:40:56
好阿
forest077 回复于:2003-02-16 18:52:51
能不能搞个简体的过来
muzx 回复于:2003-02-16 23:30:53
引用:原帖由 "forest077"]能不能搞个简体的过来 发表:
[color=red][给你简体版[/color]
INFORMIX的监控和管理命令
--------------------------------------------------------------------------------
INFORMIX的监控和管理命令
作者: springwind
监控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类型的行时,加在该行上的锁。
键锁:用索引树上的锁。一般在相应字节上加删除标志。
这几种锁的识别如下:
TYPE TBLSNUM 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),可升级锁**)
; tbstat -p : 显示系统资源状况(是否充分)
Profile
dskreads pagreads bufreads %cached dskwrits pagwrits bufwrits %cached
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:
; 定位并修复数据与索引的不一致
; 检查磁盘上的数据结构
; 显示不同数据结构的报告
; 某些选项可能回在它所涉及的表上家一个共享锁
用法: tbcheck [-clist] [-plist] [-qny]
[ { database[:[owner.]table] | TBLSpace number | 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)(索引的键值)
K - keys and rowids in index (-cI)
l - leaf node keys only (-ci)
L - leaf node keys and rowids (-cI)
d - TBLSpace data rows (-cd)
D - TBLSpace data rows including bitmaps, remainder pages and blobs (-cD)
t - TBLSpace report
T - TBLSpace disk utilization report
p - dump page for the given [table and rowid | TBLSpace and page number]
P - dump page for the given chunk number and page number
B - BLOBSpace utilization for given table(s) [database:[owner.]]table
-q - quiet mode - print only error messages
-n - answer NO to all questions
-y - answer YES to all questions
五、 几个主要的tbcheck选项:
; TBCHECK -PT DATABASE:TABLE
产生有关TBLSPACE的报告。包括EXTENT和空间使用信息。信息的输出来自TBLSPACE TBLSPACE,这是一个特殊的TBLSPACE,用来跟踪ONLINE创建的数据库,是根DBSPACE中的第二个TBLSPACE,其TBLSNUM为1000002。这个TBLSPACE中的每行保存一个数据库的信息。
; TBCHECK -Cd DATABASE:TABLE
测试一个表空间的数据。它从表空间中读取所有页做一致性检查,并检测位图也以确认该页被正确映像。它所做的工作包括:确认数据的有效性,对特殊数据做相应标志(如BLOB页,剩余页等)。
; TBCHECK -Ci DATABASE:TABLE
测试表上的索引,比如是否所有的ROWID都指向表中的有效行,必要时,重建SYSINDEXES信息。它所做的工作包括:验证索引是否有效,重建被损坏的索引,并对索引树重新做相应调整。
索引策略:
应加索引的字段:用连接(JOIN)的字段,用来过滤的字段(在WHERE条件中使用的字段,称为过滤器),用排序的字段(ORDER BY)。
不应加索引的字段:有高重复值的字段
另外,可以用主键限制索引个数,加复合索引来避免重复,用聚簇索引加快索引速度。
六、其它重要的工具:
; UPDATE STATISTICS [LOW | MEDIUM | HIGH]
此语句的三个主要作用:更新内部表;产生数据分布;优化存储过程
应定期使用
; tbinit
用初始化数据库共享内存。每次开机都必须执行此命令。一般将它放在/etc/rc2.d目录下的一个自引导文件中。
例如:当以应用软件注册时,系统提示:
DBERR 529/C-ISAM 123 [Open Database]
使用finderr查529错误,提示:
-529 Cannot attach to shared memory. {不能使用共享内存}
此时,使用tbinit命令将数据库共享内存进行初始化,系统恢复正常。
; tbmode -sy| tbmode -ky
用关闭数据库共享内存。为了数据的安全,每次关机前都必须执行此命令。为了简化操作,我们经常将它放在/etc/rc0.d目录下的一个自引导文件中,让系统进入多用户时自动来执行此文件。
; finderr
用来查询数据库的错误。当系统出现数据库错误时,系统处了给你简单的出错提示外,还给出一个错误号。你可以使用此命令对这种错误进行深入的分析,然针对不同的错误进行相应的处理。
例如:当你在超级用户root下对储蓄数据库bankstar进行操作时,系统提示:
387: No connect permission.
111: ISAM error: no record found.
意思是:系统出现387错误,错误的原因是:没有connect权限。
原因分析:
操作数据库至少需要CONNECT权限。解决如下:informix用户注册,执行如下SQL语句:grant connect to root
; dbaccess(略)
cqhaibo 回复于:2003-02-17 10:15:42
这不是去年精华区的贴吗?!!
wocclyl 回复于:2003-05-07 19:01:53
good
bryanheqi 回复于:2003-06-23 08:27:42
up 一下
ahnmos 回复于:2003-08-07 13:26:18
tbstat是不是就是onstat呀?
我的9.21和7.31上怎么都没有? :shock:
|