Oracle 執行計畫檢視

2021-08-04 10:05:57 字數 1704 閱讀 2910

第一種: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檢視執行計畫

sql oracle home rdbms admin utlxplan.sql 表已建立。這個指令碼只是建立一張plan table表 sql oracle home sqlplus admin plustrce.sql 這個指令碼建立plustrace並授權 sql drop role plus...

oracle如何檢視執行計畫

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

Oracle如何檢視SQL實際執行計畫

1 檢視最近執行的sql語句 select recentsql s.sql id,s.child number,s.hash value,s.address,s.executions,s.sql text from v sql s where s.parsing user id select u.u...