SQL PROFILE:相对被动
SPM:主动,保证只有被验证过的执行计划才会被启用。只有DBA_SQL_PLAN_BASELINES中ENABLED和ACCEPTED值均为YES的SQLPLAN BASELINE对应的执行计划才会被ORACLE启用。
自动捕获:
对于重复执行的SQL,ORACLE会自动捕获其SQLPLAN BASELINE.
11gR2以上环境,ACCEPTED 不能被设为NO!只能改ENABLED的值。
需要联合使用dbms_spm.evolve_sql_plan_baseline与dbms_spm.alter_sql_plan_baseline来启用新的执行计划。
手动生成SQL PLAN BASELINE:
1. 生成原目标对应的SQL PLAN BASELINE
2. 加对加HINT的新的SQL生成SQLPLAN BASELINE,不过使用原来的SQL_HANDLE
3. DROP 旧的SQL PLAN BASELINE
自动捕获:
show parameter sql_plan;
alter session set optimizer_use_sql_plan_baselines =FALSE;
alter session set optimizer_capture_sql_plan_baselines=TRUE;
create table T52 as select * from dba_objects;
create index idx_t52 on T52(object_id);
execdbms_stats.gather_table_stats(ownname=>'TESTER