oracle11g中SQL优化新特性之SQLPlanManagement(SPM)

OracleDatabase11gR1中引入的SQLPlanManagement(SPM)是一项新功能,允许DBA捕获和维护SQL语句执行计划的最佳状态,从而限制优化器统计信息刷新、应用程序更改和数据库版本升级的影响。
本文的目的是帮助读者了解SPM的基本原理,并简要描述其性能优化特点。
SPM实现了一种简单而优雅的方法来解决意外的SQL计划恶化策略。
当用户会话打开自动SQLPlanBaseline捕获时,基于成本的优化器(CBO)会在SQLManagementBase(SMB)中记录会话内执行的所有SQL语句,包括SQL文本、大纲、绑定变量及其编译环境、Storedo。
这是SQLPlanBaseline。
当第二次执行SQL语句时,CBO将新计划与SMB的计划进行比较,以评估新计划是否更有效。
如果新计划提高了性能,SPM会将其标记为该语句的最佳计划。
但是,如果新计划降低了性能,SPM会从SMB中选择最便宜的计划并保存以供将来使用。
SPM捕获SQLPlanBaseline的过程相对简单。
首先,通过将“OPTIMIZER_CAPTURE_SQL_PLAN_BASELINES”参数调整为TRUE来启用自动捕获功能。
该参数的默认值为FALSE,表示不自动捕获。
DBMS_SPM包允许您预先捕获大量SQL语句的计划,并将它们从数据库缓存、SQLTuningSet或AWR快照中导入,或者导入到存储表中。
捕获的SQLPlanBaseline包含SPM和CBO用于控制计划的元数据。
当新计划可供中小型企业使用时,它将自动标记为“已激活”,但在确认是一个好的计划之前不会标记为“已批准”。
查询此元数据的最简单方法是通过“DBA_SQL_PLAN_BASELINES”字典视图。
可以通过DBMS_XPLAN包中的“DISPLAY_SQL_PLAN_BASELINE”过程查看现有的SQLPlanBaselines和可能影响SQL语句执行的方法。
SQLPlanBaselines自动捕获实现涉及调整参数和执行相同的SQL语句两次。
第一次记录SQL语句时,将捕获该计划,第二次则将其显示为该语句的ACCEPTEDSQLPlanBaseline。
如果后续运行产生另一个新计划,该计划也将被自动捕获,但不会被标记为已批准。
SPM仅将第一个计划标记为“已启用”和“已接受”。
SQLPlanBaselines的进步包括手动和自动方法。
手动方法包括调用dbms_spm.evolve_sql_plan_baseline()函数或使用SQLTuningAdvisor工具包执行演化操作。
自动方法包括定期调度“evolve_sql_plan_baseline()”函数或将SQLTUNINGADVISOR配置为在自动任务窗格中自动运行。
具体任务包括启用自动捕获和使用SPM、通过“ALTERSESSION”语句调整参数、查看SPM元数据以及使用“DBMS_XPLAN.DISPLAY_SQL_PLAN_BASELINE”显示带有特定文本的SQLPlanBaseline。

Oracle中SQL调优(SQLTUNING)之最权威获取SQL执行计划大全

本文介绍了获取Oracle数据库SQL执行计划的权威方法和步骤,包括查询v$sql_plan、使用DBMS_XPLAN包、显示内存游标的执行计划、显示AWR历史数据的执行计划、显示SQL调优集中的执行计划语句,并使用AUTOTRACE函数。
具体步骤如下:1、查询v$sql_plan:使用SQL语句查询v$sql_plan表,通过设置SQL_ID和计划哈希值参数得到具体的SQL语句执行计划注意,SQL_ID可以通过以下方式查询v$sqltext和dba_hist_sqltext,或者通过其他方式获取。
2.通过DBMS_XPLAN包:使用该包提供各种显示执行计划的方式,如DISPLAY、DISPLAY_CURSOR、DISPLAY_AWR、DISPLAY_SQLSET和DISPLAY_SQL_PLAN_BASELINE。
该函数提供了不同格式的输出,包括基本格式、普通格式、串行执行格式、完整格式等,以满足不同的需求。
3.AUTOTRACE:自动跟踪功能通过配置用户使用autotrace,可以实时观察SQL执行过程中的性能统计、执行计划和查询结果。
通过设置不同的参数(如ON、ONEXPLAIN、ONSTATISTICS、TRACE、TRACEEXPLAIN、TRACESTATISTICS、OFF)来控制输出的内容。
4.其他方法:包括SQL_TRACE和OPTIMIZER_TRACE。
SQL_TRACE会在跟踪文件中显示执行计划和相关统计信息,而OPTIMIZER_TRACE则记录分析和选择执行计划的优化过程。
综上所述,本文详细介绍了获取Oracle数据库SQL执行计划的各种权威方法,这些方法可以帮助开发人员和DBA更直观地了解和优化SQL查询的性能,提高数据库系统的整体性能。
在实际操作中,根据具体需求和场景,选择合适的方法获取并分析执行计划。