暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【精】10053事件追踪

最帅dba工作笔记 2018-07-18
651

10053事件

10053事件和10046件是dba的必备的分析工具,这两个方法都是非官方指定的,上一章我们说了说10046事件,10046事件是为了追踪sql,从而得到sql的执行计划,要比sql_trace容易把控追踪粒度。而10053的作用就是细化sql语句的每一个执行计划是怎么做的。

先说几点注意事项:

10053事件只是显示CBO优化器的执行结果,对于RBO是不支持的(CBO基于代价的优化器,RBO基于规则的优化器,10G之后废除了RBO)

10053事件生成的文件会在trace目录当中。生成的文件直接vi打开即可,不用tkprof显示。

10053有两个级别:

level 2:level2是level1的子集。

column statistics   列统计信息

single access paths   单独访问路基

join costs   关联成本

table joins considered   表连接解析

join methods considered(NL/MS/HA)   连接方法 Nested Loop,Merge Join,Hash Join

level 1:level 1显示包括level 2,且更加详细

parameters used by te optimizer    优化器使用参数

index statistics    索引统计信息

实验如下:

开启方式:

alter session set events '10053 trace name context forever,level 1';

alter session set events '10053 trace name context forever, level 2';

执行我们的要测试的sql

select * from scott.emp where empno<7600 order by sal;

关闭sql追踪

alter session set events '10053 trace name context forever ,level 1';

我们还是通过之前的sql语句找到对应的文件的位置:

 select d.value||'/'||lower(rtrim(i.instance, chr(0)))||'_ora_'||p.spid||'.trc' trace_file_name

   from

   (

    select p.spid     

      from sys.v$mystat m,sys.v$session s,sys.v$process p

     where m.statistic# = 1

       and s.sid = m.sid

       and p.addr = s.paddr

   ) p,

   (

   select t.instance

     from sys.v$thread  t,sys.v$parameter  v

    where v.name = 'thread'

      and ( v.value = 0 or t.thread# = to_number(v.value) )

   ) i,

   (

   select value from sys.v$parameter where name = 'user_dump_dest'

   ) d ;

vi /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_3148.trc

我们简单的看一下这个文件,在这个文件当中我们直接找到有用的位置。

predicate move-around是对sql语句的谓词进行分析和重写,将其更改为最和逻辑的SQL语句。

描述当前执行sql的绑定变量。

统计信息的情况

总体计划,这里显示了访问该表产生的代价。

当前sql语句的执行计划

日后的分析我会根据自己的学习进度逐渐分享给大家。

THAT'S ALL

BY CUI PEACE !!!


本文分享自微信公众号 - 最帅dba工作笔记,如有侵权,请联系 service001@enmotech.com 删除。
最后修改时间:2019-12-18 15:36:15
文章转载自最帅dba工作笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论