Oracle SQL Plan Baseline详解与操作

需积分: 19 2 下载量 123 浏览量 更新于2024-09-14 收藏 8KB TXT 举报
"这篇学习笔记主要探讨了SQL Plan Baseline的功能和使用,包括其启用、查看、修改以及如何为SQL指定固定执行计划。" 在Oracle数据库中,SQL Plan Baseline是一种重要的性能优化工具,它允许数据库管理员管理和固定SQL语句的执行计划,以确保最优的查询性能。自Oracle 11g版本起,`optimizer_use_sql_plan_baselines`参数默认开启,意味着系统会使用SQL Plan Baseline来选择执行计划。 SQL Plan Baseline的启用与配置: 1. `optimizer_capture_sql_plan_baselines` 参数默认是关闭的,这意味着数据库不会自动捕获新的执行计划。要开启自动捕获,需要将其设置为TRUE。 2. `optimizer_use_sql_plan_baselines` 参数默认为TRUE,表示系统会在执行SQL时参考已存在的基线。 查看SQL Plan Baseline: 1. 可以通过`dba_sql_plan_baselines`和`dba_sql_management_config`这两个基本视图来查看SQL Plan Baseline的信息。 2. 对于更底层的详细信息,如保存的执行计划和HINTs,可以查看`sqlobj$data`和`sqlobj$`视图。 修改SQL Plan Baseline的属性: 1. `ENABLED`:设置为NO可临时禁用某个计划。计划必须同时是ENABLED和ACCEPTED才会被优化器考虑。 2. `FIXED`:设置为YES后,该计划将成为优化器的首选,即使有成本更低的计划。这对于将存储概要转化为稳定的SQL Plan Baseline尤其有用。 3. `AUTOPURG`:设置为NO可防止计划因自动清理机制而被删除,实现永久保留。 4. `plan_name`:可以更改SQL Plan的名称,便于管理。 5. `description`:可以修改SQL Plan的描述,提供更多的元数据信息。 固定SQL执行计划: 要为特定SQL指定固定执行计划,可以使用以下步骤: 1. 先关闭自动游标(`set autotrace off`)。 2. 使用`hashplan`查看具有所需计划哈希值的SQL_ID。 3. 根据需要操作SQL_ID,例如将特定计划固定。 这些操作通常通过PL/SQL包`dbms_spm`来完成,比如调用`alter_sql_plan_baseline`函数来修改基线的属性。通过理解和熟练使用SQL Plan Baseline,数据库管理员能够更好地控制和优化SQL语句的执行,确保系统的稳定性和性能。
2022-09-05 上传