oracle中跟蹤sql執行計劃的方法
來自:%BC%FB%D6%A4my%B3%C9%B3%A4/blog/item/aa3c6ffd53537f3c5d600835.html
不論是做為開發DBA還是維護DBA,總是或多或少地遇到SQL執行效率或者說SQL調優問題,檢視執行計劃是必須的。本文介紹了3種常用檢視方法。
不論是做為開發還是維護DBA,總是或多或少地遇到SQL執行效率或者說SQL調優問題,檢視執行計劃是必須的。一般我們可以用3種方法檢視:
一、explain plan for
舉例就足以說明其用法
sys@ORCL> explain plan for 2 select sysdate from dual; Explained. sys@ORCL> select * from (dbms_xplan.display()); PLAN_TABLE_OUTPUT ---------------------------------------------------------------------------------------------------- -------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost | -------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | | | | 1 | TABLE ACCESS FULL | DUAL | | | | -------------------------------------------------------------------- Note: rule based optimization 9 rows selected. |
二、利用TKPROF工具
TKPROF是一個用於分析oracle跟蹤檔案並且產生一個更加清晰合理的輸出結果的可執行工具。如果一個系統的執行效率比較低,一個比較好的方法是跟蹤使用者的會話並且使用TKPROF工具的排序功能格式化輸出,從而找出有問題的SQL語句。
TKPROF命令後面的選項及輸出檔案各個列的含義在這裡不做詳細的介紹。 google一下就會有很多資料。
下面簡單描述一下TKPROF工具的使用步驟:
1、在級別設定sql_trace=true
sys@ORCL> alter session sql_trace=true; Session altered. |
如果要在pl/sql中對session級別設定true,可以使用dbms_system這個包:
sys@ORCL> exec dbms_system.set_sql_trace_in_session(sid,#,true);
2、指定一下生成的trace檔案的名字,便於查詢:
> alter session set tracefile_identifier='yourname'; |
3、執行SQL語句。
4、利用TKPROF工具格式化輸出的trace 檔案:
[oracle@q1test01 ~] $ tkprof /oracle/admin/orcl/udump/orcl_ora_10266_yourname.trc /oracle/yourname.txt explain=user/pwd =yes sys=no waits=yes sort=fchela |
5、檢視生成的檔案再設定sql_trace=false:
> alter sql_trace=false; |
三、set autotrace on
此種方法最常用,關於如何設定sql*plus的autotrace這裡也不做詳細介紹,因為google上面資料確實太多了。有心的朋友可以去找找,保證有一大堆適合你的資料。
舉個例子,這種方法簡單易懂:
ctoc@ORCL> set autotrace on ctoc@ORCL> select sysdate from dual; SYSDATE --------- 25-JUN-08 Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT ptimizer=CHOOSE 1 0 TABLE ACCESS (FULL) OF 'DUAL' Statistics ---------------------------------------------------------- 0 recursive calls 0 db block gets 3 consistent gets 0 physical reads 0 redo size 522 bytes sent via SQL*Net to 655 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 1 rows processed |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22036495/viewspace-1044872/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在oracle中跟蹤會話執行語句的幾種方法Oracle會話
- Oracle SQL Profile固定執行計劃的方法OracleSQL
- Oracle sql執行計劃OracleSQL
- 【執行計劃】Oracle獲取執行計劃的幾種方法Oracle
- Oracle資料庫關於SQL的執行計劃(轉)Oracle資料庫SQL
- Oracle檢視sql_id 的歷史執行計劃OracleSQL
- .Oracle固定執行計劃之SQL PROFILE概要檔案OracleSQL
- oracle 固定執行計劃Oracle
- SQLServer統計監控SQL執行計劃突變的方法SQLServer
- 檢視SQL執行計劃的幾種常用方法YQSQL
- 獲取oracle sql語句詳細些執行計劃OracleSQL
- 【TUNE_ORACLE】定製化執行計劃SQL參考OracleSQL
- 如何檢視SQL的執行計劃SQL
- Oracle檢視執行計劃的命令Oracle
- Oracle優化案例-從執行計劃定位SQL問題(三)Oracle優化SQL
- Oracle DB 相關常用sql彙總7【手工繫結sql執行計劃】OracleSQL
- Oracle提高SQL執行效率的三種方法ITOracleSQL
- Oracle執行語句跟蹤 使用sql trace實現語句追蹤OracleSQL
- Oracle調優之看懂Oracle執行計劃Oracle
- 達夢資料庫SQL執行計劃檢視方法資料庫SQL
- Oracle-繫結執行計劃Oracle
- Oracle利用coe_load_sql_profile指令碼繫結執行計劃OracleSQL指令碼
- 【SQL_PLAN】Oracle 透過檢視sql_plan 格式化執行計劃SQLOracle
- [ORACLE] SQL執行OracleSQL
- MySQL——通過EXPLAIN分析SQL的執行計劃MySqlAI
- Oracle執行計劃Explain Plan 如何使用OracleAI
- oracle使用outline固定執行計劃事例Oracle
- Oracle - 執行過的SQL、正在執行的SQL、消耗資源最多的SQLOracleSQL
- SQL執行計劃異常引起的效能問題SQL
- SQL執行計劃異常 引起的效能問題SQL
- Oracle緊急固定執行計劃之手段Oracle
- 在Oracle中,如何得到真實的執行計劃?Oracle
- 一次搞定各種資料庫SQL執行計劃:MySQL、Oracle、SQL Server、PostgreSQL以及SQLite資料庫MySqlOracleServerSQLite
- 在Oracle裡提高SQL執行效率的三種方法NQOracleSQL
- 執行計劃-1:獲取執行計劃
- Oracle優化案例-view merge與coe_load_sql_profile固定執行計劃(十五)Oracle優化ViewSQL
- 分析執行計劃優化SQLORACLE的執行計劃(轉)優化SQLOracle
- 在MySQL中使用explain查詢SQL的執行計劃MySqlAI
- SQL優化案例-從執行計劃定位SQL問題(三)SQL優化