Prayer

在一般中寻求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

db2日常监控(一)--db2pd工具

Posted on 2010-02-09 18:01 Prayer 阅读(707) 评论(0)  编辑 收藏 引用 所属分类: DB2
在 8.2 版中, 引入一种新的工具 db2pd 来监控和管理 DB2 数据库和实例。使用这一工具可以跟踪事务、表空间、表统计信息、动态 SQL 和所有配置信息。对于故障检修、确定问题和性能调优等方面。
db2pd用于收集 DB2 实例和数据库的统计信息。db2pd 提供了 20 多个选项显示关于数据库事务、表空间、表统计信息、动态 SQL、数据库配置和其他很多细节的信息。单个 db2pd 命令可以检索多个领域的信息,并把结果保存到文件中。也可以在特定时期内调用该工具一定的次数,帮助您了解随着时间的变化数据库中的变动情况。该工具可用于故障检修、问题确定、数据库监控、性能调优和帮助应用程序的开发设计。
db2pd工具有两种执行方式:
1.交互式
2.直接在命令行执行
对于第一种交互式执行方式,需要要在命令行执行:
************************************************************
[db2inst1@localhost ~]$ db2pd -interactive
db2pd> You are running db2pd in interactive mode.
db2pd> If you want command line mode, rerun db2pd with valid options.
db2pd> Type -h or -help for help.
db2pd> Type q to quit.
db2pd>
************************************************************
或者直接执行db2pd.这样可以进入db2pd的命令行,进行交互式操作,例如:
************************************************************
db2pd> -mempools
Database Partition 0 -- Active -- Up 47 days 12:09:32
Memory Pools:
Address    MemSet   PoolName   Id    Overhead   LogSz      LogUpBnd   LogHWM     PhySz      PhyUpBnd   PhyHWM     Bnd BlkCnt CfgParm  
0x10000818 DBMS     monh       11    24352      140848     368640     142182     180224     376832     180224     Ovf 13     MON_HEAP_SZ
0x10000780 DBMS     resynch    62    13792      100880     3244032    100880     131072     3244032    131072     Ovf 2      n/a      
0x100006E8 DBMS     apmh       70    0          109258     1622016    114378     131072     1622016    131072     Ovf 86     n/a      
0x10000650 DBMS     kerh       52    96         27260      360448     27684      49152      360448     49152      Ovf 11     n/a      
0x100005B8 DBMS     bsuh       71    0          103824     9256960    225132     131072     9256960    245760     Ovf 158    n/a   
************************************************************
交互方式只要在db2pd命令行下输入相关参数即可。本例输出结果为实例的内存池使用相关信息。
以上介绍的交互式执行方式如果改用在系统命令行直接执行的话:
************************************************************
[db2inst1@localhost ~]$ db2pd -mempools
Database Partition 0 -- Active -- Up 47 days 12:16:11
Memory Pools:
Address    MemSet   PoolName   Id    Overhead   LogSz      LogUpBnd   LogHWM     PhySz      PhyUpBnd   PhyHWM     Bnd BlkCnt CfgParm  
0x10000818 DBMS     monh       11    24352      140848     368640     142182     180224     376832     180224     Ovf 13     MON_HEAP_SZ
0x10000780 DBMS     resynch    62    13792      100880     3244032    100880     131072     3244032    131072     Ovf 2      n/a      
0x100006E8 DBMS     apmh       70    0          109258     1622016    114378     131072     1622016    131072     Ovf 86     n/a      
0x10000650 DBMS     kerh       52    96         27260      360448     27684      49152      360448     49152      Ovf 11     n/a  
************************************************************
其实和交互方式执行是一样的结果。
db2pd有22个选项,如果想对所有分区,所有活动数据库,运行所有选项,您只要输入db2pd -everything,就会列出所有信息。
//如果想控制输出的范围,可以参考如下:
-ins             输出实例相关信息
-db dbname       输出数据库dbname相关信息,用于单一指定的数据库。
-alldb           输出所有数据库信息。
-dbp partitionnum  输出特定的数据库分区服务器的信息
-alldbp          输出所有数据库分区服务器的信息
-osinfo         输出操作系统相关信息
//实例范围的选项:
(1)-agents      输出DB2代理的相关信息。在日常监控中是一个比较常用的选项,执行方式和输出方式可以通过不同了选项进行控制。
****************************************************************
[db2inst1@localhost ~]$ db2pd -agents db=db2db
Database Partition 0 -- Active -- Up 47 days 12:44:13
Agents:
Current agents:     42
Idle agents:        23
Active agents:      18
Coordinator agents: 18
Address    AppHandl [nod-index] AgentPid   Priority   Type     State   ClientPid  Userid   ClientNm Rowsread   Rowswrtn   LkTmOt DBName 
0x101818F0 431      [000-00431] 32659      0          Coord    Active  0                   db2jccTP 546895     575        NotSet DB2DB  
0x101833A0 202      [000-00202] 32717      0          Coord    Active  0                   db2jccTP 20556      0          NotSet DB2DB  
0x10175AF0 457      [000-00457] 29669      0          Coord    Active  0                   db2jccTP 38169      0          NotSet DB2DB  
0x10176D70 201      [000-00201] 31400      0          Coord    Active  0                   db2jccma 95758      0          NotSet DB2DB  
0x10176280 187      [000-00187] 29670      0          Coord    Active  0                   db2jccTh 9508153    0          NotSet DB2DB  
****************************************************************
只输出数据库DB2DB相关信息。相关子选项还包括agent=<agentid>,application=<appid>等。
(2)-fcm     FCM信息
(3)-mempools   输出内存池相关信息。如:
************************************************************
[db2inst1@localhost ~]$ db2pd -mempools
Database Partition 0 -- Active -- Up 47 days 12:16:11
Memory Pools:
Address    MemSet   PoolName   Id    Overhead   LogSz      LogUpBnd   LogHWM     PhySz      PhyUpBnd   PhyHWM     Bnd BlkCnt CfgParm  
0x10000818 DBMS     monh       11    24352      140848     368640     142182     180224     376832     180224     Ovf 13     MON_HEAP_SZ
0x10000780 DBMS     resynch    62    13792      100880     3244032    100880     131072     3244032    131072     Ovf 2      n/a      
0x100006E8 DBMS     apmh       70    0          109258     1622016    114378     131072     1622016    131072     Ovf 86     n/a      
0x10000650 DBMS     kerh       52    96         27260      360448     27684      49152      360448     49152      Ovf 11     n/a  
************************************************************
(4)-dbmcfg    输出dbm配置信息,等同于get dbm cfg 命令,但输出格式稍有不同。
(5)-utilities 输出db2实用程序相关信息。如果正在进行数据库备份,执行该选项可以看到:
************************************************************
[db2inst1@fxstest1 ~]$ db2pd -utilities
Database Partition 0 -- Active -- Up 5 days 19:43:49
Utilities:
Address    ID         Type                   Priority   DBName   StartTime                  NumPhases  CurPhase   Description        
0x100E24F0 371        BACKUP                 0          DB2DB  Mon Oct 23 09:07:51 2006   1          1          offline db d       
Progress:
Address    ID         PhaseNum   Description            StartTime                  CompletedWork                TotalWork                  
0x100E2710 371        1                                Mon Oct 23 09:07:51 2006   0 bytes                      12673724849 bytes          
[db2inst1@fxstest1 ~]$
************************************************************
该输出结果中,记录了正在执行的实用程序相关信息。程序程序类型,数据库名称,备份类型等。
//数据库范围的选项,注意,数据库范围的选项一定要指定某个数据库,加上参数-db dbname:
(1)-applications    特定数据库的应用程序的相关信息。
************************************************************
[db2inst1@localhost ~]$ db2pd -applications -db db2db
Database Partition 0 -- Database DB2DB -- Active -- Up 47 days 13:19:50
Applications:
Address    AppHandl [nod-index] NumAgents  CoorPid    Status                  Appid                          
0x10160C70 431      [000-00431] 1          32659      UOW-Waiting             GA04051D.D308.010E635F83E3     
0x100DDD10 202      [000-00202] 1          32717      UOW-Waiting             GA04051D.D305.010E635F7D45     
0x100DDCA0 457      [000-00457] 1          29669      UOW-Waiting             GA04051D.D304.010E635F7D3B     
0x101938D0 201      [000-00201] 1          31400      UOW-Waiting             GA04051D.D2EE.010E635B3321     
0x10193E20 187      [000-00187] 1          29670      UOW-Waiting             GA04051F.A010.010E5A07F490     
0x101903C0 37       [000-00037] 1          19507      UOW-Waiting             GA04051F.A00F.010E5A07F459           
************************************************************
同时还有很多相关子选项用于更精确的输出某个应用程序的相关信息。
(2)-transactions     输出某个特定数据库的事务信息
(3)-bufferpools      输出某个特定数据库的缓冲池信息
(4)-logs      输出某个特定数据库的日志信息
(5)-reorgs           输出某个特定数据库的表重组信息
相关统计信息参数还有很多,可以通可帮助信息获得。

//其它用途选项:
(1)-repeat [num sec] [count]    该选项用于重复db2pd命令,并指定间隔多长时间执行多少次,例如:
************************************************************
[db2inst1@localhost ~]$ db2pd -agents -repeat 2 5
************************************************************
该命令表明输出实例的代理进程信息,并且是每2秒种输出一次,共输出5次。
(2)-file <filename>  该选项将输出结果保存到一个指定文件中。例如:
************************************************************
[db2inst1@localhost ~]$ db2pd -agents -repeat 2 5 -file agent_info.txt
Sending -agents output to /home/db2inst1/agent_info.txt.
Sending -agents output to /home/db2inst1/agent_info.txt.
Sending -agents output to /home/db2inst1/agent_info.txt.
Sending -agents output to /home/db2inst1/agent_info.txt.
Sending -agents output to /home/db2inst1/agent_info.txt.
************************************************************
以上例为基础,加上-file agent_info.txt选项后,该命令会把输出保存到agent_info.txt文件中。以便进行详细分析。
(3)db2pd 命令的所有选项都可以使用前三个字符的缩写,只有两个除外:-mempools 和 –memsets。
 
//接下来讲一个具体应用db2pd的例子。
如果想确定谁给数据库加了锁,并想知道销类型等相关信息:
************************************************************
[db2inst1@localhost ~]$ db2pd -db db2db -lock -transactions -agents -file lock_info.txt
************************************************************
该命令会将lock,transactions,agents三项的输出保存到lock_info.txt中。然后通过lock部分输出中TranHdl可以在transactions输出中找到AppHandl,然后再根据AppHandl,可以在agents部分输出中
找到持有该锁的Userid。在确定是谁给数据库加了锁。

//要想了解db2pd命令的全部信息,可以执行db2pd -help来获得。
 

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理