10046事件

Posted hhaahh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了10046事件相关的知识,希望对你有一定的参考价值。

使用10046事件可以追踪数据库或者会话层面的sql执行情况,包括解析、执行、抓取的方式,耗用的资源、CPU时间,等待事件等影响sql执行的信息

下面就本人对其的理解和操作备注下,方便以后的复习,也希望其他朋友能够多多指点

一、启动10046前的检查

10046可以在会话层面和数据库系统层面执行;

1、必须确保timed_statistics为TRUE,这个参数可以在会话级上进行修改。当此会话为false时,收集的数据比较有限,所以必须设置相关参数来完善跟踪文件内容;

10046 trace相关参数

1.          timed_statistics

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

show parameter timed_statistics ;

ALTER SESSION SET timed_statistics=true ;

2.          max_dump_file_size

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

show parameter max_dump_file_size;

ALTER SESSION SET max_dump_file_size=unlimited ;

3.          tracefile_identifier

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

show parameter  tracefile_identifier;

ALTER SESSION SET tracefile_identifier=’my_trace_session’;

4.          diagnostic_dest

diagnostic_dest这个参数11g新增的,用于控制存放trace文件与core文件的路径,默认是$ORACLE_BASE目录。

show parameter diagnostic_dest; 命令用于查看其目录 

5.          user_dump_dest

user_dump_dest参数指定用户进程trace文件目录。

show parameter user_dump_dest ; 命令可以产看其目录

alter system set user_dump_dest =‘/U01/app/oracle/diag/rdbms/masterdb/masterdb/trace‘ scope=both; 命令用于更改其目录

6.          background_dump_dest

background_dump_dest参数用于后台进程产生的trace文件存储目录下。

show parameter background_dump_dest ; 命令可以查看其目录

alter system set background_dump_dest=‘/U01/app/oracle/diag/rdbms/masterdb/masterdb/trace‘ scope=both; 命令用于更改其目录


2、为了确保trace输出能够完整进行,还要调整此会话对trace文件大小的限制,一般将此限制取消,即将max_dump_file_size设置为UNLIMITED,或者设置为一个很大的阙值。
在满足了上述条件后,就可以启用10046event对会话进行后台跟踪了。

二、开始跟踪:

select distinct sid from v$mystat;---查看当前会话的sid

alter session set events "10046 trace name context forever, level 1";

level 1:跟踪sql语句,包括解析、执行、提取、提交和回滚等。
level 4:包括变量的详细信息
level 8:包括等待事件
level 12:包括绑定变量与等待事件
其中,level 1相当于打开了sql_trace;

select b.spid,a.sid,a.serial#,a.machine from v$session a,v$process b where a.paddr =b.addr  and a.sid = ‘159‘---查询出的spid为trace文件的文件尾数字,如:spid=333,trace文件名:orcl_ora_333.trc;

三、结束事件:

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

然后在系统命令中执行tkprof,转换trace文件为易读文件;







以上是关于10046事件的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 10046事件 介绍 ---tkprof

10046事件

经典10046剖析案例-1

Oracle 10046跟踪事件使用方法

深入理解Oracle调试事件:10046事件详解

Oracle 11g 查看执行计划之10046事件