Oracle的10046事件跟踪简述
通常情况下,10046事件是不被推荐的,因为如果你面前需要处理的这个实例的性能是比较差的话,10046事件追踪,可能会让你的实例性能更加糟糕。通常情况下我们按照实际的业务情况获取一段时间的AWR报告就可以基本解决一些常见的问题,比如哪些SQL占用了我们更多的资源,比较吃紧的资源争夺,内存问题,出现了锁资源等等。
但是当AWR没有办法定位问题的时候,我们就可以启动10046追踪,下面是对10046追踪的一个最小化例子,我们可以在本机执行一次该10046追踪,下面的红色字体是敲入的命令:
00:17:06 ChenZw> alter session set tracefile_identifier='10046';
会话已更改。
00:17:09 ChenZw> alter session set events '10046 trace name context forever, level 12';
会话已更改。
00:17:34 ChenZw> select count(1) from all_objects;
COUNT(1)
----------
76791
已选择 1 行。
00:17:54 ChenZw> alter session set events '10046 trace name context off';
会话已更改。
可以看到上面的执行,第一句是设置追踪标识符,第二句是开启追踪,第三句是执行的句子,然后最后一句是关闭10046追踪。执行完上面的语句之后,当退出当前会话的时候,Oracle就会将追踪的结果写入到trace文件目录中,在我本机是如下地址:d:\oracle\diag\rdbms\orcl\orcl\trace\orcl_ora_8732_10046.trc
这里,我们就可以使用Oracle提供的tkprof来格式化打开追踪文件,进行分析,如下:
C:\>tkprof d:\oracle\diag\rdbms\orcl\orcl\trace\orcl_ora_8732_10046.trc D:\10046.txt sys=no sort=prsela,exeela,fchela
TKPROF: Release 11.1.0.6.0 - Production on 星期三 7月 10 00:23:18 2013
Copyright (c) 1982, 2007, Oracle. All rights reserved.
执行完上面的命令之后,我们就可以在D:\目录下面找到10046.txt,通过分析10046.txt我们就可以对刚刚的执行语句进行优化了,10046扩展追踪,非常适合于对那些把很多业务逻辑写入到存储过程中的软件调优。