接上篇博文Oracle执行语句跟踪(1)--使用sql trace实现语句追踪,一旦我们通过会话追踪获取到超时事物的执行语句,就可以使用10046事件对语句进行追踪. 启用10046事件追踪的方式 SQL> alter session set events '10046 trace name context forever ,level 12' ;SQL> alter session set events '10046 trace name context off' ; 从上面语句可以看出追踪
10046事件是SQL_TRACE的扩展,被戏称为"吃了兴奋剂的SQL_TRACE" 有效的追踪级别: ① 0级:SQL_TRACE=FASLE ② 1级:SQL_TRACE=TRUE,这是缺省级别 ③ 4级:1级+绑定变量 ④ 8级:4级+等待事件 ⑤ 12级:4级+8级 对于4级的10046,若用tkprof格式化,则会隐藏每一点SQL语句在做什么以及怎么做
1.开启10046跟踪事件 alter session set events '10046 trace name context forever, level 12'; 如果想更容易标识trace文件,在开启事件之前,可以先设置trace的标识 alter session set tracefile_identifier='ybb'; 这样完成后,trace文件名称就会加上ybb 2.执行要跟踪的sql语句(对应的trace文件中有SQL的执行情况) select * from dba_user
1.使用sql_trace跟踪执行计划 1.1 当前session跟踪: alter session set sql_trace = true; //开始sql_trace alter session set tracefile_identifier = jytrace; //设定trace文件的标识符 alter session set sql_trace = false; //结束sql_trace 1.2 其他session跟踪:(根据其他session的sid, serial#定位,最常
我们可以通过视图v$session_wait来查看系统当前的等待事件,以及与等待事件相对应的资源的相关信息,从而可确定出产生瓶颈的类型及其对象. v$session_wait的p1.p2.p3告诉我们等待事件的具体含义,根据事件不同其内容也不相同,下面就一些常见的等待事件如何处理以及如何定位热点对象和阻塞会话作一些介绍. <1> db file scattered read DB 文件分散读取 (太多索引读,全表扫描-----调整代码,将小表放入内存)这种情况通常显示与全表扫描相关的等待.当全
[10046 SQL]conn username/passwordalter session set tracefile_identifier = 'id_10046';alter session set timed_statistics = true;alter session set statistics_level=all;alter session set max_dump_file_size = unlimited;alter session set "_rowsource_execu
在ORACLE当中有两个很常见的等待事件"SQL*Net message from client"与"SQL*Net message to client",两者有点区别,下面整理这方面的资料如下: SQL*Net message from client 表示服务端等待着Cilent发来请求让它处理,这时就会产生SQL*Net message from client等待事件. 而我们把这种Wait叫做空闲事件(ildel event),并不代表真正的Load