使用sql优化顾问自动优化sql语句

来源:互联网 发布:网络创世纪uo服务端 编辑:程序博客网 时间:2024/04/27 04:41

oracle 11g中的自动sql优化顾问会自动分析awr中的数据,找到执行多次的高负荷sql语句。然后使用sql优化顾问来优化这些sql语句,如果需要,创建sql配置文件,并对它们进行充分测试。如果认为实施sql配置文件时有益的,就会自动执行,整个过程不需要干预。

1.启动自动sql优化顾问

begin
  dbms_auto_task_admin.enable(client_name => 'sql tuning advisor',
                              operation   => null,
                              window_name => null);
end;

/

2.配置自动sql优化顾问

查看当前配置

select parameter_name, parameter_value
  from dba_advisor_parameters
 where task_name = 'SYS_AUTO_SQL_TUNING_TASK'
   and parameter_name in ('ACCEPT_SQL_PROFILES',
                          'MAX_SQL_PROFILES_PER_EXEC',
                          'MAX_AUTO_SQL_PROFILES');
                          
结果                   
                         
PARAMETER_NAME                 PARAMETER_VALUE
------------------------------                   --------------------
ACCEPT_SQL_PROFILES            FALSE
MAX_SQL_PROFILES_PER_EXEC      20
MAX_AUTO_SQL_PROFILES          10000

改变sql_profile参数

begin
  dbms_sqltune.set_tuning_task_parameter(task_name => 'SYS_AUTO_SQL_TUNING_TASK',
                                         parameter => 'ACCEPT_SQL_PROFILES',
                                         value     => 'TRUE');
end;

接下来执行这个任务,这样就可以立即看到效果:

exec dbms_sqltune.execute_tuning_task(task_name=>'SYS_AUTO_SQL_TUNING_TASK');

3.查看自动sql优化的结果

variable auto_report clob;
begin
:auto_report:=dbms_sqltune.report_auto_tuning_task(
    type=> dbms_sqltune.TYPE_TEXT,
    level=>dbms_sqltune.LEVEL_TYPICAL,
    section=>dbms_sqltune.SECTION_ALL);
end;


SQL> set long 100000000
SQL> print :auto_report

AUTO_REPORT
--------------------------------------------------------------------------------
GENERAL INFORMATION SECTION
-------------------------------------------------------------------------------
Tuning Task Name                        : SYS_AUTO_SQL_TUNING_TASK
Tuning Task Owner                       : SYS
Workload Type                           : Automatic High-Load SQL Workload
Execution Count                         : 3
Current Execution                       : EXEC_553
Execution Type                          : TUNE SQL
Scope                                   : COMPREHENSIVE
Global Time Limit(seconds)              : 3600
Per-SQL Time Limit(seconds)             : 1200

AUTO_REPORT
--------------------------------------------------------------------------------
Completion Status                       : COMPLETED
Started at                              : 04/03/2016 09:00:14
Completed at                            : 04/03/2016 09:00:16
Number of Candidate SQLs                : 1
Cumulative Elapsed Time of SQL (s)      : 2

-------------------------------------------------------------------------------
There are no recommendations to improve the statements in the workload.

-------------------------------------------------------------------------------

这里因为是自己电脑上安装的库,自己装来测试的,所以没有什么查询负载,所以没什么建议(上面红色标注出来的),如果有建议的话,报告中会列出来要执行的代码。


                         


1 0