在 8.2 版中, 引入一種新的工具 db2pd 來監(jiān)控和管理 DB2 數(shù)據(jù)庫(kù)和實(shí)例。使用這一工具可以跟蹤事務(wù)、表空間、表統(tǒng)計(jì)信息、動(dòng)態(tài) SQL 和所有配置信息。對(duì)于故障檢修、確定問題和性能調(diào)優(yōu)等方面。
db2pd用于收集 DB2 實(shí)例和數(shù)據(jù)庫(kù)的統(tǒng)計(jì)信息。db2pd 提供了 20 多個(gè)選項(xiàng)顯示關(guān)于數(shù)據(jù)庫(kù)事務(wù)、表空間、表統(tǒng)計(jì)信息、動(dòng)態(tài) SQL、數(shù)據(jù)庫(kù)配置和其他很多細(xì)節(jié)的信息。單個(gè) db2pd 命令可以檢索多個(gè)領(lǐng)域的信息,并把結(jié)果保存到文件中。也可以在特定時(shí)期內(nèi)調(diào)用該工具一定的次數(shù),幫助您了解隨著時(shí)間的變化數(shù)據(jù)庫(kù)中的變動(dòng)情況。該工具可用于故障檢修、問題確定、數(shù)據(jù)庫(kù)監(jiān)控、性能調(diào)優(yōu)和幫助應(yīng)用程序的開發(fā)設(shè)計(jì)。
db2pd工具有兩種執(zhí)行方式:
1.交互式
2.直接在命令行執(zhí)行
對(duì)于第一種交互式執(zhí)行方式,需要要在命令行執(zhí)行:
************************************************************
[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>
************************************************************
或者直接執(zhí)行db2pd.這樣可以進(jìn)入db2pd的命令行,進(jìn)行交互式操作,例如:
************************************************************
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命令行下輸入相關(guān)參數(shù)即可。本例輸出結(jié)果為實(shí)例的內(nèi)存池使用相關(guān)信息。
以上介紹的交互式執(zhí)行方式如果改用在系統(tǒng)命令行直接執(zhí)行的話:
************************************************************
[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
************************************************************
其實(shí)和交互方式執(zhí)行是一樣的結(jié)果。
db2pd有22個(gè)選項(xiàng),如果想對(duì)所有分區(qū),所有活動(dòng)數(shù)據(jù)庫(kù),運(yùn)行所有選項(xiàng),您只要輸入db2pd -everything,就會(huì)列出所有信息。
//如果想控制輸出的范圍,可以參考如下:
-ins 輸出實(shí)例相關(guān)信息
-db dbname 輸出數(shù)據(jù)庫(kù)dbname相關(guān)信息,用于單一指定的數(shù)據(jù)庫(kù)。
-alldb 輸出所有數(shù)據(jù)庫(kù)信息。
-dbp partitionnum 輸出特定的數(shù)據(jù)庫(kù)分區(qū)服務(wù)器的信息
-alldbp 輸出所有數(shù)據(jù)庫(kù)分區(qū)服務(wù)器的信息
-osinfo 輸出操作系統(tǒng)相關(guān)信息
//實(shí)例范圍的選項(xiàng):
(1)-agents 輸出DB2代理的相關(guān)信息。在日常監(jiān)控中是一個(gè)比較常用的選項(xiàng),執(zhí)行方式和輸出方式可以通過不同了選項(xiàng)進(jìn)行控制。
****************************************************************
[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
****************************************************************
只輸出數(shù)據(jù)庫(kù)DB2DB相關(guān)信息。相關(guān)子選項(xiàng)還包括agent=<agentid>,application=<appid>等。
(2)-fcm FCM信息
(3)-mempools 輸出內(nèi)存池相關(guān)信息。如:
************************************************************
[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實(shí)用程序相關(guān)信息。如果正在進(jìn)行數(shù)據(jù)庫(kù)備份,執(zhí)行該選項(xiàng)可以看到:
************************************************************
[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 ~]$
************************************************************
該輸出結(jié)果中,記錄了正在執(zhí)行的實(shí)用程序相關(guān)信息。程序程序類型,數(shù)據(jù)庫(kù)名稱,備份類型等。
//數(shù)據(jù)庫(kù)范圍的選項(xiàng),注意,數(shù)據(jù)庫(kù)范圍的選項(xiàng)一定要指定某個(gè)數(shù)據(jù)庫(kù),加上參數(shù)-db dbname:
(1)-applications 特定數(shù)據(jù)庫(kù)的應(yīng)用程序的相關(guān)信息。
************************************************************
[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
************************************************************
同時(shí)還有很多相關(guān)子選項(xiàng)用于更精確的輸出某個(gè)應(yīng)用程序的相關(guān)信息。
(2)-transactions 輸出某個(gè)特定數(shù)據(jù)庫(kù)的事務(wù)信息
(3)-bufferpools 輸出某個(gè)特定數(shù)據(jù)庫(kù)的緩沖池信息
(4)-logs 輸出某個(gè)特定數(shù)據(jù)庫(kù)的日志信息
(5)-reorgs 輸出某個(gè)特定數(shù)據(jù)庫(kù)的表重組信息
相關(guān)統(tǒng)計(jì)信息參數(shù)還有很多,可以通可幫助信息獲得。
//其它用途選項(xiàng):
(1)-repeat [num sec] [count] 該選項(xiàng)用于重復(fù)db2pd命令,并指定間隔多長(zhǎng)時(shí)間執(zhí)行多少次,例如:
************************************************************
[db2inst1@localhost ~]$ db2pd -agents -repeat 2 5
************************************************************
該命令表明輸出實(shí)例的代理進(jìn)程信息,并且是每2秒種輸出一次,共輸出5次。
(2)-file <filename> 該選項(xiàng)將輸出結(jié)果保存到一個(gè)指定文件中。例如:
************************************************************
[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.
************************************************************
以上例為基礎(chǔ),加上-file agent_info.txt選項(xiàng)后,該命令會(huì)把輸出保存到agent_info.txt文件中。以便進(jìn)行詳細(xì)分析。
(3)db2pd 命令的所有選項(xiàng)都可以使用前三個(gè)字符的縮寫,只有兩個(gè)除外:-mempools 和 –memsets。
//接下來講一個(gè)具體應(yīng)用db2pd的例子。
如果想確定誰給數(shù)據(jù)庫(kù)加了鎖,并想知道銷類型等相關(guān)信息:
************************************************************
[db2inst1@localhost ~]$ db2pd -db db2db -lock -transactions -agents -file lock_info.txt
************************************************************
該命令會(huì)將lock,transactions,agents三項(xiàng)的輸出保存到lock_info.txt中。然后通過lock部分輸出中TranHdl可以在transactions輸出中找到AppHandl,然后再根據(jù)AppHandl,可以在agents部分輸出中
找到持有該鎖的Userid。在確定是誰給數(shù)據(jù)庫(kù)加了鎖。
//要想了解db2pd命令的全部信息,可以執(zhí)行db2pd -help來獲得。