查看Oracle數據庫中的執行計划


 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM