中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle中怎么獲取執行計劃

發布時間:2021-07-29 14:31:17 來源:億速云 閱讀:170 作者:Leah 欄目:建站服務器

今天就跟大家聊聊有關Oracle中怎么獲取執行計劃,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

1. Explain plan
Explain plan以SQL語句作為輸入,得到這條SQL語句的執行計劃,并將執行計劃輸出存儲到計劃表中,方法如下:
explain plan for select * from t;
select * from table(dbms_xplan.display);
注意:Explain plan只生成執行計劃,并不會真正執行SQL語句,因此產生的執行計劃有可能不準,因為:
1)當前的環境可能和執行計劃生成時的環境不同;
2)不會考慮綁定變量的數據類型;
3)不進行變量窺視。
2. 查詢動態性能視圖
如果你想獲取正在執行的或剛執行結束的SQL語句真實的執行計劃(即獲取庫緩存中的執行計劃),可以到動態性能視圖里查詢。方法如下:
1)獲取SQL語句的游標
游標分為父游標和子游標,父游標由sql_id(或聯合address和hash_value)字段表示,子游標由child_number字段表示。
如果SQL語句正在運行,可以從v$session中獲得它的游標信息,如:
select status, sql_id, sql_child_number from v$session where status='ACTIVE' and ....
如果知道SQL語句包含某些關鍵字,可以從v$sql視圖中獲得它的游標信息,如:
select sql_id, child_number, sql_text from v$sql where sql_text like '%關鍵字%‘
2)獲取庫緩存中的執行計劃
為了獲取緩存庫中的執行計劃,可以直接查詢動態性能視圖v$sql_plan和v$sql_plan_statistics_all等,但更方便的方法是:
select * from table(dbms_xplan.display_cursor('sql_id',child_number));
3)獲取前一次執行計劃:
set serveroutput off
select * from table(dbms_xplan.display_cursor(null,null,'ALLSTATS LAST'));
3. AWR報告
AWR報告把動態性能視圖中的執行計劃保存到dba_hist_sql_plan視圖中,我們可以采用如下方法查詢AWR中的執行計劃:
select * from table(dbms_xplan.display_awr('sql_id');
4. Autotrace
set autotrace是sqlplus工具的一個功能,只能在通過sqlplus連接的session中使用,它非常適合在開發時測試SQL語句的性能,有以下幾種參數可供選擇:
SET AUTOTRACE OFF ---------------- 不顯示執行計劃和統計信息,這是缺省模式
SET AUTOTRACE ON EXPLAIN ------ 只顯示優化器執行計劃
SET AUTOTRACE ON STATISTICS -- 只顯示統計信息
SET AUTOTRACE ON ----------------- 執行計劃和統計信息同時顯示
SET AUTOTRACE TRACEONLY ------ 不真正執行,只顯示預期的執行計劃,通explain plan
5. SQL_TRACE
SQL_TRACE作為初始化參數可以在實例級別啟用,也可以只在會話級別啟用,在實例級別啟用SQL_TRACE會導致所有進程的活動被跟蹤,包括后臺進程及所有用戶進程,這通常會導致比較嚴重的性能問題,所以在一般情況下,我們使用sql_trace跟蹤當前進程,方法如下:
SQL> alter session set sql_trace=true;
...被跟蹤的SQL語句...
SQL> alter session set sql_trace=false;
如果要跟蹤其它進程,可以通過Oracle提供的系統包DBMS_SYSTEM. SET_SQL_TRACE_IN_SESSION來實現,例如:
SQL> exec dbms_system.set_sql_trace_in_session(sid,serial#,true) --開始跟蹤
SQL> exec dbms_system.set_sql_trace_in_session(sid,serial#,false) --結束跟蹤
使用tkprof 工具將sql trace 生成的跟蹤文件轉換成易讀的格式,用發如下:
tkprof inputfile outputfile

看完上述內容,你們對Oracle中怎么獲取執行計劃有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

蒲江县| 天柱县| 怀来县| 新安县| 诸城市| 桐梓县| 兴山县| 农安县| 措美县| 泌阳县| 汽车| 鄱阳县| 建平县| 乐业县| 梅河口市| 紫金县| 洛隆县| 新竹县| 泰安市| 梁河县| 文水县| 绥棱县| 平乐县| 衡山县| 龙南县| 偃师市| 安吉县| 额济纳旗| 漳平市| 海门市| 鄂托克前旗| 牙克石市| 方正县| 屏边| 三亚市| 吉林省| 龙井市| 浮山县| 仪陇县| 达拉特旗| 贺兰县|