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

/*使用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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值