Automatic SQL tuning and SQL Profile

Automatic SQL Tuning process in Oracle

Automatic SQL tuning and SQL Profile

1. 察看是否启用SQL TUNING ADVISOR

select client_name,status from DBA_AUTOTASK_CLIENT; 

select name,currently_used,last_usage_date,description from dba_feature_usage_statistics where name ='Automatic SQL Tuning Advisor'

2.察看任务执行情况

select task_name,status,to_char(execution_end,'DD-MON-YY HH24:MI') from 
dba_advisor_executions where task_name='SYS_AUTO_SQL_TUNING_TASK' order by 

execution_end;

3.生成自动优化任务

declare

my_task_name VARCHAR2(30);

my_sqltext CLOB;

begin

my_sqltext := ‘<调优的SQL语句文本>’;

my_task_name := DBMS_SQLTUNE.CREATE_TUNING_TASK(

sql_text => my_sqltext,

user_name => ‘<用户名>’,

scope => ‘COMPREHENSIVE’,

time_limit => 60,

task_name => ‘task1’,

description => ‘Task to tune a query);

end;

/


4.执行自动优化任务

begin

DBMS_SQLTUNE.EXECUTE_TUNING_TASK( task_name => ‘task1’);

end;

/

5. 查看Oracle产生的自动优化报告

DECLARE

my_sqlprofile_name VARCHAR2(30);

begin

my_sqlprofile_name := DBMS_SQLTUNE.ACCEPT_SQL_PROFILE (

task_name => ‘task1’,

name => ‘plan_test’);

end;

/


6. 运行需要调优的语句,察看优化后的结果, 计划使用了sql profile plan_test

ACCEPT_SQL_PROFILES  is true, the database accepts the SQL profile. when you run the sql, it will use the new plan to get data.

7.SQL Profiling

Automatic SQL tuning and SQL Profile


alter system flush shared_pool;

select * from dba_sql_profiles;

SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK('task1') FROM DUAL;

8. Usefull views

           SELECT * FROM USER_ADVISOR_TASKS T WHERE TASK_NAME='task_name';

            SELECT * FROM DBA_SQLTUNE_STATISTICS
            SELECT * FROM DBA_SQLTUNE_BINDS
            SELECT * FROM DBA_SQLTUNE_PLANS WHERE TASK_ID=&id