如何查詢oracle執行計畫 總結

2021-07-24 05:59:59 字數 1776 閱讀 7977

第一種:explain plan命令(plsql devoloper中的f5鍵在內部也是呼叫的此命令)

用法:依次執行以下語句

explain plan for 目標sql

select * from table(dbms_xplan.display);

第二種:使用dbms_xplan包

(1)select * from table(dbms_xplan.display);

與explain plan命令配合使用

(2)select * from table(dbms_xplan.display_cursor(null,null,'advanced'));

在sqlplus中檢視剛剛執行

(3)select * from table(dbms_xplan.display_cursor('sql_id/hash_value',child_cursor_number,'advanced'));

檢視指定sql的執行計畫

(4)select * from table(dbms_xplan.display_awr('sql_id'));

用於檢視指定sql的所有歷史執行計畫

第三種:sqlplus中的autotrace開關

set autotrace off(預設值)(等價於set autot off)

set autotrace on(等價於set autot on)

set autotrace traceonly(不顯示執行sql的結果)(等價於set autot trace)

set autotrace traceonly explain(只顯示sql執行計畫)(等價於set autot trace exp)

set autotrace traceonly statistics(只顯示sql資源消耗量)(等價於set autot trace stat)

第四種:10046事件

檢視目標sql執行計畫的一種方法,和上面三種方法的不同之處在於,此方法得到的執行計畫明確顯示了目標sql實際執行計畫中每一步驟所消耗的邏輯讀、物理讀和花費的時間。

使用以下三個步驟來執行10046事件:

(1)首先在當前session中啟用10046事件

(2)在此session中執行目標sql

(3)在此session中關閉10046事件

上面步驟執行完後,相關資料寫入trace檔案中

trace檔案存放於user_dump_dest中

trace檔案的格式為「例項名_ora_當前session的spid.trc」

啟用10046的方法,一般有以下兩種:

--alter session set events '10046 trace name context forever,level 12'

--oradebug event 10046 trace name context forever,level 12

推薦使用oradebug方式,此方式可以在啟用10046事件後oradebug tracefile_name來得到trc檔案的目錄和名稱

關閉10046事件的方法為:

--alter session set events '10046 trace name context off'

--oradebug event 10046 trace name context off

需要使用tkprof來格式化trc檔案(tkprof命令位於$oracle_home/bin目錄下)

Oracle 如何啟用執行計畫

1 啟用autotrace 1.1 以sys使用者,執行utlxplan.sql sqlplus as sysdba sql oracle home rdbms admin utlxpls.sql 1.2 通過執行plustrce.sql指令碼建立plustrace角色 sql oracle hom...

oracle如何看執行計畫

文章寫的不錯,原文請看 另外,最近公司舉行sql優化大賽,下面是自己的一些總結 1.首先要理解sql的意圖,這樣才能等價的改寫出sql 2.要保證執行的正確性 比如這次的left join,還有上次的建立序列 3.建立索引是第一步,建立索引後要考慮索引能否被用到 執行計畫是否走所建的索引,索引欄位上...

oracle如何檢視執行計畫

1.在pl sql developer中得到乙個sql的執行計畫 輸入想要檢視執行計畫的目標sql,再按一下快捷鍵f5就可以了。2.explain plan 命令 explain plan for 目標sql select from table dbms xplan.display 3.dbms x...