DB2 事件監控器用於記錄資料庫關鍵生命週期事件(連線、鎖死、SQL 執行、交易完成等),是效能診斷與審計的核心工具。本文彙總事件類型定義、控制命令與操作範例。
| 類型 | 觸發時機 | 典型用途 |
|---|---|---|
| DATABASE | 最後一個應用斷開資料庫時 | 資料庫級負載總覽 |
| TABLES | 最後應用斷開時,針對每個活躍表 | 表級讀寫統計、膨脹分析 |
| DEADLOCKS | 每次死鎖發生時 | 死鎖鏈分析、索引/隔離級優化 |
| TABLESPACES | 最後應用斷開時,針對每個活躍表空間 | 空間使用率、I/O 熱點 |
| BUFFERPOOLS | 最後應用斷開時 | 命中率、預取效率評估 |
| CONNECTIONS | 每次應用斷開連線時 | 連線數趨勢、應用行為審計 |
| STATEMENTS | 每條 SQL 執行時 (動態/靜態) | 高耗 SQL 識別、執行計畫變更追蹤 |
| TRANSACTIONS | 每次交易完成 (COMMIT/ROLLBACK) | 交易長度、鎖等待、回滾率分析 |
假設監控器名稱為 evmon1:
SET EVENT MONITOR evmon1 STATE = 1
SET EVENT MONITOR evmon1 STATE = 0
FLUSH EVENT MONITOR evmon1 BUFFER
DROP EVENT MONITOR evmon1
-- 死鎖事件監控
CREATE EVENT MONITOR evmon_deadlock FOR DEADLOCKS
WRITE TO TABLE
DEADLOCK (TABLE evmon_deadlock_dl),
DEADLOCKDETAILS (TABLE evmon_deadlock_dtl),
DEADLOCKPARTICIPANTS (TABLE evmon_deadlock_part)
MANUALSTART;
-- SQL 語句監控 (高頻系統建議搭配 WLM 閾值過濾)
CREATE EVENT MONITOR evmon_stmt FOR STATEMENTS
WRITE TO TABLE
STMT (TABLE evmon_stmt_data)
MANUALSTART;
WRITE TO TABLE 需預先建立目標表 (可用 db2evtbl 工具生成 DDL)。FLUSH EVENT MONITOR 避免記憶體緩衝區溢位。DBADM 或 SQLADM,運行時僅需 MONITOR 權限。