oracle SQL计划管理 4
1.1.1.1 修改SQL计划基线
创建SQL计划基线时,可以使用dbms_spm包下的alter_sql_plan_baseline过程来修改某些指定的参数。sql_handle和plan_name参数确定被修改的SQL计划基线。必须指定这两个参数中的一个。Attribute_name和attribute_value参数确定被修改的属性以及它们的新值。Attribute_name参数可以接受以下值。
Ø enabled:可以将这个属性设置为yes或no,但只有在设置为yes时,查询优化器才可以使用SQL计划基线。
Ø fixed:将这个属性设置为yes时,不会将新的执行计划添加到SQL计划基线中,结果就是之后它都不能进化。此外,如果SQL计划基线包含多个可接受的执行计划,固定的执行计划要比未固定的好。可以将这个值设置为yes或no。
Ø autopurge:这个属性设置为yes的SQL计划基线会在一段时间不使用后自动删除。可以将这个值设置为yes或no。
Ø plan_name:这个属性用来更改SQL计划名。它可以是不超过30个字符的任意字符串。
Ø description:这个属性用来为SQL计划基线附加描述。它可以是不超过500个字符的任意字符串。
下面的调用中禁用与执行计划关联的SQL计划基线:
ret := dbms_spm.alter_sql_plan_baseline(
sql_handle =>'SQL_492bdb47e8861a89'
plan_name =>'SQLPLAN 4kayv8zn8c6n93fdbb376',
attribute_name =>'enabled',
attribute_value =>'no');
1.1.1.2 激活SQL计划基线
查询优化器只有在初始化参数optimizer_usesql_plan_baselines设置为TRUE(这是默认值)时才会使用SQL计划基线。可以在会话或系统级别更改它。
1.1.1.3 移动SQL计划基线
dbms_spm包提供了多个过程用来在数据库之间移动SQL计划基线。比如,当SQL计划基线需要在开发环境或测试数据库中生成然后移动到生产环境中时。正如图11-10所示,会提供以下特性。
Ø 可以使用create_stgtab_baseline过程来创建临时表。
Ø 可以使用pack_stgtab_baseline函数将SQL计划基线从数据字典复制到临时表中。