设置快照监控:
db2 update dbm cfg using dft_mon_stmt on(整个实例中有效)
db2 get monitor switches(当前会话有效)
db2 update monitor switches using bufferpool on lock on sort on statement on table on uow on
查询:
db2 get snapshot for tables on sample
db2 get snapshot for locks on sample
db2 get snapshot for locks for application agentid
db2 get snapshot for all on sample
db2 get snapshot for dynamic sql on sample
db2 get snapshot for locks on sample
快照表函数
db2 select * from table(SNAPSHOT_lock('zmdb',-1)) as t > c:snap
SNAPSHOT_DBM 数据库管理器信息。
SNAPSHOT_DATABASE 数据库信息。只有当至少有一个应用程序连接至数据库时,才会返回信息。
SNAPSHOT_APPL 连接至分区上数据库的应用程序上有关锁等待的应用程序信息。
这包括累积计数器、状态信息和最近执行的 SQL 语句(如果设置了语句监视器开关)。
SNAPSHOT_APPL_INFO 每个连接至分区上数据库的应用程序的常规应用程序标识信息。
SNAPSHOT_LOCKWAIT 有关锁等待连接至分区上数据库的应用程序的应用程序信息。
SNAPSHOT_STATEMENT 有关连接至分区上数据库的应用程序的语句的应用程序信息。
这包括最近执行的 SQL 语句(如果设置了语句监视器开关)。
SNAPSHOT_TABLE 连接至数据库的应用程序所访问的每个表的表活动信息。需要表监视器开关。
SNAPSHOT_LOCK 数据库级别上的锁信息,
以及每个连接至数据库的应用程序在应用程序级别上的锁信息。需要锁监视器开关。
SNAPSHOT_TBS 数据库级别上的表空间活动信息、
每个连接至数据库的应用程序在应用程序级别上的表空间活动信息
以及连接至数据库的应用程序已访问过的每个表空间在表空间级别上的表空间活动信息。
SNAPSHOT_BP 指定数据库的缓冲池活动计数器。需要缓冲池监视器开关。
SNAPSHOT_DYN_SQL查询动态sql语句
示例:
1)db2 update monitor switches using locks on
2)打开一个clp执行语句:
db2 connect to sample
db2 +c update staff set comm = 0 where id = 280
3)打开另外一个窗口执行:
db2pd -db sample -agents
得到apphandle值
4)db2 get snapshot for locks for application agentid apphandle_value
得到相关表
或者:db2 select * from table(snapshot_lock('SAMPLE',-1)) as locktable
二、事件监控
--死锁监控
create event monitor deadlock_db
for deadlocks
write to file 'c:deadlock_db'
maxfiles 1
maxfilesize none
--语句监控(写到文件)
create event monitor sql_db
for statements
write to file 'c:sql_db'
maxfiles 1
maxfilesize none
db2 "create event monitor m_sql for statements write to file '/zcmdata/monitor/m_sql' maxfiles 1 maxfilesize none "
db2 "create event monitor m_t for statements write to file '/zcmdata/monitor/m_t' maxfiles 1 maxfilesize none "
--语句监控(写到表)
create event monitor sql_db
for statements
write to table
stmt(table sql.stmttab)
includes(rows_read,rows_writen_stmt_text)
--清空事件监视器
db2 flush event monitor eventmonitorname
--打开或关闭监视器
db2 set event monitor eventmonitorname state 0/1
db2 "set event monitor m_sql state 0"
db2 "set event monitor m_sql state 1"
db2 "set event monitor m_t state 0"
db2 "set event monitor m_t state 1"
0 关闭监视器
1 打开监视器
--查看监视器状态
select event_mon_state('envetmonitorname') from sysibm.sysdummy1
--查看事件跟踪文件
db2evmon -path c:sql_db > c:sql_db.txt
db2evmon -path /zcmdata/monitor/m_sql > /zcmdata/monitor/m_sql.txt
db2evmon -path /zcmdata/monitor/m_t > /zcmdata/monitor/m_t.txt