10053、10046跟踪事件学习

        10053是用来理解CBO工作机制的工具,如果辅以10046事件查看执行计划,那么整个sql语句从解析到执行的过程都一目了然。

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

--关闭
alter session set events '10053 trace name context off';

 

10046event的追踪级别大致有:

level 1:跟踪sql语句,包括解析、执行、提取、提交和回滚等。

level 4:包括变量的详细信息

level 8:包括等待事件

level 12:包括绑定变量与等待事件

其中,level 1相当于打开了sql_trace

select sid, SERIAL#,username from v$session;--267,996是sid, SERIAL#

使用sql_trace
SQL> alter session set sql_trace=true;  --开启会话级别的sql_trace
SQL> execute dbms_system.set_sql_trace_in_session(267,996,true); 
PL/SQL 过程已成功完成。        -- 启动其他会话的SQL_TRACE
SQL> alter system set sql_trace=false; 
--关闭系统级别的sql_trace
SQL> alter session set sql_trace=false;  --关闭会话级别的sql_trace

SQL> execute dbms_system.set_sql_trace_in_session(267,996,false);   -- 关闭其他会话的SQL_TRACE

要知道trace的文件名是哪个,可以加后缀:

alter session set tracefile_identifier='look for me';


使用10046 事件跟踪

SQL> alter session set tracefile_identifier='gg_test';

SQL> alter session set events '10046 trace name context forever ,level 12' ;    会话已更改。--开启本会话的10046事件

SQL> exec dbms_monitor.session_trace_enable(267,996,waits=>true,binds=>true);   -- 开启其他会话的10046事件

SQL> alter session set events '10046 trace name context off' ;--关闭本会话的10046事件

SQL> exec dbms_monitor.session_trace_disable(267,996);-- 关闭其他会话的10046事件

往往trace的文件看不懂,需要Tkprof转一下:

D:\oracle\product\10.2.0\admin\orcl\udump>tkprof orcl_ora_3612.trc 3612.txt  sys=no  AGGREGATE=no

AGGREGATE决定是否将多个执行相同语句分析的结果合并。

sys=no  不显示系统产生的sql.

你可能感兴趣的:(session,user,table,insert,events)