用outline修改固定執行計劃
http://www.itpub.net/thread-1445125-1-1.html
打算把固定執行計劃的方法做個整理和比較。上面的連結是SQL PROFILE的用法。這篇說下OUTLINE的用法。
目的:讓執行計劃走上全表掃描
步驟一-------------------------建立測試表,根據DBA_OBJECTS建立,OBJECT_ID上有索引
Create table wxh_tbd as select * from dba_objects;
create index t_3 on wxh_tbd(object_id);
步驟二--------------------------建立outline。由於預設的執行計劃是索引的,因此後續我們需要修改這個OUTLINE。讓它走全表
create or replace outline pub_out on select * from wxh_tbd where object_id=:1;
步驟三--------------------------建立兩個私有OUTLINE,之所以建立兩個,是為了讓彼此的HINT做交換
create or replace private outline pri_out_1 on select * from wxh_tbd where object_id=:1;
create or replace private outline pri_out_2 on select /*+ full(wxh_tbd) */ * from wxh_tbd where object_id=:1;
步驟四-------------------------交換兩個OUTLINE的HITN
update ol$hints set ol_name=decode(ol_name,'PRI_OUT_1','PRI_OUT_2','PRI_OUT_2','PRI_OUT_1') where ol_name in ('PRI_OUT_1','PRI_OUT_2');
commit;
步驟五------------------------測試結果。在當前SESSION生效,看到執行計劃NOTE部分用到了OUTLINE
alter session set use_private_outlines=true;
execute dbms_outln_edit.refresh_private_outline('PRI_OUT_1');
execute dbms_outln_edit.refresh_private_outline('PRI_OUT_2');
explain plan for
select * from wxh_tbd where object_id=:1;
select * from table(dbms_xplan.display(null,null,'outline'));
-----------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-----------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 577 | 99K| 140 (2)| 00:00:02 |
|* 1 | TABLE ACCESS FULL| WXH_TBD | 577 | 99K| 140 (2)| 00:00:02 |
-----------------------------------------------------------------------------
Note
-----
- outline "PRI_OUT_1" used for this statement
步驟六--------------------------釋出到公共OUTLINE
create or replace outline pub_out from private PRI_OUT_1;
步驟七--------------------------另開一個SESSION,確定已經用到了OUTLINE
SQL> explain plan for
2 select * from wxh_tbd where object_id=:1;
已解釋。
SQL> select * from table(dbms_xplan.display(null,null,'outline'));
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 3295978849
-----------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-----------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 577 | 99K| 140 (2)| 00:00:02 |
|* 1 | TABLE ACCESS FULL| WXH_TBD | 577 | 99K| 140 (2)| 00:00:02 |
-----------------------------------------------------------------------------
Note
-----
- outline "PUB_OUT" used for this statement
after startup on database
begin
execute immediate('alter system set use_stored_outlines=true');
end;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22034023/viewspace-697564/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用OUTLINE固定執行計劃
- oracle使用outline固定執行計劃事例Oracle
- SQL PROFILE修改固定執行計劃SQL
- zt_sql baseline_sql profile_sql outline修改固定執行計劃SQL
- SQL BASELINE修改固定執行計劃SQL
- 用sql profile來固定執行計劃SQL
- oracle 固定執行計劃Oracle
- oracle固定執行計劃--sqlprofileOracleSQL
- oracle sqlprofile 固定執行計劃,並遷移執行計劃OracleSQL
- 【SPM】Oracle如何固定執行計劃Oracle
- 使用sql profile固定執行計劃SQL
- 執行計劃大剛OUTLINE的管理
- 【OUTLINE】環境不滿足OUTLINE記錄的執行計劃時會選擇其他執行計劃
- baseline固定SQL執行計劃SQL
- Oracle手動固定SQL執行計劃OracleSQL
- 使用SPM和STA進行固定執行計劃
- Oracle緊急固定執行計劃之手段Oracle
- Oracle SQL Profile固定執行計劃的方法OracleSQL
- 使用coe_xfr_sql_profile固定執行計劃SQL
- 修改Process Chain的執行計劃AI
- 【OUTLINE】使用Oracle Outline技術暫時鎖定SQL的執行計劃OracleSQL
- .Oracle固定執行計劃之SQL PROFILE概要檔案OracleSQL
- 執行計劃-1:獲取執行計劃
- dbms_outln.create_outline在10.2.0.5中建立outline所包含的執行計劃並不正確
- 使用SQL Profile及SQL Tuning Advisor固定執行計劃SQL
- 執行計劃
- PostgreSQLSQLOUTLINE外掛sr_plan(儲存、篡改、固定執行計劃)SQL
- 分析執行計劃優化SQLORACLE的執行計劃(轉)優化SQLOracle
- 【sql調優之執行計劃】獲取執行計劃SQL
- SYBASE執行計劃
- MySQL 執行計劃MySql
- MySQL執行計劃MySql
- sql 執行計劃SQL
- ORACLE執行計劃Oracle
- 用DBMS_XPLAN來展示執行計劃
- 【執行計劃】Oracle獲取執行計劃的幾種方法Oracle
- 【Oracle】-【索引-HINT,執行計劃】-帶HINT的索引執行計劃Oracle索引
- 分析執行計劃最佳化SQLORACLE的執行計劃(轉)SQLOracle