PART 02 / 06
•
2026.05.28
•
12 min read
PART 02 — db2pd コマンドによる取得とセクション定義
DB2 の内部状態をリアルタイムに診断できる db2pd コマンドの主要オプションと、各出力セクションの定義・読み方・Oracle AWR 対応を体系化する。
db2pd の概要と特徴
db2pd は DB2 エンジンのメモリ構造を直接参照するオンライン診断ツールです。スナップショット機能とは独立して動作するため、モニタスイッチのオン/オフに関係なく情報を取得できる点が大きな特徴です。
主な特徴
- DB2 エンジンが稼働中であれば、任意のタイミングで取得可能
- ロック競合・デッドロック・スローSQL の即時診断に特化
- 出力はテキスト形式(ファイルへのリダイレクトが可能)
- エンジン停止後の一部診断(
-osscollect など)も可能
- 複数のオプションを組み合わせて一括取得できる
実行権限
SYSADM / SYSCTRL / SYSMAINT いずれかの権限が必要です。OS の DB2 管理グループ(db2iadm など)に所属するユーザでも実行できます。
基本構文
db2pd -db <データベース名> [オプション...] [-file <出力ファイル>]
-db オプションで対象データベースを指定します。省略すると全データベースが対象になります。
主要オプション一覧
| オプション |
取得情報 |
Oracle AWR 対応セクション |
-locks |
ロック情報(保有・待機) |
Enqueue Activity / Wait Statistics |
-wlocks |
ロック待機中のアプリケーション |
Top 5 Wait Events(DB Lock) |
-transactions |
トランザクション情報 |
Instance Activity Statistics |
-agents |
エージェント(接続セッション)情報 |
Report Summary(接続数) |
-bufferpools |
バッファプール統計 |
Buffer Pool Statistics |
-dynamic |
動的 SQL キャッシュ統計 |
SQL Statistics(Top SQL) |
-static |
静的 SQL(パッケージ)キャッシュ |
SQL Statistics |
-logs |
ログ統計(ログ使用量・書き込み) |
Instance Activity(redo) |
-mempools |
メモリプール使用状況 |
Memory Statistics / SGA |
-memblocks |
メモリブロック詳細 |
Memory Statistics(詳細) |
-tablespaces |
テーブルスペース情報 |
IO Stats(Tablespace) |
-hadr |
HADR(高可用性)状態 |
(DB2 固有) |
-applications |
接続アプリケーション詳細 |
Report Summary(アプリ接続) |
-tcbstats |
テーブル・インデックスのアクセス統計 |
Segment Statistics |
セクション定義表
db2pd の主要な出力セクションについて、各項目の意味・読み方・異常値の目安を以下に定義します。
① Locks(-locks)
| 項目 |
何を表すか |
読み方・異常値の目安 |
| HoldCount |
ロックを保有しているエージェント数 |
大量保有時はコミット漏れ・長時間トランザクションを疑う |
| WaitCount |
ロック待機しているエージェント数 |
1以上で競合発生中。増加傾向はロック設計見直しのサイン |
| LockList |
ロックの種類(S/X/U/IS/IX/SIX) |
X ロックの長時間保有・IS と X の競合は要注意 |
| Deadlock |
デッドロック発生フラグ |
1でデッドロック発生。Event Monitor と組み合わせて詳細確認 |
| LockEscalation |
ロックエスカレーション回数 |
頻発時は MAXLOCKS / LOCKLIST パラメータの見直しを検討 |
② Buffer Pools(-bufferpools)
| 項目 |
何を表すか |
読み方・異常値の目安 |
| BpName |
バッファプール名 |
IBMDEFAULTBP 以外に複数存在する場合は個別確認 |
| HitRatio |
バッファプールヒット率(論理読み込みに対する物理読み込みの割合) |
95%以上が目安。90%未満でバッファプールサイズ増加を検討 |
| DataHitRatio |
データページのヒット率 |
Oracle の Buffer Cache Hit Ratio に相当。90%未満は要注意 |
| IdxHitRatio |
インデックスページのヒット率 |
通常はデータより高くなる。低下時はインデックスサイズ確認 |
| PhysicalReads |
物理読み込み回数(累積) |
急増時は SQL の全表スキャン増加・バッファ不足を疑う |
| AsynchReads |
非同期(プリフェッチ)読み込み回数 |
PhysicalReads の大半を占めるのが理想。低い場合はプリフェッチ設定を確認 |
③ Dynamic SQL(-dynamic)
| 項目 |
何を表すか |
読み方・異常値の目安 |
| NumExecutions |
SQL の実行回数(キャッシュ内累積) |
頻繁に実行される SQL を特定するための基本指標 |
| TotalExecTime |
累積実行時間(ミリ秒) |
TotalExecTime / NumExecutions で平均応答時間を算出 |
| TotalSortTime |
ソートに費やした累積時間 |
高い場合はソートキー・インデックス・SORTHEAP の見直しを検討 |
| TotalUserCpuTime |
ユーザー CPU 消費時間(累積) |
CPU 負荷の高い SQL 特定に使用。Oracle の CPU Time Top SQL に相当 |
| NumSortsOverflow |
ソートがオーバーフローした回数(一時領域使用) |
1以上で SORTHEAP 不足。増加傾向は性能劣化の予兆 |
| StatementText |
SQL テキスト(先頭 256 バイト) |
原因 SQL の特定に使用。PKGID / SECTNO と組み合わせて完全テキストを確認 |
④ Logs(-logs)
| 項目 |
何を表すか |
読み方・異常値の目安 |
| Current Log |
現在使用中のログファイル番号 |
急速に増加している場合は大量更新トランザクションを疑う |
| LogsAvailable |
残り使用可能なログ数 |
0 に近づくと LOGFULL エラーが発生する。最低でも 10 以上の余裕を確保 |
| LogUsed |
現在使用中のログ容量(バイト) |
全ログ容量の 80% を超えたら増設を検討 |
| DirtyPages |
更新されたがまだログに書き込まれていないページ数 |
増大時はコミット遅延・チェックポイント間隔の見直しを行う |
⑤ Memory Pools(-mempools)
| 項目 |
何を表すか |
読み方・異常値の目安 |
| PoolName |
メモリプール名(DBMS / DB / APP / OTHER) |
用途別にメモリ使用量を把握する |
| MemSize |
現在の使用サイズ(KB) |
Oracle の SGA コンポーネントに相当 |
| MaxMem |
最大使用サイズ(KB) |
MaxMem が MemSize に近い場合は上限設定の見直しを検討 |
| Watermark |
ハイウォーターマーク(ピーク使用量) |
設定上限の 90% を超えている場合は増設を検討 |
⑥ Tablespaces(-tablespaces)
| 項目 |
何を表すか |
読み方・異常値の目安 |
| TbspName |
テーブルスペース名 |
SYSCATSPACE / USERSPACE / TEMPSPACE の3種類が基本 |
| TotalPages |
テーブルスペースの総ページ数 |
UsablePages との差が断片化・フリースペースを示す |
| UsedPages |
使用中ページ数 |
TotalPages の 90% 超で残容量不足。REBALANCE / EXTEND を検討 |
| State |
テーブルスペースの状態(NORMAL / BACKUP_PENDING など) |
NORMAL 以外は即時確認。BACKUP_PENDING はバックアップ実行が必要 |
取得コマンド例
ロック競合の即時確認
# ロック待機情報のみを抜き出す
db2pd -db SAMPLE -wlocks
# 保有ロックも含めた全ロック情報
db2pd -db SAMPLE -locks detail
バッファプール統計の取得
db2pd -db SAMPLE -bufferpools
スロー SQL の特定
# 動的SQLキャッシュを取得(実行時間でソートして確認)
db2pd -db SAMPLE -dynamic
一括診断情報の取得(ファイル出力)
# よく使う診断情報を一括取得してファイルへ保存
db2pd -db SAMPLE -locks -bufferpools -dynamic -logs -mempools -tablespaces \
-file /tmp/db2pd_report_$(date +%Y%m%d_%H%M%S).txt
全データベースの状態確認
# データベースを指定しない場合はインスタンス全体が対象
db2pd -alldbs -agents
注意事項
- 累積値: db2pd の多くの統計は DB2 インスタンス起動時(または RESET MONITOR 実行時)からの累積値です。差分を取るには2時点で取得して比較する必要があります。
- メモリ直接参照: db2pd はエンジンのメモリを直接参照するため、稀に DB2 の内部処理と競合して不完全な情報が返ることがあります。重要な診断では複数回取得して確認してください。
- Dynamic SQL キャッシュ:
-dynamic で取得できる情報はキャッシュに残っている SQL のみです。キャッシュが溢れると古い情報は失われます。PKGCACHESZ パラメータでキャッシュサイズを調整できます。
- HADRスタンバイ: HADR スタンバイ機では一部のオプション(-transactions など)が動作しない場合があります。