一、10046事件的级别
1、1:相当于sql_trace=true
2、4:在1级别的基础上多了一个绑定变量[bind=true]
3、8:在1级别的基础上多了一个等待事件[wait=true]
4、12:包含级别1、4、8级别的内容及默认的一个统计信息的trace
5、16:多了一个执行计划的执行次数
6、32:不收集执行计划的统计信息
7、64:自适应的一个统计
二、在打开10046事件前,要先设置好如下参数
1、timed_statistics:时间参数
alter session set timed_statistics=true;
2、max_dump_file_size:dump文件最大大小
alter session set max_dump_file_size=unlimited
3、tracefile_identifier:尾部标识符
alter session set tracefile_identifier='itpux';
4、statistics_level:收集信息级别
alter session set statistics_level=all;
5、查看当前会话的跟踪文件
select * from v$diag_info where name='Default Trace File';
三、10046常用方法—第一种
首先操作用户要有相应的权限才可操作
grant alter session to user;
1、打开10046跟踪
alter session set events '10046 trace name context forever,level 12';
2、在pfile/spfile加入
event=10046 trace name context forever,level 12;
3、关闭10046跟踪
alter session set events '10046 trace name context off';
四、10046常用方法—第二种
1、oradebug setmypid
2、oradebug event 10046 trace name context forever,level 12;
3、oradebug event 10046 trace name context off;
4、oradebug tracefile_name
五、10046常用方法—第三种
1、exec dbms_system.set_ev(sid,serial#,10046,level,user_name);
2、关闭跟踪
exec dbms_system.set_ev(sid,serial#,10046,0,'itpux');
六、10046级别4的案例(本地会话)
1、定义变量
variable name varchar2(20);
execute :name:=‘itupx1004604’;
2、设置10046跟踪
alter session set events '10046 trace name context forever,level 4';
3、SQL查询
select id,name,cardid from itpux_member where name=:name;
4、关闭跟踪
alter session set events '10046 trace name context off';
5、查询当前跟踪文件
select * from v$diag_info where name='Default Trace File';
七、跟踪其它会话
1、获取sid,serial#,只有获取后能知道跟踪哪个
select * from vKaTeX parse error: Expected 'EOF', got '#' at position 55: …lect sid,serial#̲ from vsession where sid=XXX;–通过上述的SID
2、用sys用户跟踪对应会话(这里只是设置跟踪等级)
exec dbms_system.set_ev(141,425,10046,12,'用户名');
设置跟踪
exec dbms_system.set_sql_trace_in_session(141,425,true);
3、在跟踪用户下执行SQL
select id,name from itpux_member where name='itpux1334232';
4、结束跟踪
exec dbms_system.set_sql_trace_in_session(141,425,false);
exec dbms_system.set_ev(141,425,10046,0,‘用户名’);
5、查询当前跟踪文件
select * from v$diag_info where name='Default Trace File';
八、跟踪已运行的会话
1、先获得SPID(OS级别的)
2、根据spid进入跟踪
oradebug setospid XXX
3、设置10046事件
oradebug event 10046 trace name context forever,level 12
4、结束跟踪
oradebug event 10046 trace name context off
九、在pfile/spfile设置10046事件
event=10046 trace name context forever ,level 12;
本文详细介绍了Oracle数据库中10046事件的各个级别,包括1、4、8、12和16级别,并讲解了开启10046事件所需的参数设置。此外,提供了三种启用10046事件的方法,包括通过GRANT权限、使用ORADEBUG命令以及DBMS_SYSTEM.set_ev过程。还通过实际案例展示了如何对本地会话和远程会话进行跟踪,以及如何在pfile/spfile中设置10046事件进行持久化追踪。
208

被折叠的 条评论
为什么被折叠?



