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 sql執行計劃OracleSQL
- 多種方法檢視Oracle SQL執行計劃OracleSQL
- 【執行計劃】Oracle獲取執行計劃的幾種方法Oracle
- 檢視SQL的執行計劃方法SQL
- Oracle中檢視已執行sql的執行計劃OracleSQL
- Oracle 檢視SQL的執行計劃OracleSQL
- 檢視Oracle SQL執行計劃方法比較、分析OracleSQL
- Oracle獲取執行計劃的方法Oracle
- oracle檢視執行計劃的方法Oracle
- SQL的執行計劃SQL
- 使用SQL_TEACE的跟蹤檔案分析執行計劃SQL
- Oracle手動固定SQL執行計劃OracleSQL
- sql執行計劃變更和刪除快取中執行計劃的方法SQL快取
- Oracle檢視正在執行的SQL以及執行計劃分析OracleSQL
- sql 執行計劃SQL
- 檢視sql執行計劃方法彙總SQL
- Oracle檢視執行計劃常用方法Oracle
- Oracle 獲取執行計劃的幾種方法Oracle
- Oracle資料庫關於SQL的執行計劃Oracle資料庫SQL
- SQL Server執行計劃SQLServer
- SQL執行計劃分析SQL
- ORACLE執行計劃Oracle
- SQLServer統計監控SQL執行計劃突變的方法SQLServer
- 【sql調優之執行計劃】獲取執行計劃SQL
- 生成執行計劃的方法
- sql的執行計劃 詳解SQL
- oracle10g 檢視SQL執行計劃OracleSQL
- 【Oracle】-【索引-HINT,執行計劃】-帶HINT的索引執行計劃Oracle索引
- oracle實用sql(15)--檢視SQL執行計劃的順序OracleSQL
- 檢視SQL執行計劃的幾種常用方法YQSQL
- 獲得目標SQL語句執行計劃的方法SQL
- 儲存過程中檢視sql執行計劃的方法儲存過程SQL
- Oracle資料庫關於SQL的執行計劃(轉)Oracle資料庫SQL
- Oracle檢視sql_id 的歷史執行計劃OracleSQL
- Ubuntu中跟蹤多個時區的簡捷方法Ubuntu