Informix的监控和管理命令揭示

    作者:数据库学习更新于: 2015-10-20 10:06:29

    今天小编为大家带来的是Informix的监控和管理命令的数据库教程

    监控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  flagsfchunk  nchunks flags ownername
    8040a244 1111 N informix rootdbs
    1 active, 8 total
    Chunks
    address chk/dbs offset  size free bpages  flags pathname
    80409d84 1  1  0  300000  231871PO- /dev/rdata
    1 active, 8 total
    其中的FREE项,显示了该CHUNK的空闲空间大小(Kbytes).
     Tbstat -l :日志文件情况
    Physical Logging
    Buffer bufused bufsize numpages numwrits pages/io
     P-2 016  000.00
     phybegin physize phypos  phyused %used
     101782  15000960 00.00
    Logical Logging
    Buffer bufused bufsize numrecs numpages numwrits recs/pages pages/io
     L-2 016  1111.01.0
    address number  flagsuniqid  beginsize used%used
    8042de94 1U---C-L 110521a  7500 630 8.40
    8042deb0 2F------ 0106f66  75000 0.00
    8042decc 3F------ 0108cb2  75000 0.00
    8042dee8 4F------ 010a9fe  75000 0.00
    8042df04 5F------ 010c74a  75000 0.00
    8042df20 6F------ 010e496  75000 0.00
    其中:%USED: 使用百分比
    FLAGS字段的含义:
    F: 空闲 B:已备份 C: 正在接收事物记录
    U: 正在使用 A: 新增日志 L: 包含最后一个检查点
     Tbstat - u:ONLINE的用户情况
    Users
    address flags  pid user tty waittout locks nreads  nwrites
    804019f4 ------D 329 root console 0  00 179 2
    80401a64 ------D 0  root console 0  00 00
    80401ad4 ------F 330 root 0  00 00
    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类型的行时,加在该行上的锁。
    键锁:用于索引树上的锁。一般在相应字节上加删除标志。
    这几种锁的识别如下:
      TYPETBLSNUM  ROWID SIZE  
    库锁  HDR+X  1000002 205 0  
    表锁 100000e 00
    页锁 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
    181199 358 49.44  7 8  20.00
    isamtot open start  read  write rewrite delete  commit  rollbk
    3 1 1 0 0 0 010
    ovtbls ovlock ovuser  oVBuff  usercpu syscpu  numckpts flushes
    0  0  00  0.00 0.00 2  239
    bufwaits lokwaits lockreqs deadlks dltouts lchwaits ckpwaits compress
    0  00  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 -PTDATABASE: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

    以上内容就讲到这。想了解更多数据库学习可登录课课家官方网。

课课家教育

未登录