oracle中跟蹤SQL
************************/
1.跟蹤自己的SQL語句
1)timed_statistics=true;
2)alter session set sql_trace=true;
或者 alter session set events '10046 trace name context forever,level 12';
alter session set events '10046 trace name context off';
3)到user_dump_dest指定的目錄下找到最新的.trc文件
4)tkprof tracefile outfile sys=no 可以再oufile中看到跟蹤到的結果
2.跟蹤別人的語句
1)timed_statistics=true;
2)exec dbms_system.set_sql_trace_in_session(&sid,&serial#,true);
3.也可以從動態視圖中查詢
select sql_text from v$session a,v$sqlarea b where a.user# = b.parsing_user_id
and a.sid=&sid and username = 'SCOTT'
/***********************
DB2中跟蹤SQL
************************/
1.創建事件監視器
1)查看監視器選項
db2 get monitor switches
2)修改語句跟蹤選項
db2 update monitor swithes using statement on
3)創建語句監視器
db2 create event monitor aa for statements write to file 'f:/test/'
4)激活監視器
db2 set event monitor aa state=1
5)運行應用程序
eg:select * from staff
6)關閉監視器
db2 set event monitor aa state=0
7)格式化結果
db2evmon -path f:/test > sql.txt
現在可以再f:/test/sql.txt文件中查看跟蹤結果了
其他監視選項同理
2.運行快照
db2 update dbm cfg using dft_mon_stmt on
db2 terminate
db2 get snapshot for dynamic sql on sample > sqlshot.txt;
3.快照表函數
db2 "select * from table(SNAPSHOT_TABLE('sample',-1)) as T"
類似的表函數詳見:
http://www.ibm.com/developerworks/cn/db2/library/techarticles/0305deroos/0305deroos.html