db2pd コマンドは、トラブルシューティングのために使用します。このツールによって、DB2® メモリー・セットからの情報を素早く即時に返すことが可能です。
このツールは、ラッチを獲得したりエンジン・リソースを使用したりせずに情報を収集します。このため、db2pd が情報を収集している間に、取得対象の情報の内容が変わる可能性があります。つまり、データは完全には正確でないかもしれません (この可能性を考慮に入れる必要があります)。変更メモリー・ポインターが見つかった場合、db2pd が終了するのを防ぐために、シグナル・ハンドラーが使われます。 その結果、例えば「データ構造が変更されたためコマンドが強制終了されました (Changing data structure forced command termination)」というメッセージが出力に含まれる可能性があります。 この点を考慮に入れて使用すれば、このツールはトラブルシューティングに役立ちます。ラッチなしで情報を収集することには 2 つの利点があります (より高速な検索、エンジン・リソースとの競合がない)。
特定の SQLCODE、ZRC コードまたは ECF コードの発生時にデータベース管理システムに関する情報をキャプチャーする場合は db2pdcfg -catch コマンドを使用します。 エラーをキャッチすると、db2cos (コールアウト・スクリプト) が起動します。 任意の db2pd コマンド、オペレーティング・システム・コマンド、または問題解決のために必要なその他のコマンドを実行するために、db2cos スクリプトを動的に変更することができます。テンプレート db2cos スクリプト・ファイルは、 UNIX および Linux では、sqllib/bin にあります。 Windows オペレーティング・システムの場合、db2cos は $DB2PATH¥bin ディレクトリーにあります。
新規ノードを追加している際は、 db2pd -addnode コマンド (詳細情報を参照するには oldviewapps および detail パラメーターを指定します) を使用して、ノードを追加しているデータベース・パーティション・サーバーでの操作の進行状況をモニターできます。
現在アクティブである、または何らかの理由で非アクティブになったイベント・モニターのリストが必要な場合は、 db2pd -gfw コマンドを実行します。このコマンドでは、高速ライター EDU ごとに、イベント・モニターがデータを書き込むターゲットに関する統計および情報も返されます。
例 1: ロック待機の診断
Locks:
Address TranHdl Lockname Type Mode Sts Owner Dur HldCnt Att ReleaseFlg
0x07800000202E5238 3 00020002000000040000000052 Row ..X G 3 1 0 0x0000 0x40000000
0x07800000202E4668 2 00020002000000040000000052 Row ..X W* 2 1 0 0x0000 0x40000000
-db データベース名オプションを使用して指定したデータベースの場合、最初の結果はそのデータベースのロックを示します。この結果は、TranHdl 2 が、TranHdl 3 によって保持されているロックを待機していることがわかります。Transactions:
Address AppHandl [nod-index] TranHdl Locks State Tflag Tflag2 Firstlsn Lastlsn LogSpace SpaceReserved TID AxRegCnt GXID
0x0780000020251B80 11 [000-00011] 2 4 READ 0x00000000 0x00000000 0x000000000000 0x000000000000 0 0 0x0000000000B7 1 0
0x0780000020252900 12 [000-00012] 3 4 WRITE 0x00000000 0x00000000 0x000000FA000C 0x000000FA000C 113 154 0x0000000000B8 1 0
TranHdl 2 が AppHandl 11 に関連付けられていて、TranHdl 3 が AppHandl 12 に関連付けられていることがわかります。Applications:
Address AppHandl [nod-index] NumAgents CoorPid Status C-AnchID C-StmtUID L-AnchID L-StmtUID Appid
0x07800000006879E0 12 [000-00012] 1 1073336 UOW-Waiting 0 0 17 1 *LOCAL.burford.060303225602
0x0780000000685E80 11 [000-00011] 1 1040570 UOW-Executing 17 1 94 1 *LOCAL.burford.060303225601
AppHandl 12 は、動的ステートメント 17, 1 を最後に実行したのがわかります。ApplHandl 11 は、動的ステートメント 17, 1 を現在実行中で、最後に実行ステートメント 94, 1 を実行しました。Dynamic SQL Statements:
Address AnchID StmtUID NumEnv NumVar NumRef NumExe Text
0x07800000209FD800 17 1 1 1 2 2 update pdtest set c1 = 5
0x07800000209FCCC0 94 1 1 1 2 2 set lock mode to wait 1
テキスト列は、ロック・タイムアウトに関連している SQL ステートメントを示しています。例 2: 待機中のすべてのロックをキャプチャーするための -wlocks パラメーターの使用
venus@boson:/home/venus =>db2pd -wlocks -db pdtest
Database Partition 0 -- Database PDTEST -- Active -- Up 0 days 00:01:22
Locks being waited on :
AppHandl [nod-index] TranHdl Lockname Type Mode Conv Sts CoorEDU AppName AuthID AppID
47 [000-00047] 8 00020004000000000840000652 Row ..X G 5160 db2bp VENUS *LOCAL.venus.071207213730
46 [000-00046] 2 00020004000000000840000652 Row .NS W 5913 db2bp VENUS *LOCAL.venus.071207213658
例 3: ロック所有者およびロック待機者に関する詳細な実行時情報をキャプチャーするための -apinfo パラメーターの使用
venus@boson:/home/venus =>db2pd -apinfo 47 -db pdtest
Database Partition 0 -- Database PDTEST -- Active -- Up 0 days 00:01:30
Application :
Address : 0x0780000001676480
AppHandl [nod-index] : 47 [000-00047]
Application PID : 876558
Application Node Name : boson
IP Address: n/a
Connection Start Time : (1197063450)Fri Dec 7 16:37:30 2007
Client User ID : venus
System Auth ID : VENUS
Coordinator EDU ID : 5160
Coordinator Partition : 0
Number of Agents : 1
Locks timeout value : 4294967294 seconds
Locks Escalation : No
Workload ID : 1
Workload Occurrence ID : 2
Trusted Context : n/a
Connection Trust Type : non trusted
Role Inherited : n/a
Application Status : UOW-Waiting
Application Name : db2bp
Application ID : *LOCAL.venus.071207213730
ClientUserID : n/a
ClientWrkstnName : n/a
ClientApplName : n/a
ClientAccntng : n/a
List of inactive statements of current UOW :
UOW-ID : 2
Activity ID : 1
Package Schema : NULLID
Package Name : SQLC2G13
Package Version :
Section Number : 203
SQL Type : Dynamic
Isolation : CS
Statement Type : DML, Insert/Update/Delete
Statement : insert into pdtest values 99
venus@boson:/home/venus =>db2pd -apinfo 46 -db pdtest
Database Partition 0 -- Database PDTEST -- Active -- Up 0 days 00:01:39
Application :
Address : 0x0780000000D77A60
AppHandl [nod-index] : 46 [000-00046]
Application PID : 881102
Application Node Name : boson
IP Address: n/a
Connection Start Time : (1197063418)Fri Dec 7 16:36:58 2007
Client User ID : venus
System Auth ID : VENUS
Coordinator EDU ID : 5913
Coordinator Partition : 0
Number of Agents : 1
Locks timeout value : 4294967294 seconds
Locks Escalation : No
Workload ID : 1
Workload Occurrence ID : 1
Trusted Context : n/a
Connection Trust Type : non trusted
Role Inherited : n/a
Application Status : Lock-wait
Application Name : db2bp
Application ID : *LOCAL.venus.071207213658
ClientUserID : n/a
ClientWrkstnName : n/a
ClientApplName : n/a
ClientAccntng : n/a
List of active statements :
*UOW-ID : 3
Activity ID : 1
Package Schema : NULLID
Package Name : SQLC2G13
Package Version :
Section Number : 201
SQL Type : Dynamic
Isolation : CS
Statement Type : DML, Select (blockable)
Statement : select * from pdtest
例 4: ロッキング問題を検討するときのコールアウト・スクリプトの使用
Lock Timeout Caught
Thu Feb 17 01:40:04 EST 2006
Instance DB2
Database: SAMPLE
Partition Number: 0
PID: 940
TID: 2136
Function: sqlplnfd
Component: lock manager
Probe: 999
Timestamp: 2006-02-17-01.40.04.106000
AppID: *LOCAL.DB2...
AppHdl:
...
Database Partition 0 -- Database SAMPLE -- Active -- Up 0 days 00:06:53
Locks:
Address TranHdl Lockname Type Mode Sts Owner Dur HldCnt Att Rlse
0x402C6B30 3 00020003000000040000000052 Row ..X W* 3 1 0 0 0x40
この出力で、 W* はタイムアウトになったロックを示します。この場合、ロック待機が発生しています。ロック・タイムアウトは、ロックがより高いモードに変換されるときにも発生します。このことは、出力内の C* で示されています。
db2cos ファイルにある他の db2pd コマンドによって提供される出力を参照しながら、この出力結果をトランザクション、アプリケーション、エージェント、SQL ステートメントにマップすることが可能です。出力の特定部分を絞り込んだり、他のコマンドを使用することによって、必要な情報を収集できます。 例えば、db2pd -locks wait パラメーターを使用して、待機状況であるロックだけを印刷できます。-app および -agent パラメーターを使用することもできます。
例 5: アプリケーションと動的 SQL ステートメントのマップ
コマンド db2pd -applications -dynamic は、動的 SQL ステートメントの現行および最新アンカー ID と、ステートメント・ユニーク ID を報告します。 これにより、アプリケーションから動的 SQL ステートメントへの直接的なマッピングが可能になります。
Applications:
Address AppHandl [nod-index] NumAgents CoorPid Status
0x00000002006D2120 780 [000-00780] 1 10615 UOW-Executing
C-AnchID C-StmtUID L-AnchID L-StmtUID Appid
163 1 110 1 *LOCAL.burford.050202200412
Dynamic SQL Statements:
Address AnchID StmtUID NumEnv NumVar NumRef NumExe Text
0x0000000220A02760 163 1 2 2 2 1 CREATE VIEW MYVIEW
0x0000000220A0B460 110 1 2 2 2 1 CREATE VIEW YOURVIEW
例 6: メモリー使用量のモニター
以下の出力例のようなメモリー使用量を知りたい場合は db2pd -memblock コマンドが役立ちます。
All memory blocks in DBMS set.
Address PoolID PoolName BlockAge Size(Bytes) I LOC File
0x0780000000740068 62 resynch 2 112 1 1746 1583816485
0x0780000000725688 62 resynch 1 108864 1 127 1599127346
0x07800000001F4348 57 ostrack 6 5160048 1 3047 698130716
0x07800000001B5608 57 ostrack 5 240048 1 3034 698130716
0x07800000001A0068 57 ostrack 1 80 1 2970 698130716
0x07800000001A00E8 57 ostrack 2 240 1 2983 698130716
0x07800000001A0208 57 ostrack 3 80 1 2999 698130716
0x07800000001A0288 57 ostrack 4 80 1 3009 698130716
0x0780000000700068 70 apmh 1 360 1 1024 3878879032
0x07800000007001E8 70 apmh 2 48 1 914 1937674139
0x0780000000700248 70 apmh 3 32 1 1000 1937674139
...
この後に、ソートされた「プールごとの」出力が続きます。
Memory blocks sorted by size for ostrack pool:
PoolID PoolName TotalSize(Bytes) TotalCount LOC File
57 ostrack 5160048 1 3047 698130716
57 ostrack 240048 1 3034 698130716
57 ostrack 240 1 2983 698130716
57 ostrack 80 1 2999 698130716
57 ostrack 80 1 2970 698130716
57 ostrack 80 1 3009 698130716
Total size for ostrack pool: 5400576 bytes
Memory blocks sorted by size for apmh pool:
PoolID PoolName TotalSize(Bytes) TotalCount LOC File
70 apmh 40200 2 121 2986298236
70 apmh 10016 1 308 1586829889
70 apmh 6096 2 4014 1312473490
70 apmh 2516 1 294 1586829889
70 apmh 496 1 2192 1953793439
70 apmh 360 1 1024 3878879032
70 apmh 176 1 1608 1953793439
70 apmh 152 1 2623 1583816485
70 apmh 48 1 914 1937674139
70 apmh 32 1 1000 1937674139
Total size for apmh pool: 60092 bytes
...
出力の最終セクションでは、全メモリー・セットについて、メモリー・コンシューマーをソートします。
All memory consumers in DBMS memory set:
PoolID PoolName TotalSize(Bytes) %Bytes TotalCount %Count LOC File
57 ostrack 5160048 71.90 1 0.07 3047 698130716
50 sqlch 778496 10.85 1 0.07 202 2576467555
50 sqlch 271784 3.79 1 0.07 260 2576467555
57 ostrack 240048 3.34 1 0.07 3034 698130716
50 sqlch 144464 2.01 1 0.07 217 2576467555
62 resynch 108864 1.52 1 0.07 127 1599127346
72 eduah 108048 1.51 1 0.07 174 4210081592
69 krcbh 73640 1.03 5 0.36 547 4210081592
50 sqlch 43752 0.61 1 0.07 274 2576467555
70 apmh 40200 0.56 2 0.14 121 2986298236
69 krcbh 32992 0.46 1 0.07 838 698130716
50 sqlch 31000 0.43 31 2.20 633 3966224537
50 sqlch 25456 0.35 31 2.20 930 3966224537
52 kerh 15376 0.21 1 0.07 157 1193352763
50 sqlch 14697 0.20 1 0.07 345 2576467555
...
UNIX および Linux オペレーティング・システムでは、専用メモリーのメモリー・ブロックを報告することもできます。 例えば、db2pd -memb pid=159770 を実行すると、以下のような結果が生成されます。
All memory blocks in Private set.
Address PoolID PoolName BlockAge Size(Bytes) I LOC File
0x0000000110469068 88 private 1 2488 1 172 4283993058
0x0000000110469A48 88 private 2 1608 1 172 4283993058
0x000000011046A0A8 88 private 3 4928 1 172 4283993058
0x000000011046B408 88 private 4 7336 1 172 4283993058
0x000000011046D0C8 88 private 5 32 1 172 4283993058
0x000000011046D108 88 private 6 6728 1 172 4283993058
0x000000011046EB68 88 private 7 168 1 172 4283993058
0x000000011046EC28 88 private 8 24 1 172 4283993058
0x000000011046EC68 88 private 9 408 1 172 4283993058
0x000000011046EE28 88 private 10 1072 1 172 4283993058
0x000000011046F288 88 private 11 3464 1 172 4283993058
0x0000000110470028 88 private 12 80 1 172 4283993058
0x00000001104700A8 88 private 13 480 1 1534 862348285
0x00000001104702A8 88 private 14 480 1 1939 862348285
0x0000000110499FA8 88 private 80 65551 1 1779 4231792244
Total set size: 94847 bytes
Memory blocks sorted by size:
PoolID PoolName TotalSize(Bytes) TotalCount LOC File
88 private 65551 1 1779 4231792244
88 private 28336 12 172 4283993058
88 private 480 1 1939 862348285
88 private 480 1 1534 862348285
Total set size: 94847 bytes
例 7: どのアプリケーションが表スペースを消費しているかの確認
db2pd -tcbstats を使用すれば、表に対する挿入の数を識別することができます。 以下は、TEMP1 という名前のユーザー定義グローバル一時表のサンプル情報です。
TCB Table Information:
Address TbspaceID TableID PartID MasterTbs MasterTab TableName SchemaNm ObjClass DataSize LfSize LobSize XMLSize
0x0780000020B62AB0 3 2 n/a 3 2 TEMP1 SESSION Temp 966 0 0 0
TCB Table Stats:
Address TableName Scans UDI PgReorgs NoChgUpdts Reads FscrUpdates Inserts Updates Deletes OvFlReads OvFlCrtes
0x0780000020B62AB0 TEMP1 0 0 0 0 0 0 43968 0 0 0 0
その後、db2pd -tablespaces コマンドを使用することにより、表スペース 3 の情報を入手できます。 以下はその出力例です。
Tablespace 3 Configuration:
Address Type Content PageSz ExtentSz Auto Prefetch BufID BufIDDisk FSC NumCntrs MaxStripe LastConsecPg Name
0x0780000020B1B5A0 DMS UsrTmp 4096 32 Yes 32 1 1 On 1 0 31 TEMPSPACE2
Tablespace 3 Statistics:
Address TotalPgs UsablePgs UsedPgs PndFreePgs FreePgs HWM State MinRecTime NQuiescers
0x0780000020B1B5A0 5000 4960 1088 0 3872 1088 0x00000000 0 0
Tablespace 3 Autoresize Statistics:
Address AS AR InitSize IncSize IIP MaxSize LastResize LRF
0x0780000020B1B5A0 No No 0 0 No 0 None No
Containers:
Address ContainNum Type TotalPgs UseablePgs StripeSet Container
0x0780000020B1DCC0 0 File 5000 4960 0 /home/db2inst1/tempspace2a
FreePgs 列は、 スペースが埋まってきていることを示しています。フリー・ページの値が減るほど、使用可能なスペースは少なくなります。FreePgs の値と UsedPgs の値の和が UsablePgs の値と等しくなっていることにも注目してください。
それが分かれば、db2pd -db sample -dyn を実行することにより、表 TEMP1 を使用している動的 SQL ステートメントを識別できます。
Database Partition 0 -- Database SAMPLE -- Active -- Up 0 days 00:13:06
Dynamic Cache:
Current Memory Used 1022197
Total Heap Size 1271398
Cache Overflow Flag 0
Number of References 237
Number of Statement Inserts 32
Number of Statement Deletes 13
Number of Variation Inserts 21
Number of Statements 19
Dynamic SQL Statements:
Address AnchID StmtUID NumEnv NumVar NumRef NumExe Text
0x0000000220A08C40 78 1 2 2 3 2 declare global temporary table temp1 (c1 char(6)) not logged
0x0000000220A8D960 253 1 1 1 24 24 insert into session.temp1 values('TEST')
最後に、 db2pd -db sample -app を実行することによって上記の出力の情報をアプリケーション出力と付き合わせることにより、アプリケーションを識別することができます。
Applications:
Address AppHandl [nod-index] NumAgents CoorPid Status
0x0000000200661840 501 [000-00501] 1 11246 UOW-Waiting
C-AnchID C-StmtUID L-AnchID L-StmtUID Appid
0 0 253 1 *LOCAL.db2inst1.050202160426
動的 SQL ステートメントを識別したアンカー ID (AnchID) 値を使用して、 関連付けられているアプリケーションを識別することができます。この結果は、最後のアンカー ID (L-AnchID) 値 がアンカー ID (AnchID) 値と同じであることを示しています。 db2pd の 1 回の実行の結果が次回の db2pd の実行で使用されます。
Address AppHandl [nod-index] AgentPid Priority Type DBName
0x0000000200698080 501 [000-00501] 11246 0 Coord SAMPLE
State ClientPid Userid ClientNm Rowsread Rowswrtn LkTmOt
Inst-Active 26377 db2inst1 db2bp 22 9588 NotSet
db2pd -agent コマンドを実行した結果として得られる AppHandl と AgentPid の値を、db2pd -app コマンドを実行した結果として得られる AppHandl と CoorPid の対応値にマップできます。
内部一時表が表スペースを埋めている可能性があれば、これらのステップは若干異なります。ただし、この場合も db2pd -tcbstats を使用して、多数の挿入を持つ表を識別します。 以下は、暗黙的一時表のサンプル情報です。
TCB Table Information:
Address TbspaceID TableID PartID MasterTbs MasterTab TableName SchemaNm ObjClass DataSize ...
0x0780000020CC0D30 1 2 n/a 1 2 TEMP (00001,00002) <30> <JMC Temp 2470 ...
0x0780000020CC14B0 1 3 n/a 1 3 TEMP (00001,00003) <31> <JMC Temp 2367 ...
0x0780000020CC21B0 1 4 n/a 1 4 TEMP (00001,00004) <30> <JMC Temp 1872 ...
TCB Table Stats:
Address TableName Scans UDI PgReorgs NoChgUpdts Reads FscrUpdates Inserts ...
0x0780000020CC0D30 TEMP (00001,00002) 0 0 0 0 0 0 43219 ...
0x0780000020CC14B0 TEMP (00001,00003) 0 0 0 0 0 0 42485 ...
0x0780000020CC21B0 TEMP (00001,00004) 0 0 0 0 0 0 0 ...
この例では、命名規則 TEMP (TbspaceID, TableID) を持つ表に多数の挿入があります。 これらは暗黙的一時表です。 SchemaNm 列の値には、AppHandl の値が SchemaNm の値と連結するという命名規則があります。これにより、操作を実行しているアプリケーションを識別できます。
その後、その情報を db2pd -tablespaces からの出力にマップし、 表スペース 1 で使用されるスペースを確認できます。 以下の出力内の表スペース統計で、UsedPgs の値と UsablePgs の値の間の関係に注目してください。
Tablespace Configuration:
Address Id Type Content PageSz ExtentSz Auto Prefetch BufID BufIDDisk FSC NumCntrs MaxStripe LastConsecPg Name
0x07800000203FB5A0 1 SMS SysTmp 4096 32 Yes 320 1 1 On 10 0 31 TEMPSPACE1
Tablespace Statistics:
Address Id TotalPgs UsablePgs UsedPgs PndFreePgs FreePgs HWM State MinRecTime NQuiescers
0x07800000203FB5A0 1 6516 6516 6516 0 0 0 0x00000000 0 0
Tablespace Autoresize Statistics:
Address Id AS AR InitSize IncSize IIP MaxSize LastResize LRF
0x07800000203FB5A0 1 No No 0 0 No 0 None No
Containers:
...
その後、コマンド db2pd -app を使用して、アプリケーション・ハンドル 30 および 31 を識別することができます (これらは -tcbstats 出力で確認されたものです)。
Applications:
Address AppHandl [nod-index] NumAgents CoorPid Status C-AnchID C-StmtUID L-AnchID L-StmtUID Appid
0x07800000006FB880 31 [000-00031] 1 4784182 UOW-Waiting 0 0 107 1 *LOCAL.db2inst1.051215214142
0x07800000006F9CE0 30 [000-00030] 1 8966270 UOW-Executing 107 1 107 1 *LOCAL.db2inst1.051215214013
最後に、上記の出力の情報を、db2pd -dyn コマンドを実行することによって得られた動的 SQL 出力と付き合わせます。
Dynamic SQL Statements:
Address AnchID StmtUID NumEnv NumVar NumRef NumExe Text
0x0780000020B296C0 107 1 1 1 43 43 select c1, c2 from test group by c1,c2
例 8: リカバリーのモニター
コマンド db2pd -recovery を実行した場合、出力は、以下の出力例で示されているように、リカバリーの進行状況を確認するために使用できるいくつかのカウンターを示します。 「Current Log (現在のログ))」および「Current LSN (現在の LSN)」の値はログの位置を示します。「CompletedWork」は、 完了済みのバイト数です。
Recovery:
Recovery Status 0x00000401
Current Log S0000005.LOG
Current LSN 000002551BEA
Job Type ROLLFORWARD RECOVERY
Job ID 7
Job Start Time (1107380474) Wed Feb 2 16:41:14 2005
Job Description Database Rollforward Recovery
Invoker Type User
Total Phases 2
Current Phase 1
Progress:
Address PhaseNum Description StartTime CompletedWork TotalWork
0x0000000200667160 1 Forward Wed Feb 2 16:41:14 2005 2268098 bytes Unknown
0x0000000200667258 2 Backward NotStarted 0 bytes Unknown
例 9: トランザクションによって使用されているリソースの量の確認
コマンド db2pd -transactions を実行した場合、以下の出力例のように、出力は、ロックの数、最初のログ・シーケンス番号 (LSN)、最後の LSN、使用ログ・スペース、および予約済みスペースに関する情報を提供します。 この情報はトランザクションの動作を理解するうえで役立ちます。
Transactions:
Address AppHandl [nod-index] TranHdl Locks State Tflag
0x000000022026D980 797 [000-00797] 2 108 WRITE 0x00000000
0x000000022026E600 806 [000-00806] 3 157 WRITE 0x00000000
0x000000022026F280 807 [000-00807] 4 90 WRITE 0x00000000
Tflag2 Firstlsn Lastlsn LogSpace SpaceReserved
0x00000000 0x000001072262 0x0000010B2C8C 4518 95450
0x00000000 0x000001057574 0x0000010B3340 6576 139670
0x00000000 0x00000107CF0C 0x0000010B2FDE 3762 79266
TID AxRegCnt GXID
0x000000000451 1 0
0x0000000003E0 1 0
0x000000000472 1 0
例 10: ログの使用状況のモニター
db2pd -logs コマンドは、データベースのログ使用状況をモニターするのに役立ちます。 「Pages Written (書き込み済みページ数)」値を使用することにより、以下の出力例で示されているように、ログの使用量が増加しているかどうかを判別できます。
Logs:
Current Log Number 0
Pages Written 0
Cur Commit Disk Log Reads 0
Cur Commit Total Log Reads 0
Method 1 Archive Status n/a
Method 1 Next Log to Archive n/a
Method 1 First Failure n/a
Method 2 Archive Status n/a
Method 2 Next Log to Archive n/a
Method 2 First Failure n/a
Log Chain ID 0
Current LSN 0x0000000001F40010
Address StartLSN State Size Pages Filename
0x00002B75E9E3D2D0 0000000001F40010 0x00000000 1000 1000 S0000000.LOG
0x00002B75E9E53D70 0000000002328010 0x00000000 1000 1000 S0000001.LOG
0x00002B75E9E545D0 0000000002710010 0x00000000 1000 1000 S0000002.LOG
例 11: SYSPLEX リストの表示
以下の出力例を示す db2pd -sysplex コマンドを使用しない場合、SYSPLEX リストを報告する他の唯一の方法は、DB2 トレースを介する方法です。
Sysplex List:
Alias: HOST
Location Name: HOST1
Count: 1
IP Address Port Priority Connections Status PRDID
1.2.34.56 400 1 0 0
例 12: スタック・トレースの生成
Windows オペレーティング・システムの場合は db2pd -stack all コマンド (UNIX オペレーティング・システムの場合は -stack コマンド) を使用すれば、 現在のデータベース・パーティションにあるすべてのプロセスのスタック・トレースを生成できます。 プロセスやスレッドがループ状態または停止状態にあると疑われる場合には、このコマンドを反復して使用できます。
db2pd -stack eduid コマンドを実行して、以下の例のように特定のエンジン・ディスパッチ可能単位 (EDU) の現在の呼び出しスタックを取得できます。
Attempting to dump stack trace for eduid 137.
See current DIAGPATH for trapfile.
DB2 プロセスに対するすべての呼び出しスタックを確認するには、db2pd -stack all コマンドを使用します。例えば、Windows オペレーティング・システムであれば、以下のようにします。
Attempting to dump all stack traces for instance.
See current DIAGPATH for trapfiles.
複数の物理ノードのあるパーティション・データベース環境では、コマンド db2_all "; db2pd -stack all" を使用することにより、すべてのパーティションから情報を取得できます。 しかし、同じマシン上の複数の論理パーティションだけから成る環境では、db2pd -alldbp -stacks を使用した方が速く動作します。
dumpdir パラメーターを指定して、db2sysc プロセスに対する db2pdb -stacks コマンドの出力を特定のディレクトリー・パスにリダイレクトすることもできます。timeout パラメーターを使用すると、特定の期間のみ出力をリダイレクトすることができます。 例えば、db2sysc プロセスのすべての EDU に関するスタック・トレースの出力を /home/waleed/mydir に 30 秒間リダイレクトするには、以下のコマンドを発行してください。
db2pd -alldbp -stack all dumpdir=/home/waleed/mydir timeout=30
例 13: データベース・パーティションのメモリー統計の表示
db2pd -dbptnmem コマンドは、DB2 サーバーが現在使用しているメモリーの量を表示します。また、サーバーのどの領域がそのメモリーを使用しているかの概要を表示します。
AIX® マシン上での db2pd -dbptnmem の実行による出力例を以下に示します。
Database Partition Memory Controller Statistics
Controller Automatic: Y
Memory Limit: 122931408 KB
Current usage: 651008 KB
HWM usage: 651008 KB
Cached memory: 231296 KB
AIX オペレーティング・システム上での db2pd -dbptnmem の実行による出力例の続きを以下に示します。
Individual Memory Consumers:
Name Mem Used (KB) HWM Used (KB) Cached (KB)
===========================================================
APPL-DBONE 160000 160000 159616
DBMS-name 38528 38528 3776
FMP_RESOURCES 22528 22528 0
PRIVATE 13120 13120 740
FCM_RESOURCES 10048 10048 0
LCL-p606416 128 128 0
DB-DBONE 406656 406656 67200
例 14: 索引再編成の進行状況のモニター
Index Reorg Stats:
Retrieval Time: 02/08/2010 23:04:21
TbspaceID: -6 TableID: -32768
Schema: ZORAN TableName: BIGRPT
Access: Allow none
Status: Completed
Start Time: 02/08/2010 23:03:55 End Time: 02/08/2010 23:04:04
Total Duration: 00:00:08
Prev Index Duration: -
Cur Index Start: -
Cur Index: 0 Max Index: 2 Index ID: 0
Cur Phase: 0 ( - ) Max Phase: 0
Cur Count: 0 Max Count: 0
Total Row Count: 750000
Retrieval Time: 02/08/2010 23:04:21
TbspaceID: 2 TableID: 5
Schema: ZORAN TableName: BIGRPT
PartitionID: 0 MaxPartition: 2
Access: Allow none
Status: Completed
Start Time: 02/08/2010 23:04:04 End Time: 02/08/2010 23:04:08
Total Duration: 00:00:04
Prev Index Duration: -
Cur Index Start: -
Cur Index: 0 Max Index: 2 Index ID: 0
Cur Phase: 0 ( - ) Max Phase: 0
Cur Count: 0 Max Count: 0
Total Row Count: 375000
Retrieval Time: 02/08/2010 23:04:21
TbspaceID: 2 TableID: 6
Schema: ZORAN TableName: BIGRPT
PartitionID: 1 MaxPartition: 2
Access: Allow none
Status: Completed
Start Time: 02/08/2010 23:04:08 End Time: 02/08/2010 23:04:12
Total Duration: 00:00:04
Prev Index Duration: -
Cur Index Start: -
Cur Index: 0 Max Index: 2 Index ID: 0
Cur Phase: 0 ( - ) Max Phase: 0
Cur Count: 0 Max Count: 0
Total Row Count: 375000
例 15: プロセッサー時間の消費別の上位 EDU の表示と EDU スタック情報の表示
-edus パラメーター・オプションを指定して db2pd コマンドを発行すると、すべてのエンジン・ディスパッチ可能単位 (EDU) が出力中にリストされます。EDU の出力を、インスタンス・レベルやメンバー・レベルなど、細分度のレベルを指定して戻すことができます。Linux および UNIX オペレーティング・システムに限り、interval パラメーター・サブオプションを指定して、すべての EDU のスナップショットを指定した間隔だけ空けて 2 つ取ることもできます。interval パラメーターを指定すると、出力中に 2 つの列が追加され、この間隔の前後のプロセッサー・ユーザー時間の差分 (USR DELTA 列) と、プロセッサー・システム時間の差分 (SYS DELTA 列) が示されます。
以下の例では、5 秒間のプロセッサー・ユーザー時間の差分とプロセッサー・システム時間の差分が示されます。
$ db2pd -edus interval=5
Database Partition 0 -- Active -- Up 0 days 00:53:29 -- Date 06/04/2010 03:34:59
List of all EDUs for database partition 0
db2sysc PID: 1249522
db2wdog PID: 2068678
EDU ID TID Kernel TID EDU Name USR SYS USR DELTA SYS DELTA
=============================================================================================================================
6957 6957 13889683 db2agntdp (SAMPLE ) 0 58.238506 0.820466 1.160726 0.014721
6700 6700 11542589 db2agent (SAMPLE) 0 52.856696 0.754420 1.114821 0.015007
5675 5675 4559055 db2agntdp (SAMPLE ) 0 60.386779 0.854234 0.609233 0.014304
3088 3088 13951225 db2agntdp (SAMPLE ) 0 80.073489 2.249843 0.499766 0.006247
3615 3615 2887875 db2loggw (SAMPLE) 0 0.939891 0.410493 0.011694 0.004204
4900 4900 6344925 db2pfchr (SAMPLE) 0 1.748413 0.014378 0.014343 0.000103
7986 7986 13701145 db2agntdp (SAMPLE ) 0 1.410225 0.025900 0.003636 0.000074
2571 2571 8503329 db2ipccm 0 0.251349 0.083787 0.002551 0.000857
7729 7729 14168193 db2agntdp (SAMPLE ) 0 1.717323 0.029477 0.000998 0.000038
7472 7472 11853991 db2agnta (SAMPLE) 0 1.860115 0.032926 0.000860 0.000012
3358 3358 2347127 db2loggr (SAMPLE) 0 0.151042 0.184726 0.000387 0.000458
515 515 13820091 db2aiothr 0 0.405538 0.312007 0.000189 0.000178
7215 7215 2539753 db2agntdp (SAMPLE ) 0 1.165350 0.019466 0.000291 0.000008
6185 6185 2322517 db2wlmd (SAMPLE) 0 0.061674 0.034093 0.000169 0.000100
6442 6442 2756793 db2evmli (DB2DETAILDEADLOCK) 0 0.072142 0.052436 0.000092 0.000063
4129 4129 15900799 db2glock (SAMPLE) 0 0.013239 0.000741 0.000064 0.000001
2 2 11739383 db2alarm 0 0.036904 0.028367 0.000009 0.000009
4386 4386 13361367 db2dlock (SAMPLE) 0 0.015653 0.001281 0.000014 0.000003
1029 1029 15040579 db2fcms 0 0.041929 0.016598 0.000010 0.000004
5414 5414 14471309 db2pfchr (SAMPLE) 0 0.000093 0.000002 0.000000 0.000000
258 258 13656311 db2sysc 0 8.369967 0.263539 0.000000 0.000000
5157 5157 7934145 db2pfchr (SAMPLE) 0 0.027598 0.000177 0.000000 0.000000
1543 1543 2670647 db2fcmr 0 0.004191 0.000079 0.000000 0.000000
1286 1286 8417339 db2extev 0 0.000312 0.000043 0.000000 0.000000
2314 2314 14360813 db2licc 0 0.000371 0.000051 0.000000 0.000000
5928 5928 3137537 db2taskd (SAMPLE) 0 0.004903 0.000572 0.000000 0.000000
3872 3872 2310357 db2lfr (SAMPLE) 0 0.000126 0.000007 0.000000 0.000000
4643 4643 11694287 db2pclnr (SAMPLE) 0 0.000094 0.000002 0.000000 0.000000
1800 1800 5800175 db2extev 0 0.001212 0.002137 0.000000 0.000000
772 772 7925817 db2thcln 0 0.000429 0.000072 0.000000 0.000000
2057 2057 6868993 db2pdbc 0 0.002423 0.001603 0.000000 0.000000
2828 2828 10866809 db2resync 0 0.016764 0.003098 0.000000 0.000000
プロセッサー時間を最も消費している EDU に関する情報のみに限定して、戻される出力の量を少なくするには、さらに top パラメーター・オプションを組み込むことができます。以下の例では、5 秒の間隔での上位 5 つの EDU のみが戻されます。スタック情報も戻され、DUMPDIR で指定されたディレクトリー・パス (デフォルトは diagpath) 内に別個に保管されることになります。
$ db2pd -edus interval=5 top=5 stacks
Database Partition 0 -- Active -- Up 0 days 00:54:00 -- Date 06/04/2010 03:35:30
List of all EDUs for database partition 0
db2sysc PID: 1249522
db2wdog PID: 2068678
EDU ID TID Kernel TID EDU Name USR SYS USR DELTA SYS DELTA
===============================================================================================================
3358 3358 2347127 db2loggr (SAMPLE) 0 0.154906 0.189223 0.001087 0.001363
3615 3615 2887875 db2loggw (SAMPLE) 0 0.962744 0.419617 0.001779 0.000481
515 515 13820091 db2aiothr 0 0.408039 0.314045 0.000658 0.000543
258 258 13656311 db2sysc 0 8.371388 0.264812 0.000653 0.000474
6700 6700 11542589 db2agent (SAMPLE) 0 54.814420 0.783323 0.000455 0.000310
$ ls -ltr
total 552
drwxrwxr-t 2 vbmithun build 256 05-31 09:59 events/
drwxrwxr-t 2 vbmithun build 256 06-04 03:17 stmmlog/
-rw-r--r-- 1 vbmithun build 46413 06-04 03:35 1249522.3358.000.stack.txt
-rw-r--r-- 1 vbmithun build 22819 06-04 03:35 1249522.3615.000.stack.txt
-rw-r--r-- 1 vbmithun build 20387 06-04 03:35 1249522.515.000.stack.txt
-rw-r--r-- 1 vbmithun build 50426 06-04 03:35 1249522.258.000.stack.txt
-rw-r--r-- 1 vbmithun build 314596 06-04 03:35 1249522.6700.000.stack.txt
-rw-r--r-- 1 vbmithun build 94913 06-04 03:35 1249522.000.processObj.txt
例 16: エージェント・イベント・メトリックの表示
db2pd コマンドは、エージェントのイベント・メトリックを返す機能をサポートします。 特定の期間にエージェントが状態を変更したかどうかを判断する必要がある場合は、event オプションを -agents パラメーターと共に使用します。 返される AGENT_STATE_LAST_UPDATE_TIME(Tick Value) 列は、エージェントによって処理されているイベントが最後に変更された時刻を示します。 AGENT_STATE_LAST_UPDATE_TIME(Tick Value) について以前取得した値と見比べて、エージェントが新しいタスクに移動したか、または長時間にわたって同じタスクを継続して処理しているか判別できます。
db2pd -agents event
Database Partition 0 -- Active -- Up 0 days 03:18:52 -- Date 06/27/2011 11:47:10
Agents:
Current agents: 12
Idle agents: 0
Active coord agents: 10
Active agents total: 10
Pooled coord agents: 2
Pooled agents total: 2
AGENT_STATE_LAST_UPDATE_TIME(Tick Value) EVENT_STATE EVENT_TYPE EVENT_OBJECT EVENT_OBJECT_NAME
2011-06-27-14.44.38.859785(5622972377924968075) IDLE WAIT REQUEST n/a