獲取執行計劃的方法
獲取執行計劃的方法
文章版權所有Jusin Hao(luckyfriends),支援原創,轉載請註明。
在sqlplus中執行:
方法1)
取出你要查的sql的相關資訊(Oracle9i沒有執行計劃的cursor,要通過這樣的查詢來檢視其計劃):
Select a.Sql_Text, a.Sql_Fulltext, a.Sql_Id, a.Hash_Value, a.Disk_Reads, a.Buffer_Gets, a.Plan_Hash_Value, a.Address,
a.Child_Number
From V$sql a
Where a.Sql_Text Like '%WA_PERIODSTATE.CLASSID%' Or a.Sql_Text Like '%wa_periodstate.classid%';
通過上面查到的Hash_Value和Address去執行計劃
Select * From v$sql_plan a Where a.HASH_VALUE='3325151165' And a.ADDRESS='33D80198';
方法2)
取出你要查的sql的相關資訊:
Select a.Sql_Text, a.Sql_Fulltext, a.Sql_Id, a.Hash_Value, a.Disk_Reads, a.Buffer_Gets, a.Plan_Hash_Value, a.Address,
a.Child_Number
From V$sql a
Where a.Sql_Text Like '%USER_TABLES%' Or a.Sql_Text Like '%user_tables%';
通過上面查到的Sql_Id和Child_Number去執行計劃
Select * From Table(dbms_xplan.display_cursor('Sql_Id','Child_Number'));
select * from table(dbms_xplan.display_cursor(‘’));
select * from table(dbms_xplan.display_awr(‘’));
select * from table(dbms_xplan.display_sqlset(‘’));
方法3)
SQL> set timing on
SQL> set linesize 1600
SQL> set feedback off pagesize 0 tab off
SQL> set autotrace traceonly
SQL>select wa_periodstate.classid, wa_period.cyear, wa_period.cperiod, wa_period.cstartdate, wa_period.cenddate from wa_periodstate, wa_period where wa_periodstate.pk_periodset = wa_period.pk_wa_period and wa_periodstate.icheckflag = 0 and wa_periodstate.iaccountmark = 0 and wa_period.cenddate >= :1 and wa_periodstate.pk_corp = :2 and ( wa_period.cyear || wa_period.cperiod ) = ( select min ( wa_period.cyear || wa_period.cperiod ) from wa_periodstate period, wa_period where period.pk_periodset = wa_period.pk_wa_period and wa_periodstate.classid = period.classid and period.icheckflag = 0 and period.iaccountmark = 0 ) order by cstartdate ;
返回的內容就是執行計劃
方法4)
4-1)先執行
Explain Plan For
Select Wa_Periodstate.Classid, Wa_Period.Cyear, Wa_Period.Cperiod, Wa_Period.Cstartdate, Wa_Period.Cenddate
From Wa_Periodstate, Wa_Period
Where Wa_Periodstate.Pk_Periodset = Wa_Period.Pk_Wa_Period And Wa_Periodstate.Icheckflag = 0 And
Wa_Periodstate.Iaccountmark = 0 And Wa_Period.Cenddate >= '2009-08-19' And Wa_Periodstate.Pk_Corp = '1240' And
(Wa_Period.Cyear || Wa_Period.Cperiod) =
(Select Min(Wa_Period.Cyear || Wa_Period.Cperiod)
From Wa_Periodstate Period, Wa_Period
Where Period.Pk_Periodset = Wa_Period.Pk_Wa_Period And Wa_Periodstate.Classid = Period.Classid And
Period.Icheckflag = 0 And Period.Iaccountmark = 0)
Order By Cstartdate
4-2)再執行Select * From Table(dbms_xplan.display());把返回的結果給我。
形如這樣
方法5)
gather_plan_statistics 可以多顯示一列
dbms_sqltune.report_sql_moitor
EM裡的sql monitor
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14710393/viewspace-1084315/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle獲取執行計劃的方法Oracle
- 【執行計劃】Oracle獲取執行計劃的幾種方法Oracle
- 獲取執行計劃的6種方法
- Oracle 獲取SQL執行計劃方法OracleSQL
- 執行計劃-1:獲取執行計劃
- Oracle 獲取執行計劃的幾種方法Oracle
- 獲取SQL執行計劃SQL
- 【sql調優之執行計劃】獲取執行計劃SQL
- 獲取SQL執行計劃的方式:SQL
- 獲取執行計劃之Autotrace
- 介紹幾種獲取SQL執行計劃的方法(上)SQL
- 如何獲取真實的執行計劃
- 執行計劃__獲取方法、檢視執行順序、統計資訊詳解
- oracle dbms_xplan獲取執行計劃Oracle
- MySQL 5.7獲取指定執行緒正在執行SQL的執行計劃資訊MySql執行緒
- sql執行計劃變更和刪除快取中執行計劃的方法SQL快取
- 會話的跟蹤以及執行計劃的獲取會話
- Oracle10g如何獲取執行計劃Oracle
- 獲得目標SQL語句執行計劃的方法SQL
- 生成執行計劃的方法
- 獲取oracle sql語句詳細些執行計劃OracleSQL
- oracle explain plan for獲取執行計劃並不可靠.OracleAI
- 執行計劃的閱讀方法
- 檢視執行計劃的方法
- 微課sql最佳化(9)、如何獲取執行計劃SQL
- 設定CURRENT_SCHEMA後獲取執行計劃報錯
- oracle 9i 獲取sql執行計劃(書寫長的sql)OracleSQL
- 執行計劃幾種方法
- mysql的執行計劃快取問題MySql快取
- 使用 EXPLAIN PLAN 獲取SQL語句執行計劃 (R0.1)AISQL
- 檢視SQL的執行計劃方法SQL
- oracle檢視執行計劃的方法Oracle
- 利用statspack來獲取生成環境中top SQL及其執行計劃SQL
- Oracle SQL Profile固定執行計劃的方法OracleSQL
- oracle中跟蹤sql執行計劃的方法OracleSQL
- 分析執行計劃優化SQLORACLE的執行計劃(轉)優化SQLOracle
- 【檢視】使用V$SQL_PLAN檢視獲取曾經執行過的SQL語句執行計劃SQL
- 物化檢視重新整理遞迴SQL獲取執行計劃報錯遞迴SQL