在 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来获得。