调用dbms_sqltune 调用包调优SQL


在日常运维中,碰到不容易看出问题的SQL,可以调用系统自带的包进行调优尝试:

1.创建自动调优任务:

DECLARE
my_task_name VARCHAR2(30);
my_sqltext CLOB;
BEGIN
select sql_fulltext into my_sqltext from v$sql where sql_id='************' and rownum=1;
my_task_name := DBMS_SQLTUNE.CREATE_TUNING_TASK(
sql_text => sqltext1,
user_name => 'wusx', 
scope => 'COMPREHENSIVE',
time_limit => 360,
task_name => 't1');
END;
/


2.执行自动调优任务:
exec dbms_sqltune.execute_tuning_task('t1');
3.检查调优任务状态:
SELECT task_name,status
FROM USER_ADVISOR_TASKS
WHERE task_name ='tuning_sql_test';
4.显示自动调优任务报告:
SET LONG 999999
SETserveroutput on size 999999
SET LINESIZE 100
SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK( 't1') from DUAL;
5.删除自动调优任务:
exec dbms_sqltune.drop_tuning_task('t1');