Oracle檢視執行計劃常用方法
檢視執行計劃常用方法
1)explain plan命令 2)DBMS_XPLAN包 3)AUTOTRACE開關 4)10046事件 5)10053事件 6)AWR SQL報告 |
1、 explain plan(相當於PL/SQL的F5)
explain plan for select * from dual; select * from table(dbms_xplan.display); |
注:相關表plan_table$是一個on commit preserve rows的global temporary table。
2、 DBMS_XPLAN包
方法1:配合explain plan使用
explain plan for select * from dual; select * from table(dbms_xplan.display); |
方法2:跟在執行語句後面,‘advanced’比‘all’多顯示了“Outline Data”內容
set linesize 800 set pagesize 900 col plan_table_output for a200 select * from table(dbms_xplan.display_cursor(null,null,'advanced')); |
方法3:只要目標SQL的執行計劃所在的Child Cursor還沒有被age out出Shared Pool,就可以使用該方法檢視SQL執行計劃
select sql_text, sql_id, hash_value, child_number from v$sql where sql_text like 'select count(*) from sh.customers%';
select * from table(dbms_xplan.display_cursor('sql_id/hash_value', child_cursor_number,'advanced')); |
方法4:用於檢視指定SQL的所有歷史執行計劃,沒有謂詞資訊
--目標SQL可能有多個Child Cursor,即多個執行計劃 select sql_text, sql_id, version_count, executions from v$sqlarea where sql_text like 'select count(*) from sh.customers%';
select * from table(dbms_xplan.display_awr('sql_id')); |
注:Oracle把執行計劃取樣資料從V$sql_plan搬到AWR Repository基表wrh$_sql_plan中沒有保留謂詞資訊的記錄。
3、 AUTOTRACE開關
可以額外觀察到目標SQL執行時所耗費的物理讀、邏輯讀、產生redo數量以及排序的數量。(statistics)
set outotrace on; set outotrace off; set outotrace traceonly;--不現實SQL執行結果 set outotrace traceonly explain; set outotrace traceonly statistics;
|
4、 10046事件與tkprof命令
明確顯示了目標SQL實際執行計劃中每一個執行步驟所消耗的邏輯讀、物理讀和花費的時間。(在USER_DUMP_DEST目錄下生成trace檔案。)
--開啟
alter session set events '10046 trace name context forever,level 12';
oradebug event 10046 trace name context forever,level 12;
--關閉
alter session set events '10046 trace name context off';
oradebug event 10046 trace name context off;
注:level 12表示trace檔案中還包含目標SQL所使用的繫結變數的值以及該session所經歷的等待事件。
--操作步驟--
a、SQL> oradebug setmypid; b、SQL> oradebug event 10046 trace name context forever,level 12; c、SQL> select count(*) from dual; d、SQL> oradebug tracefile_name; /oracle/app/oracle/diag/rdbms/test/test/trace/test_ora_4288.trc e、SQL> oradebug event 10046 trace name context off; f、[oracle@test ~]$tkprof /oracle/app/oracle/diag/rdbms/test /test/trace/test_ora_4288.trc /oracle/test_ora_4288_tkprof.trc |
5、 10053事件
6、 AWR SQL報告、Statspack報告
7、 一些現成的指令碼(如display_cursor_9i.sql)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30557618/viewspace-1833425/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle檢視執行計劃的方法Oracle
- 多種方法檢視Oracle SQL執行計劃OracleSQL
- 檢視執行計劃的方法
- 檢視SQL執行計劃的幾種常用方法YQSQL
- Oracle檢視執行計劃(五)Oracle
- Oracle檢視執行計劃(六)Oracle
- Oracle檢視執行計劃(一)Oracle
- Oracle檢視執行計劃(二)Oracle
- Oracle檢視執行計劃(三)Oracle
- Oracle檢視執行計劃(四)Oracle
- ORACLE執行計劃的檢視Oracle
- oracle如何檢視執行計劃Oracle
- 檢視oracle執行計劃 - 轉Oracle
- 檢視Oracle SQL執行計劃方法比較、分析OracleSQL
- 檢視SQL的執行計劃方法SQL
- Oracle檢視執行計劃的命令Oracle
- Oracle 檢視SQL的執行計劃OracleSQL
- 檢視執行計劃
- 檢視sql執行計劃方法彙總SQL
- ORACLE資料庫檢視執行計劃Oracle資料庫
- 檢視ORACLE的實際執行計劃Oracle
- 檢視執行計劃(一)
- 檢視執行計劃(二)
- 檢視sql執行計劃SQL
- Oracle檢視正在執行的SQL以及執行計劃分析OracleSQL
- oracle10g 檢視SQL執行計劃OracleSQL
- Oracle如何檢視真實執行計劃(一)Oracle
- 檢視歷史執行計劃
- 檢視 OceanBase 執行計劃
- oracle dbms_xplan.display_cursor檢視執行計劃Oracle
- SQLPLUS檢視oracle sql執行計劃命令SQLOracle
- 使用10046事件檢視oracle執行計劃事件Oracle
- 執行計劃__獲取方法、檢視執行順序、統計資訊詳解
- 達夢資料庫SQL執行計劃檢視方法資料庫SQL
- Oracle檢視sql_id 的歷史執行計劃OracleSQL
- Oracle 9i 開啟autotrace on 檢視執行計劃Oracle
- 如何檢視SQL的執行計劃SQL
- DBMS_XPLAN檢視執行計劃