您的位置:首页 > 数据库

使用SQL调优顾问的关键在于获取需要优化的SQL在执行时对应的sql id

2017-12-28 15:21 302 查看
/*使用SQL调优顾问的关键在于获取需要优化的SQL在执行时对应的sql id*/

/*步骤1,查询SQL的ID,方法1:*/
/*1.创建快照*/
exec dbms_workload_repository.create_snapshot();
/*2.执行几次SQL语句或在应用中刷新几次加载缓慢的模块*/
/*3.再次创建快照*/
exec dbms_workload_repository.create_snapshot();
/*4.将两个快照间的AWR报告打印出来,并在SQL Statistics模块查找最耗时的SQL对应的sql id
AWR报告生成的方法:在cmd命令行中登录数据库后执行以下脚本*/
@?/rdbms/admin/awrrpt.sql

/*步骤1,查询SQL的ID,方法2:*/
select t.SQL_ID,t.SQL_TEXT,t.LAST_ACTIVE_TIME
from v$sql t
where t.SQL_TEXT like '%employees_tune%'
order by t.LAST_ACTIVE_TIME desc;

/*步骤2,创建SQL调优任务*/
var tuning_task varchar2(100);
declare
l_sql_id v$session.PREV_SQL_ID%type;
l_tuning_task varchar2(100);
begin
---此处l_sql_id变量需要填写以上任意一种方法获取的SQL ID
l_sql_id :='g3pz256nc394n';
l_tuning_task := dbms_sqltune.create_tuning_task(sql_id => l_sql_id);
:tuning_task := l_tuning_task;
dbms_sqltune.execute_tuning_task(l_tuning_task);
dbms_output.put_line(l_tuning_task);
end;
/

/*步骤3,打印调优建议信息,注意索引的建议新和sql profile*/
print tuning_task;
set long 100000;
set lines 2000;
select dbms_sqltune.report_tuning_task(:tuning_task) from dual;

/*步骤4,如果建议信息中有建议的索引,添加索引即可,如果出现sql_profile,可以更换SQL语句的sql profile,更换语句如下:*/
exec dbms_sqltune.accept_sql_profile(task_name => :tuning_task,replace => true,force_match => true);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐