db2檢視執行計劃

jst143發表於2011-03-28

db2檢視執行計劃
db2 , 執行計劃
如果沒有建立過執行計劃表的話,先要建立執行計劃表
連線資料庫 ,並執行指令碼檔案 EXPLAIN.DDL

db2 connect to db2inst1
db2 -tvf $HOME/sqllib/misc/EXPLAIN.DDL

開始執行計劃模式
db2 connect to db2inst1
db2 set current explain mode explain
這點和Oracle裡的10046及sql_trace一樣。
此過程中的sql執行將被trace

關閉執行計劃模式
db2 set current explain mode no
這裡和sql_trace false, event off一樣了

最後用特定的工具 將執行計劃給提取出來,這裡和oracle裡的tkprof一樣,
其實很多東西都有相通的地方

db2exfmt -d db2inst1 -g TIC -w -l -s % -n % -o explainplan.out

檢視匯出的檔案 explainplan.out即可

這裡是通過命令 行來執行的比較方便,當然你可以通過圖形化的工具也可以得到。

和Oracle比較如果這裡對sql的執行計劃的trace和Oracle基本上一樣。不過如果是要提取應用裡跑的sql和別的session裡跑的sql,這個方法就不行了,而在ORacle裡可以通過
dbms_system.set_sql_trace_in_session
或者
dbms_system.set_ev來實現
比如
SQL > select sid,serial#,username from v$session where username is not null;
SID SERIAL# USERNAME
---------- ---------- ------------------------------
19 378 SCOTT

SQL> exec dbms_system.set_sql_trace_in_session(19,378,true)
PL/SQL procedure successfully completed.
SQL> exec dbms_system.set_ev(19,378,10046,8,'SCOTT');
PL/SQL procedure successfully completed.

本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/inthirties/archive/2010/08/07/5795682.aspx

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23577591/viewspace-691134/,如需轉載,請註明出處,否則將追究法律責任。

相關文章