informix1.docx

上传人:b****6 文档编号:7210384 上传时间:2023-01-21 格式:DOCX 页数:17 大小:26.92KB
下载 相关 举报
informix1.docx_第1页
第1页 / 共17页
informix1.docx_第2页
第2页 / 共17页
informix1.docx_第3页
第3页 / 共17页
informix1.docx_第4页
第4页 / 共17页
informix1.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

informix1.docx

《informix1.docx》由会员分享,可在线阅读,更多相关《informix1.docx(17页珍藏版)》请在冰豆网上搜索。

informix1.docx

informix1

通常情况下,你只要执行dbschema –d 数据库名称 文件名,就可以卸出全部建库脚本了。

 

 全部参数的使用说明如下:

 

 dbschema -d dbname [-t tabname] [-s user] [-p user] [-r rolename] [-f procname] [-hd tabname] [-ss] [filename] 

  

 -d      指定要访问的数据库名称(必选参数) 

 filename存放卸出脚本的文件名称(必选参数。

如果无此参数,执行结果会显示在屏幕上) 

 -t      列出指定表的信息,或者用“all”参数来列出所有表 

 -s      列出指定用户的“synonyms”同义字,或者用“all”来列出所有用户情况(不常用) 

 -ss     包含服务器上的特殊字符(卸载全数据库脚本的时候,如果安装了中文环境或者包含存储过程的时候,最好加上这个选项,否则有些东西会卸载不出来) 

 -p      列出指定用户的“grant”授权情况,或者用“all”来列出所有用户情况(不常用) 

 -r      列出指定角色的创建和授权情况,或者用“all”来列出所有角色情况 (不常用。

SE不支持)            

 -f      列出指定的存储过程,或者用“all”来列出所有存储过程 

 -hd     (没用过,不知道这个参数是做什么的) 

  

 如何使用dbschema 工具卸出数据库的结构 

 例如:

 

 1)导出数据库中所有的表结构到文件db.sql 

 $>dbschema -d your_database -t all db.sql 

 2)导出数据库中所有的存储过程到文件db.sql 

 $>dbschema -d your_database -f all db.sql 

 3)导出数据库中的所有对象(包含表,存储过程,触发器……)到文件db.sql 

 $>dbschema -d your_database db.sql 

 4)导出数据库中一个表的结构到文件db.sql 

 $>dbschema -d your_database_name -t your_table_name db.sql 

 5)导出一个存储过程定义到文件db.sql 

 $>dbschema -d your_database_name -f your_procedure_name db.sql 

 6)如果导出更多的表的信息(EXTENT...) 

 $>dbschema -d your_database_name -ss db.sql 

 7)导出数据库中对用户或角色的授权信息 

 $>dbschema -d your_database_name -p all 

 $>dbschema -d your_database_name -r all 

 8)导出数据库中的同义词 

 $>dbschema -d your_database_name -s all

 

1 onstat工具

1.1 监控虚拟处理器和线程

onstat –g ath

显示有关线程和处理器类的信息

 

onstat –g glo

显出当前每个处理器的信息以及有关每个处理器类的累积的统计信息

 

onstat –g ioq

使用onstat –g ioq可以确定你是否要分配附加的AIO虚拟处理器。

监视AIO vp的gdf队列的长度,队列一贯短时表示对磁盘设备的处理速度与发生请求的速度一样快。

如果gdf队列持续很长,考虑增加AIO vp的数目。

 

onstat –g wai

显示等待状态的线程

 

onstat –g act

显示活动状态的现场

 

onstat –g rea

监视就绪队列中的线程

 

onstat –g sle

显示睡眠状态的线程

1.2 操作系统进程与数据库session的关系

1)        使用操作系统命令(例如topas)查看最繁忙的oninit进程,记录它的pid

2)        用onstat –g glo查看vp class,看相应进程里运行的是那个vp(用pid去匹配)。

确定瓶颈是在那一类vp上(比如是在cpu vp上还是在aio vp上)。

记录vp,class。

3)        用onstat –g act(或onstat –g ath)查看相应vp里运行的是那个线程(用vp class去匹配),记录它的tid,rstcb。

4)        用onstat –g ses ses_id检查session信息(用tid,rstcb去匹配)

下面的shell用于获得所有session信息

!

/usr/bin/ksh

###############################################################################

#

#       Module:

         ses_all.sh

#       Author:

         Henry Cheung

#       Description:

    Get all sessiong information 

#       History

#       Date        Name               Description.................

#       07/30/2004  Henry Cheung       Start Program 

#

###############################################################################

 

onstat -g ses | grep -v IBM |grep -v session |grep -v id | awk '{print $1}' | while read SES_ID

do

onstat -g ses $SES_ID

done

 

1.3 监控共享内存

onstat –o

捕获共享内存的静态快照用于今后的分析和比较

 

onstat –g seg

显示每个共享内存段的信息。

一般用于检查有几个虚拟内存段。

如果虚拟内存段过多,考虑调整SHMVIRSIZE,和SHMADD参数。

 

onstat –s

获取锁存器的信息

 

onstat –p

显示数据库活动的统计信息。

比如cached的读写命中率。

如果读写命中率较低,考虑调整BUFFERS参数。

ovuserthread-用户尝试超过用户最大线程最大的次数,ovbuff数据库服务器无法找到共享内存缓冲区的次数,

1.4 监视磁盘使用

onstat -d

检查数据库dbspace、chunk使用情况。

配合topas等系统命令,监控是否某个物理硬盘出现I/O瓶颈。

 

onstat –g iof

显示每个块的读取、写入的次数

1.5 其他

方法:

onstat

 

目的:

检查数据库服务器运行了多长时间,总共占用了多少内存。

 

方法:

onstat –c 或 oncheck –pr

目的:

检查数据库服务器当前使用的配置文件

 

方法:

onstat –g env

目的:

检查数据库服务器当前使用的环境变量

 

onstat -l

检查逻辑日志情况。

 

onstat –m或vi online.log

检查数据库日志,包括检查点完成时间,是否有异常等。

 

onstat –g ses (session id), onstat –g sql

检查session状况

 

方法:

onstat –u

目的:

显示库用户活动信息

 

方法:

onstat –x

目的:

显示数据库服务器上的事务信息

2 oncheck工具

方法:

oncheck -cr

目的:

检查保留页

 

方法:

oncheck –ce

目的:

检查统空间使用情况

 

方法:

oncheck –cc database

目的:

检查应用数据库的系统表

 

方法:

oncheck –ci, oncheck -cI

目的:

检查数据库的索引情况,注意此命令会影响生产系统且耗时较长,应在适当的时候检查。

 

方法:

oncheck –cd, oncheck –cD

目的:

检查数据库的数据情况,,注意此命令会影响生产系统且耗时较长,应在适当的时候检查。

3 使用SMI

3.1 dbspace使用情况

--FileName:

 dbspaces.sql

--dbspace使用情况:

输入dbspace name, allocated, free, percent of used

unload to dbs.txt delimiter " "

SELECT name[1,15] dbspace, SUM(chksize) allocated, SUM(nfree) free,

ROUND(((SUM(chksize) - SUM(nfree))/SUM(chksize))*100) pcused

FROM sysmaster:

sysdbspaces d, sysmaster:

syschunks c

WHERE d.dbsnum = c.dbsnum

GROUP BY 1

ORDER BY 4 DESC

及时监控dbspace的使用情况,以便分配新的空间给数据库使用

3.2 dbspace I/O

--FileName:

 dbs_io.sql

--dbspace、chunk I/O:

 dbspace name, path, disk reads, disk writes

UNLOAD TO dbs_io.txt DELIMITER " "

SELECT first 10 d.name, fname path_name, SUM(pagesread) diskreads, SUM(pageswritten) diskwrites

FROM sysmaster:

syschkio c, sysmaster:

syschunks k, sysmaster:

sysdbspaces d

WHERE d.dbsnum = k.dbsnum

AND k.chknum = c.chunknum

GROUP BY 1, 2

ORDER BY 3 DESC

监视是否存在某个dbspace I/O较高的情况,如果有就要考虑更为合理的数据分布和硬盘划分。

3.3 统计数据库占用的空间

--FileName:

 database_size.sql

--统计数据库占用的空间:

dbspace, database_name, size

SELECT dbsname[1,15] database_name, SUM(pe_size) size

FROM sysmaster:

sysptnext,

OUTER sysmaster:

systabnames

WHERE pe_partnum = partnum

GROUP BY 1

ORDER BY 2 DESC

3.4 表扩展块情况

--FileName:

 extents.sql

--获取系统中extents最多的表的表名,所在的数据库名,extents的数量

--sysextents表9.2版本和9.4版本的结构有不同,但不影响本sql执行

UNLOAD TO extents.txt DELIMITER " "

SELECT FIRST 20 t.dbsname, t.tabname, count(*)

FROM sysmaster:

systabnames t, sysmaster:

sysextents e

WHERE t.dbsname = e.dbsname

AND t.tabname = e.tabname

AND t.tabname[1,3] !

= "sys"

GROUP BY 1,2 

ORDER BY 3 DESC

如果发现表的extents数量过多,就要考虑调整extents的大小,并且重建表。

3.5 表I/O

--FileName:

 tab_io.sql

--table I/P:

 dbsname, tabname, disk reads, disk writes, disk io sum 

UNLOAD TO tab_io.txt DELIMITER " "

SELECT first 5 dbsname, tabname, (isreads + pagreads) diskreads, (iswrites + pagwrites) diskwrites,

(isreads + pagreads + iswrites + pagwrites) disk_io

FROM sysmaster:

sysptprof

WHERE tabname[1,3] !

= "sys"

ORDER BY 5 DESC

监视是否存在某张表I/O较高的情况,如果有就要考虑更为合理的数据分布和硬盘划分。

3.6 表空间的使用情况

--FileName:

 tab_space.sql

--表空间的使用情况:

 table name, dbspace, allocated_space, used_space, free_space

--针对每个应用库

UNLOAD TO tab_used.txt DELIMITER " "

SELECT FIRST 10 t.tabname[1,20] table_name,

      Cast(dbinfo( "DBSPACE" , t.partnum ) as char(10)) dbspace ,

      p.nptotal  allocated_space,

      p.npused used_space,

      (p.nptotal - p.npused) free_space,

      ROUND((p.npused/p.nptotal)*100) percent_used

FROM sysmaster:

systabnames t, APPDB:

systables a, sysmaster:

sysptnhdr p

WHERE a.partnum = p.partnum

AND   a.partnum = t.partnum

AND   tabid > 99

GROUP BY 1,2,3,4,5

ORDER BY 3 DESC

如果表空间分配的较多而使用的较少,就要考虑重建表。

3.7 索引层数

--FileName:

 idx_lvl.sql

--索引层:

 table name, index name, levels

--应用库

SELECT FIRST 5 t.tabname, i.idxname, i.levels 

FROM APPDB:

systables t, APPDB:

sysindexes i

WHERE t.tabid = i.tabid

AND t.tabname[1,3] !

= "sys"

ORDER BY 3 DESC

当索引层数超过4层就要考虑是否需要重建索引。

3.8 索引唯一性

--FileName:

 idx_unq.sql

--索引唯一性:

 table name, index name, table rows, index unique, percent of unique

--应用库

--i.nunique/t.nrows有可能会除零,

UNLOAD TO idx_unq.txt DELIMITER " "

SELECT FIRST 10 t.tabname, i.idxname, t.nrows, i.nunique

FROM APPDB:

systables t, APPDB:

sysindexes i

WHERE t.tabid =i.tabid

AND t.tabid > 99

ORDER BY  3 DESC

 

{

SELECT FIRST 10 t.tabname, i.idxname, t.nrows, i.nunique, (i.nunique/t.nrows)*100 pcniq

FROM APPDB:

systables t, APPDB:

sysindexes i

WHERE t.tabid =i.tabid

AND t.tabid > 99

ORDER BY  3 DESC, 5 DESC

}

索引唯一性的百分率越高,索引的唯一性就越高,性能就越好。

为了避免因索引重复程度很高而引起的性能瓶颈,您可以使用复合索引来替换原来的索引,复合索引结合了重复程度很高的列与唯一性比较高的列。

3.9 顺序扫描

--FileName:

 seq_scans.sql

--顺序扫描:

 database name, table name, number of rows, total sequence scans

--应用库

UNLOAD TO seq_scans.txt DELIMITER " "

SELECT FIRST 10 p.dbsname, p.tabname,  t.nrows, sum(p.seqscans) tot_seqscans

FROM sysmaster:

sysptprof p,  systables t

WHERE p.dbsname NOT LIKE "sys%"

AND p.dbsname = APPDB

AND p.tabname = t.tabname

AND t.tabname NOT LIKE "sys%" 

GROUP BY 1,2,3

ORDER BY 3 DESC,4 DESC

如果一个具有几千甚至几百万行大表的顺序扫描数很高,那么您可能需要考虑向该表添加一些索引,或者考虑使用程序伪指令来强制内部查询优化器为访问该表中的数据选择索引而不是顺序扫描。

3.10 获取session信息

可以从syssespro(各用户操作计数),syssesions(对每个已连接用户的描述)表中获取sessions信息。

--FileName:

 sessions.sql

--sessions信息:

 session id, user name, host name, access, locks, sequence scans, total sorts, disk sorts, percent of memory sorts

SELECT s.sid, s.username, s.hostname,

(isreads+iswrites+bufreads+bufwrites+pagreads+pagwrites) access,

locksheld, seqscans, total_sorts, dsksorts,

((total_sorts - dsksorts)/total_sorts)*100 pct_memsorts

FROM sysmaster:

syssessions s, sysmaster:

syssesprof f

WHERE s.sid=f.sid

ORDER BY 4

如果一个session有过多的顺序扫描,或占用过多的锁资源,或使用了较多的disk sorts就需要关注这个session。

3.11 sessions持有lock的情况

--FileName:

 lock.sql

--sessions持有lock的情况:

 sid, username, hostname, database name, table name, lock type

SELECT owner, username, hostname, dbsname, tabname, type

FROM sysmaster:

syssessions s, sysmaster:

syslocks l

WHERE sid  = owner

AND tabname NOT LIKE "sys%"

如果在锁使用方面存在某些冲突,例如某个用户需要对已被别的用户锁定的表进行专有访问,那么您可以方便地确定该锁的所有者,并根据用户的优先级发出 onmode -z sid 命令来杀死会话,然后释放该锁;sid 这个编号是从上面输出中的 owner 字段中获取的;请注意,只有用户“Informix”可以执行该命令。

3.12 锁信息

--锁信息:

数据库名,表名,该表占有互斥锁的个数

--FileName:

 lock_count.sql

--锁信息:

数据库名,表名,该表占有互斥锁的个数

SELECT FIRST 10 dbsname, tabname, COUNT(*) 

FROM syslocks 

WHERE type LIKE "%X%" 

GROUP BY 1, 2 

ORDER BY 3

4 性能瓶颈时应急方法

4.1 收集系统运行信息

收集全面的系统运行信息,以便今后分析问题所在。

使用onstat –a,onstat –g all,并保留输出信息到文件中。

保留online.log。

如果数据库宕机有core文件生成,请保留core文件。

4.2 数据库宕机

重启数据库保证关键业务运行。

保留online.log,core文件。

查看online.log,core文件,初步判断宕机原因,并于IMB技术支持联系。

如果重启失败,考虑切换到备份机。

4.3 系统运行突然变慢,系统资源被占用过多

4.3.1    检查系统资源

首先用topas,nmon,sar, vmstat,iostat等命令检查CPU,内存、硬盘资源的使用情况。

topas

Topas Monitor for host:

    S1_C_HZ_SHUJUKU      EVENTS/QUEUES    FILE/TTY

Tue Jul 27 13:

01:

26 2004   Interval:

  2         Cswitch    1907  Readch     2750

                                               Syscall    7513  Writech     581

Kernel    2.2   |#                           |  Reads        21  Rawin         0

User     62.0   |##########

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 研究生入学考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1