设为首页 收藏本站
查看: 681|回复: 0

[经验分享] Oracle执行计划之历史回归

[复制链接]

尚未签到

发表于 2018-9-5 10:38:57 | 显示全部楼层 |阅读模式
  案例----如果我想查询某一个时间点: 2018-01-12 9:00--9:12之间,某个RAC节点,某一个SQL的执行计划,如何处理?
  DISPLAY_AWR参数只有四种,分别为:sql_id、plan_hash_value、db_id、format,并没有时间与节点inst_id的选项。
  DISPLAY_CUSOR有可能遇见sql执行计划被刷出内存的情况。
  方法:
  1 先通过DBMS_XPLAN.DISPLAY_AWR查看整个AWR中SQL语句的执行计划
  ---注意这里前提是AWR里要有相关SQL信息
  2  查询AWR中具体有几种执行计划
  select * from table(dbms_xplan.display_awr(db_id=>'',sql_id=> ''))
  ---where   plan_table_output  like ('Plan hash value%');
  此步已经可以具体通过执行计划查阅问题,找出有问题的执行计划。
  3  依据时间查看 SNAP_ID
  select dbid,snap_id,instance_number,begin_interval_time,end_interval_time
  from dba_hist_snapshot where begin_interval_time >=to_date('2018-01-12 09:00:00', 'yyyy-mm-dd hh24:mi:ss')  order by begin_interval_time
  ---匹对对应时间的SNAP_ID
  4 根据 2、3步的结果查询出对应时间点SQL的执行计划:
  select a.* from (select distinct dbid,sql_id, plan_hash_value from dba_hist_sqlstat
  where sql_id = '' and snap_id = xxx and instance_number = 3) b,table(dbms_xplan.display_awr(db_id=> '',sql_id=> b.sql_id,plan_hash_value=> b.plan_hash_value)) a;
  ----当然在同一个SNAP_ID里也可能查询出多个执行计划,如果是这种情况,就选择有问题的则行
  ---以不同SNAP中查看同一SQL的运行情况:
  select ss.snap_id, ss.instance_number node, begin_interval_time, sql_id, plan_hash_value, nvl(executions_delta,0) execs, (elapsed_time_delta/decode(nvl(executions_delta,0),0,1,executions_delta))/1000000 avg_etime(buffer_gets_delta/decode(nvl(buffer_gets_delta,0),0,1,executions_delta)) avg_lio
  from DBA_HIST_SQLSTAT S, DBA_HIST_SNAPSHOT SS
  where sql_id = ''
  and ss.snap_id = S.snap_id
  and ss.instance_number = S.instance_number
  and executions_delta > 0
  order by 1, 2, 3
  其实如果想要更精确的定位时间,可以通过DBA_HIST_SNAPSHOT,V$SQLAREA
  sql_id,snap_id,time,sql_text来进行针对关联查询。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-563477-1-1.html 上篇帖子: Oracle-day03 下 下篇帖子: Oracle-day04 上
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表