10046是一个Oracle的内部事件(event),通过设置这个事件可以得到Oracle内部执行系统解析、调用、等待、绑定变量等详细的trace信息,对于分析系统的性能有着非常重要的作用。
设置10046事件的不同级别能得到不同详细程度的trace信息,下面就列出各个不同级别的对应作用:
0 | 0000 | 无输出 |
1 | 0001 | 输出 ****,APPNAME(应用程序名),PARSING IN CURSOR,PARSE ERROR(SQL解析),EXEC(执行),FETCH(获取数据),UNMAP,SORT UNMAP(排序,临时段),ERROR,STAT(执行计划),XCTEND(事务)等行 |
2 | 0011 | 与等级1完全一样 |
4 | 0101 | 包括等级1的输出,加上BIND行(绑定变量信息) |
8 | 1001 | 包括等级1的输出,加上WAIT行(等待事件信息) |
12 | 1101 | 输出等级1、等级4以及等级8的所有信息 |
等级1的10046 trace被视为是普通的SQL Trace,而等级4、等级8以及等级12则被称为Extended SQL Trace,Extended SQL Trace里面包括了最有用的WAIT信息,因此在实际中也是用的最多的。
?
与SQL Trace相关的参数
在打开10046时间的SQL Trace之前,要先设置好下面几个参数。
要在当前会话修改上述参数很简单,只要使用下面的命令即可:
1
2
3
|
ALTER ?SESSION? SET ?timed_statistics= true
ALTER ?SESSION? SET ?max_dump_file_size=unlimited
ALTER ?SESSION? SET ?tracefile_identifier='my_trace_session
|
当然,这些参数可以在系统级别修改的,也可以加载init文件中或是spfile中,让系统启动时自动做全局设置。
要是在系统运行时动态的修改别的会话的这些参数就需要借助DBMS_SYSTEM这个包了,设置方法如下:
1
2
3
4
5
6
7
8
9
|
SYS.DBMS_SYSTEM.SET_BOOL_PARAM_IN_SESSION(
免责声明: 本文仅代表作者个人观点,与爱易网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
|