mysql 固定执行计划,Oracle - SPM固定执行计划

1. 通过dbms_xplan.display_cursor查看指定sql都有哪些执行计划

SQL> select * from table(dbms_xplan.display_cursor('&sql_id',null,'TYPICAL PEEKED_BINDS'));

2. 查询该sql的历史执行情况

SQL> col snap_id for 99999999

SQL> col date_time for a30

SQL> col plan_hash for 9999999999

SQL> col executions for 99999999

SQL> col avg_etime_s heading 'etime/exec' for 9999999.99

SQL> col avg_lio heading 'buffer/exec' for 99999999999

SQL> col avg_pio heading 'diskread/exec' for 99999999999

SQL> col avg_cputime_s heading 'cputim/exec' for 9999999.99

SQL> col avg_row heading 'rows/exec' for 9999999

SQL> select * from(

select distinct

s.snap_id,

to_char(s.begin_interval_time,'mm/dd/yy_hh24mi') || to_char(s.end_interval_time,'_hh24mi') date_time,

sql.plan_hash_value plan_hash,

sql.executions_delta executions,

(sql.elapsed_time_delta/1000000)/decode(sql.executions_delta,null,1,0,1,sql.executions_delta) avg_etime_s,

sql.buffer_gets_delta/decode(sql.executions_delta,null,1,0,1,sql.executions_delta) avg_lio,

sql.disk_reads_delta/decode(sql.executions_delta,null,1,0,1,sql.executions_delta) avg_pio,

(sql.cpu_time_delta/1000000)/decode(sql.executions_delta,null,1,0,1,sql.executions_delta) avg_cputime_s,

sql.rows_processed_total/decode(sql.executions_delta,null,1,0,1,sql.executions_delta) avg_row

from dba_hist_sqlstat sql, dba_hist_snapshot s

where sql.instance_number =(select instance_number from v$instance)

and sql.dbid =(select dbid from v$database)

and s.snap_id = sql.snap_id

and sql_id = trim('&sql_id') order by s.snap_id desc)

where rownum <= 100;

3. 绑定执行计划

从前两步中可以看到该sql有两条执行计划,假如plan_hash_value为’2214001748’才是对的,而此时数据库选择的是另一条执行计划,我们可以通过执行以下function去将执行计划固定为我们想要的。

SQL> var temp number;

SQL> begin

:temp := dbms_spm.load_plans_from_cursor_cache(sql_id=>'66a4184u0t6hn', plan_hash_value=>2214001748);

end;

/

--转自

Oracle - SPM固定执行计划(一)

https://www.cnblogs.com/ddzj01/p/11365541.html

Oracle - SPM固定执行计划(二)

https://www.cnblogs.com/ddzj01/p/11377049.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值