WEB开发网
开发学院数据库Oracle Oracle数据库11g:SQL计划管理(三) 阅读

Oracle数据库11g:SQL计划管理(三)

 2008-09-04 12:50:18 来源:WEB开发网   
核心提示: 直到SPM演变这个新的计划,否则,Oracle数据库11g:SQL计划管理(三)(4),这个计划不会通过语句的SQL计划基线被利用,当我执行函数DBMS_SPM.EVOLVE_SQL_PLAN_BASELINE时,这让DBA可以撤销SMB的默认行为,对于转换一个存储概要进入一耳光稳定的SQ

直到SPM演变这个新的计划,否则,这个计划不会通过语句的SQL计划基线被利用,当我执行函数DBMS_SPM.EVOLVE_SQL_PLAN_BASELINE时,Oracle 11g 将立即评估所有可用的SQL计划基线并性能得到提升的计划,这个函数返回一个CLOB类型的值,它列出了所有状态被修改为ACCEPTED的SQL计划基线,我在列表3.9值展示了这个计划演变的结果,为了说明无论何时执行这条sql语句时该SQL计划基线都将被使用到,我对该语句运行了一个执行计划并使用+NOTES指令格式化输出结果。

通过SQL调整顾问自动演变计划

Oracle 11g 也提供了SQL计划基线的自动演变,通过对每个选择的SQL语句执行SQL调整顾问程序实现,因为自动SQL调整(AST)批处理过程在每天夜间规律地执行时也会请求SQL调整顾问,AST也可以接受SQL配置文件,无论何时,配置文件能比当前的SQL计划基线提供更好的性能。

修改SQL计划基线的属性

Oracle 11g允许非常细粒度地控制捕获的SQL计划基线的状态和可用性,而不顾它们的起源,要说明这一点,我准备了三条SQL语句(查看SPM_3_2.sql,我用相似的注释标记它们以好识别),一旦执行,我直接从库缓存中捕获它们的执行计划,最后使用DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE将它们载入SMB中作为SQL计划基线,我应用函数DBMS_SPM.alter_SQL_PLAN_BASELINE修改每个SQL计划基线的各种属性,这些修改过的属性包括:

◆ENABLED :设置该属性的值为NO告诉Oracle 11g临时禁用某个计划,一个SQL计划必须同时标记为ENABLED和ACCEPTED,否则CBO将忽略它

◆FIXED:实际上一个SQL计划基线可能比一个执行计划更有参考意义,当这个属性对至少一个SQL计划基线的计划被设置为YES是,那个计划将是优化器唯一的选择,即使如果某个计划可能拥有更低的成本。这让DBA可以撤销SMB的默认行为,对于转换一个存储概要进入一耳光稳定的SQL计划基线特别有用,注意当一个新计划被添加到被标记为FIXED的SQL计划基线,该新计划不能被利用除非它申明为FIXED状态

上一页  1 2 3 4 5 6  下一页

Tags:Oracle 数据库 SQL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接