使用DBMS_SQLTUNE优化单个SQL
使用DBMS_SQLTUNE优化单个SQL
##快速上手版##
#1 创建一个优化任务
根据问题SQL的SQL_ID号创建一个优化任务
DECLARE
my_task_name VARCHAR2(30);
BEGIN
my_task_name := DBMS_SQLTUNE.CREATE_TUNING_TASK(
SQL_ID => '17rsyf2zcmpcw',
scope => 'COMPREHENSIVE',
time_limit => 3600,
task_name => 'tunning_task_ddw7j6yfnw0vz',
description => 'Task to tune a query on 17rsyf2zcmpcw');
END;
/
#2 查询优化任务
SELECT TASK_NAME
FROM DBA_ADVISOR_LOG
WHERE task_name='tunning_task_ddw7j6yfnw0vz'
#3 执行优化任务
BEGIN
DBMS_SQLTUNE.EXECUTE_TUNING_TASK( task_name => 'tunning_task_ddw7j6yfnw0vz' );
END;
/
#4 检查优化任务状态
SELECT status
FROM USER_ADVISOR_TASKS
WHERE task_name = 'tunning_task_ddw7j6yfnw0vz';
#5 查看优化结果
SET LONG 10000;
SET LONGCHUNKSIZE 1000;
SET LINESIZE 100;
SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK('tunning_task_ddw7j6yfnw0vz') FROM DUAL;
#6 修改优化任务
--sql tunning任务创建后,也可以修改参数
BEGIN
DBMS_SQLTUNE.SET_TUNING_TASK_PARAMETER(
task_name => 'tunning_task_ddw7j6yfnw0vz',
parameter => 'TIME_LIMIT', value => 1800);
END;
/
#7 删除优化任务
EXEC DBMS_SQLTUNE.DROP_TUNING_TASK('tunning_task_ddw7j6yfnw0vz');

浙公网安备 33010602011771号