SNAPSHOT 監控。Package ID 與 Section ID,不直接記錄 SQL 文本。透過系統目錄表 SYSCAT.STATEMENTS 以 Package ID + Section ID 反查原始 SQL。
CREATE PROCEDURE sales_status (IN quota INTEGER)
DYNAMIC RESULT SETS 2
LANGUAGE SQL
BEGIN
DECLARE SQLSTATE CHAR(5);
DECLARE rs CURSOR WITH RETURN FOR
SELECT sales_person, SUM(sales) AS total_sales
FROM sales
GROUP BY sales_person
HAVING SUM(sales) > quota;
OPEN rs;
INSERT INTO tt1 VALUES (1),(2),(3),(4),(5);
END @
db2 create event monitor ev2 for statements write to file 'D:\tmp'
db2 set event monitor ev2 state 1
db2 "call sales_status(10)"
db2 flush event monitor ev2
db2evmon -db sample -evm ev2 > 1.out
輸出中會出現多筆 Statement Event,重點欄位:
Type:StaticOperation:Execute / CloseSection:區段號Package:套件名稱(如 P2323139)Rows read / written:讀寫列數範例中:
SELECT STMTNO, SECTNO, TEXT
FROM SYSCAT.STATEMENTS
WHERE PKGNAME = 'P2323139';
結果範例:
| STMTNO | SECTNO | TEXT |
|---|---|---|
| 8 | 1 | DECLARE RS CURSOR ... HAVING SUM(SALES) > :HV00008 |
| 17 | 2 | INSERT INTO TT1 VALUES (1),(2),(3),(4),(5) |
SYSCAT.STATEMENTS 取得 SQL 文本。