SQL Profile主要是Oracle 10g的工具
可分为两种类型:
1.Automatic 类型
1). 创建自动调整任务
declare
my_task_name varchar2(30);
my_sqltext CLOB;
begin
my_sqltext := 'SQL_TEXT-XXXX'; #sql文本
my_task_name := dbms_sqltune.create_tuning_task(
sql_text => my_sqltext,
user_name => 'XXXXX', #用户名
scope => 'COMPREHENSIVE', #调整范围
time_limit => 60, #调整时限
task_name => 'my_sql_tuning_task', #任务名称
description => 'Task to tune a query on table XXXX'); #说明
end;
/
2).执行自动调整任务
begin
dbms_sqltune.execute_tuning_task(task_name => 'my_sql_tuning_task' );
end;
/
3).查看自动调整任务的调整结果
select dbms_sqltune.report_tuning_task('my_sql_tuning_task') from dual;
4).使调整结果生效
execute dbms_sqltune.accept_sql_profile(task_name => 'my_sql_tuning_task_2',task_owner => 'TEST',replace => TRUE);
2.Manual类型
如现有一条SQL需要优化,但是不能改变其sql_text:
1).从MOS上下载coe_xfr_sql_profile.sql,此脚本用于指定SQL的执行计划的Outline Data的Hint部分,来创建Manual类型的SQL profile。
2). 跑coe_xfr_sql_profile.sql
SQL> @coe_xfr_sql_profile.sql
输入:需要优化的SQL_ID和其PLAN HASH VALUE
输出:得到一个脚本
3). 再跑coe_xfr_sql_profile.sql
SQL> @coe_xfr_sql_profile.sql
输入:针对SQL加了Hint达到优化效果的SQL_ID和其PLAN HASH VALUE
输出:得到一个脚本