今天有一个生产库一条sql的性能生产库比测试库差,没有太多的时间去分析原因,所以使用重导spm的方法去生成好的执行计划,过程如下:
测试环境抓出有好执行计划的sql:
variable cnt number;
execute :cnt :=DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE(SQL_ID => 'bvsy2p39cc820', PLAN_HASH_VALUE => 672253729) ;
SQL>
PL/SQL procedure successfully completed
cnt
---------
1
Baseline已经生成:
SQL> select a.sql_handle,a.plan_name,a.creator,a.enabled,a.accepted,a.fixed,a.reproduced,a.autopurge,a.sql_text from dba_sql_plan_baselines a;
SQL_HANDLE PLAN_NAME CREATOR ENABLED ACCEPTED FIXED REPRODUCED AUTOPURGE SQL_TEXT
------------------------------ ------------------------------ ------------------------------ ------- -------- ----- ---------- --------- --------------------------------------------------------------------------------
SQL_f82353ef7b179e90 SQL_PLAN_gh8umxxxjg7nhda887329 DBMGR YES YES NO YES YES MERGE INTO DML_DETAIL_ASSET T USING (SELECT A.VALUATION_DATE, A.PFOLIO_UNIT_CD,
测试环境抓出有好执行计划的sql:
variable cnt number;
execute :cnt :=DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE(SQL_ID => 'bvsy2p39cc820', PLAN_HASH_VALUE => 672253729) ;
SQL>
PL/SQL procedure successfully completed
cnt
---------
1
Baseline已经生成:
SQL> select a.sql_handle,a.plan_name,a.creator,a.enabled,a.accepted,a.fixed,a.reproduced,a.autopurge,a.sql_text from dba_sql_plan_baselines a;
SQL_HANDLE PLAN_NAME CREATOR ENABLED ACCEPTED FIXED REPRODUCED AUTOPURGE SQL_TEXT
------------------------------ ------------------------------ ------------------------------ ------- -------- ----- ---------- --------- --------------------------------------------------------------------------------
SQL_f82353ef7b179e90 SQL_PLAN_gh8umxxxjg7nhda887329 DBMGR YES YES NO YES YES MERGE INTO DML_DETAIL_ASSET T USING (SELECT A.VALUATION_DATE, A.PFOLIO_UNIT_CD,
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15779287/viewspace-706269/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/15779287/viewspace-706269/
本文介绍了一种在生产环境中快速优化SQL执行计划的方法——通过从测试环境导出优秀的执行计划并将其应用到生产环境中。文章详细展示了如何使用DBMS_SPM加载计划缓存中的特定SQL执行计划,并验证了该计划的有效性。
765

被折叠的 条评论
为什么被折叠?



