獲取執行計劃的方法
獲取執行計劃的方法
文章版權所有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
- 執行計劃-1:獲取執行計劃
- 獲取執行計劃之Autotrace
- 獲取oracle sql語句詳細些執行計劃OracleSQL
- 達夢資料庫獲取SQL真實的執行計劃資料庫SQL
- 微課sql最佳化(9)、如何獲取執行計劃SQL
- Oracle SQL Profile固定執行計劃的方法OracleSQL
- Java 執行緒池獲取池中所有執行緒列表的方法Java執行緒
- 分析執行計劃優化SQLORACLE的執行計劃(轉)優化SQLOracle
- 使用sql monitor獲取更加詳細的執行計劃 - dbms_sqltune.report_sql_monitorSQL
- 探討Classloader的 getResource("") 獲取執行根目錄方法
- Java:如何輕鬆獲取當前執行的方法名Java
- Python中獲取執行緒返回值的常用方法!Python執行緒
- 探討Classloader的 getResource(“”) 獲取執行根目錄方法
- 如何制定專案執行計劃的幾種方法
- SQLServer統計監控SQL執行計劃突變的方法SQLServer
- 【java】【多執行緒】獲取和設定執行緒名字、獲取執行緒物件(3)Java執行緒物件
- python獲取程式執行檔案路徑的方法其一Python
- MySQL執行計劃MySql
- SYBASE執行計劃
- MySQL 執行計劃MySql
- 檢視SQL執行計劃的幾種常用方法YQSQL
- Laravel 獲取執行的sql語句LaravelSQL
- 獲取任務的執行結果
- 獲取C#中方法的執行時間及其程式碼注入C#
- PostgreSQL DBA(13) - 自頂往下的方法閱讀執行計劃SQL
- SqlServer的執行計劃如何分析?SQLServer
- sqm執行計劃的繫結
- MySQL執行計劃解析MySql
- mysql explain 執行計劃MySqlAI
- explain執行計劃分析AI
- mysql執行計劃explainMySqlAI
- oracle 固定執行計劃Oracle
- Oracle sql執行計劃OracleSQL
- 執行計劃執行步驟原則
- 【PG執行計劃】Postgresql資料庫執行計劃統計資訊簡述SQL資料庫
- 【Spark】 Spark作業執行原理--獲取執行結果Spark
- Oracle檢視執行計劃的命令Oracle
- 如何檢視SQL的執行計劃SQL