oracle 10046当前会话

**设置追踪标识符
alter session set tracefile_identifier='10046';**

开启跟踪

alter session set events '10046 trace name context forever, level 12';

执行语句

select count(*) from all_objects;

关闭10046追踪

alter session set events '10046 trace name context off';

当退出当前会话的时候,Oracle就会将追踪的结果写入到trace文件目录

使用Oracle提供的tkprof来格式化打开追踪文件,进行分析,如下:

tkprof ora_2229_10046.trc 888.trc
vim 888.trc

其中: 在打开10046时间的SQL Trace之前,要先设置好下面几个参数。

timed_statistics

这个参数决定了是否收集与时间相关的统计信息,如果这个参数为FALSE的话,那么SQL Trace的结果基本没有多大的用处,默认情况下这个参数设置为TRUE。

max_dump_file_size

dump文件的大小,也就是决定是否限制SQL Trace文件的大小,在一个很忙的系统上面做SQL Trace的话可能会生成很多的信息,因此最好在会话级别将这个参数设置成unlimited。

tracefile_identifier

给Trace文件设置识别字符串,这是个非常有用的参数,设置一个易读的字串能更快的找到Trace文件。

10046事件是对sql_trace的增强,可分4个级别,具体如下:

1)level 1:等价于sql_trace

2)level 4:level 1+绑定值

3)level 8:level 1+等待事件跟踪

4)level 12:等价于level 1+level 4+level 8

oracle 10046其他用户会话

授权

conn /as sysdba
grant execute on dbms_system to chen;

首先查看要跟踪用户的sid,serial#

select sid,serial#,username from v$session where username is not null;

开启跟踪

SQL>execute sys.dbms_system.set_ev(7,36,10046,12,'');

执行语句

create table aa(id number;
alter table aa add(sal number);
drop table aa;

关闭10046追踪

SQL>execute sys.dbms_system.set_ev(7,36,10046,0,'');

当退出当前会话的时候,Oracle就会将追踪的结果写入到trace文件目录

使用Oracle提供的tkprof来格式化打开追踪文件,进行分析,如下:

tkprof ora_2229_10046.trc 888.trc
vim 888.trc

文章来源:[[chenoracle]](http://blog.itpub.net/29785807/viewspace-1713415/)

最后修改:2022 年 02 月 19 日
如果觉得我的文章对你有用,请随意赞赏