1、set autotrace traceonly命令
2、explain plan for命令
1)explain plan for select * from dual;
2)select * from table(dbms_xplan.display);
3、10046查看Oracle數據庫中的執行計划
能夠得到SQL執行計划中每一個執行步驟所消耗的邏輯讀,物理讀,和花費的時間。實際上,也可以通過gather_plan_sstatistics Hint 配合dbms_xplan 包一起使用得到和10046事件類似細粒度的明細的執行計划。
三個步驟就可以通過10046事件獲得SQL的執行計划。
1.首先在當前session 中激活10046事件。
2.在當前session 中執行SQL語句。
3.最后當前session 中關閉10046事件。
當執行完上述步驟后,oracle就會將目標SQL的執行計划和明細資源消耗寫入此session對應的trace文件中。
oracle會在user_dump_dest參數設置的目錄下產生這個trace文件。
我們有兩種方法在當前session中激活10046事件。
1.在當前session中執行alter session set events '10046 trace naem context forever,level 12'
2.在當前session中執行oradebug event 10046 trace name context forever,level 12'
上述命令中的關鍵字”level“后的數字是標識設置的10046時間的level值,這個值是可以修改的,我們
通常使用的值為12,表示在產生的trace文件中除了有目標sql的執行計划和資源消耗明細外,還包含
SQL使用的綁定變量的值以及該session所經歷的等待事件,除了level值外,其他的部分是固定的語法,
是無法修改的。
我推薦使用第2種方法,因為可以在激活10046事件后執行命令oradebug tracefile_name可以獲得當前
session 所對應的trace文件的具體路徑名稱。
示例:
1.我們先激活10046事件,我們是oradebug命令來激活。
SQL>oradebug setmypid
SQL>oradebug event 10046 trace name context forver,level 12
2.在當前session中激活了10046事件后,我們執行一個SQL語句
SQL>SELECT * FROM hr.test;
3.使用oradebug tracefile_name 命令查看當前session所對應的trace文件路徑和名稱
SQL>oradebug tracefile_name
/app/oracle/diag/rdbms/pxboracle/pxboracle/trace/pxboracle_ora_18565.trc
4.關閉當前session 中的10046事件:
SQL>oradebug event 10046 trace name context off
5.生成TKPROF報告
然后鍵入 tkprof /app/oracle/diag/rdbms/pxboracle/pxboracle/trace/pxboracle_ora_18565.trc /tmp/tk.prf