10046和10053使用方法

1.10046 是用来干嘛的?  跟踪一个sql的,看一个sql的等待事件。

2. 什么时候才要用 10046 呢? (不能抛弃 10046)
①.查看sql等待事件;
②.执行计划是真的;
③.发现 隐含的递归调用的sql;(内部的sql)
   select xxx from test where id=1000;  ---1秒
   delete  test where id=1000           ---1分钟
④.研究数据库

3.用10046跟踪一个sql的方法

方法一: 
SQL> oradebug setmypid
SQL> alter session set events '10046 trace name context forever ,level 12' ;   ++开启当前会话的跟踪
SQL> select * from emp;                                                        ++执行需要跟踪的sql
SQL> alter session set events '10046 trace name context off' ;                 ++关闭当前回环的跟踪
SQL> oradebug tracefile_name

方法二:

SQL> oradebug setmypid /setorapid/setospid/setpname
SQL> oradebug event 10046 trace name context forever,lever n;
SQL> select * from emp;                                       
SQL> oradebug event 10046 trace name context off;
SQL> oradebug tracefile_name

要想 10046 trace 出来有等待事件必须 清空buffer cache
alter system flush buffer_cache; 


二、10053  trace

10053 是用来干嘛的? 
1.研究cbo(为啥走索引,为啥走全表扫描)看最终sql的 final怎么走的;
2.10053 可以用来检查 cbo 的bug, cbo的 新特征
 
用1005跟踪一个sql的方法
SQL> oradebug setmypid
SQL> alter session set events='10053 trace name context forever,level 1';
SQL> select * from emp;
SQL> alter session set events '10053 trace name context off';
SQL> oradebug tracefile_name


你可能感兴趣的:(10053,11046)