使用自动调优可以针对某个SQL文本、内存中的SQL id、awr快照中的SQL
创建调优任务
--SQLID
DECLARE
tune_task VARCHAR2(30);
tune_sql CLOB;
BEGIN
tune_task := DBMS_SQLTUNE.CREATE_TUNING_TASK(
sql_id => 'ddg5rqxxujh1u'
,plan_hash_value => '2391074787'
,task_name => 'cx_fa_detail_list_prc_new_pg'
,description => 'cx_fa_detail_list_prc_new_pg'
);
END;
/
--不在内存中的
DECLARE
tune_task VARCHAR2(30);
tune_sql CLOB;
BEGIN
tune_task := DBMS_SQLTUNE.CREATE_TUNING_TASK(
sql_id => '331xvbnz4pcnp'
,begin_snap => 58387
,end_snap => 58413
,task_name => 'CUX_FA_CHANGE_TEMP'
);
END;
/
执行任务
begin
dbms_sqltune.execute_tuning_task(task_name => 'cux_fa_detail_list_prc_new_pkg');
dbms_sqltune.execute_tuning_task(task_name => 'CUX_FA_CHANGE_TEMP');
end;
查看任务
select dbms_sqltune.report_tuning_task('CUX_FA_CHANGE_TEMP') from dual;
管理概要文件
概要文件就是oracle给你固定的执行计划,sql执行的时候,优先使用概要文件的执行计划。
--查看系统概要文件
SELECT * FROM dba_sql_profiles;
--创建
execute dbms_sqltune.accept_sql_profile(task_name => 'staName61431', task_owner => 'APPS', replace => TRUE);
--查看是否用了概要文件
SELECT * FROM v$sql v
WHERE v.SQL_PROFILE IS NOT NULL ;
--禁用 && 启用
BEGIN
DBMS_SQLTUNE.ALTER_SQL_PROFILE(
name => 'SYS_SQLPROF_017920793b1b0003',
attribute_name => 'STATUS',
value => 'DISABLED');--启用就是ENABLE
END;
/
--删除概要文件
BEGIN
DBMS_SQLTUNE.drop_sql_profile('SYS_SQLPROF_01792101551e0004');
END;
/