DB2監控


  設置快照監控:
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 db2inst1.stmttab)
includes(rows_read,rows_writen_stmt_text)

--清空事件監視器
db2 flush event monitor eventmonitorname
--打開或關閉監視器
db2 set event monitor eventmonitorname state 0/1
db2 "set event monitorsql_trace state 0"
db2 "set event monitorsql_trace state 1"
db2 "set event monitor deadlocks_trace state 0"
db2 "set event monitor deadlocks_trace state 1"
0 關閉監視器
1 打開監視器

--查看監視器狀態
select event_mon_state('envetmonitorname') from sysibm.sysdummy1
select evmonname, event_mon_state(evmonname) from syscat.eventmonitors
    

            select * from syscat.EVENTTABLES;
            select * from syscat.eventmonitors;
            select * from syscat.EVENTS;
 
--查看事件跟蹤文件
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

--創建建監控寫到表
db2 "create event monitor sql_trace for statements write to table"
db2 "create event monitordeadlocks_trace for deadlocks write to table"
db2 "create event monitor table__trace for tables  write to table"
 CREATE EVENT MONITOR dlmon FOR DEADLOCKS WITH DETAILS WRITE TO TABLE
db2 create event monitor db2detaildeadlock for deadlocks with details write to file 'C:\DB2\NODE0000\SQL00002\DB2EVENT\db2detaildeadlock' autostart on dbpartitionnum 0 maxfiles 20 maxfilesize 512 buffersize 17 blocked append
--查看監控表
db2 "create event monitor sql_trace for statements write to table"




例子:
-----------------------
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
----------------
--查看監視器狀態
select event_mon_state('envetmonitorname') from sysibm.sysdummy1
select evmonname, event_mon_state(evmonname) from syscat.eventmonitors
----查看監視器寫入的表和目標文件
select * from syscat.EVENTTABLES;
select * from syscat.eventmonitors;
select * from syscat.EVENTS;
---
db2 "SET EVENT MONITOR dlmon state 0"
db2 "drop EVENT MONITOR dlmon"
db2 "CREATE EVENT MONITOR dlmon FOR DEADLOCKS WITH DETAILS WRITE TO TABLE"
db2 "SET EVENT MONITOR dlmon state 1"

--死鎖 
su - db2inst1
mkdir /home/db2inst1/event_monitor_deadlock
db2 "SET EVENT MONITOR dlmonfile state 0"
db2 "drop event monitor dlmonfile"
db2 "CREATE EVENT MONITOR dlmonfile FOR DEADLOCKS WITH DETAILS WRITE TO file '/home/db2inst1/event_monitor_deadlock/'"
db2 "SET EVENT MONITOR dlmonfile state 1"
select * from syscat.eventmonitors;
select evmonname, event_mon_state(evmonname) from syscat.eventmonitors;
select * from syscat.eventmonitors;
db2evmon -path /home/db2inst1/event_monitor_deadlock/ > /home/db2inst1/dlmon.output

--Statements
mkdir /home/db2inst1/event_monitor_stmt
db2 "SET EVENT MONITOR stmtmonfile state 0"
db2 "drop event monitor stmtmonfile"
 db2 "CREATE EVENT MONITOR stmtmonfile FOR Statements WRITE TO file '/home/db2inst1/event_monitor_stmt/'"
db2 "SET EVENT MONITOR stmtmonfile state 1"
select * from syscat.eventmonitors;
select evmonname, event_mon_state(evmonname) from syscat.eventmonitors;
db2evmon -path /home/db2inst1/event_monitor_stmt/ > /home/db2inst1/stmtmonfile.output


db2 flush event monitor eventmonitorname命令的用途是什麼
將當前的數據庫監控數據寫入到對應的文件中
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章