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 删除。




