oracle11g:自动SQL优化

Oracle 11g引入了自动SQL优化。这本书的许多章节都详细涵盖了这个主题,因此本节只作概述。Oracle 11g根据AWR(Automatic Workload Repository,自动负载信息库)的统计信息针对产生较大性能影响的SQL语句运行SQL 优化顾问(SQL Tuning Advisor)。AWR的统计信息用来生成一个SQL语句列表并根据它们过去一周对系统性能的影响进行排序,这个SQL列表会自动排除所有被断定为不太容易优化的SQL语句,比如并行查询、DML、DDL和任何由并发问题引起的性能问题。SQL优化顾问生成优化SQL的建议,这类建议中可能有SQL配置文件(Profile)(利用统计信息)。当建议使用SQL配置文件的时候,这些配置文件会进行性能测试,如果测试结果显示至少有三倍的改进,并且SQL优化任务参数ACCEPT_SQL_PROFILES设置为true,这个建议就会被接受;如果ACCEPT_SQL_PROFILES被设置为false,这个建议会被报告。您也可以针对任何查询单独执行这些步骤。
通过调用dbms_auto_task_admin程序包的enable和disable过程就可以控制自动SQL优化任务的执行。当启用时,SQL 优化顾问就在定义好的维护时间窗口里运行,默认的维护时间窗口参考下面的表1-2。
表1-2  Oracle 11g默认维护窗口

窗 口 名 称 描    述
MONDAY_WINDOW 星期一晚上10点开始到第二天临晨2点
TUESDAY_WINDOW 星期二晚上10点开始到第二天临晨2点
WEDNESDAY_WINDOW 星期三晚上10点开始到第二天临晨2点
THURSDAY_WINDOW 星期四晚上10点开始到第二天临晨2点
FRIDAY_WINDOW 星期五晚上10点开始到第二天临晨2点
SATURDAY_WINDOW 星期六晚上10点开始并持续20小时
SUNDAY_WINDOW 星期日晚上10点开始并持续20小时

 

 
启用和禁用自动SQL优化:
exec dbms_auto_task_admin.enable(client_name => 'sql tuning advisor',operation =>
NULL, window_name => NULL);
 
exec dbms_auto_task_admin.disable(client_name => 'sql tuning advisor', operation
=> NULL,window_name => NULL);
配置自动SQL优化:
exec dbms_sqltune.set_tuning_task_parameter (task_name =>
'SYS_AUTO_SQL_TUNING_TASK', parameter => 'ACCEPT_SQL_PROFILES', value => 'TRUE');
以下是控制自动SQL优化任务的dbms_sqltune选项:
●         INTERRUPT_TUNING_TASK:中断正在执行的任务,得到中间结果并正常退出。
●         RESUME_TUNING_TASK:恢复先前被中断的任务。
●         CANCEL_TUNING_TASK:取消正在执行的任务,清除任务的所有结果。
●         RESET_TUNING_TASK:重置正在执行的任务,清除任务的所有结果并返回到其初始状态。
●         DROP_TUNING_TASK:删除一个任务,清除所有与该任务相关的结果。
第5章将展示如何在企业管理器中通过简单的“点击运行”来使用自动SQL优化功能。

你可能感兴趣的:(oracle)