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