设为首页 加入收藏

TOP

oracle10046事件(一)
2015-07-24 12:12:40 来源: 作者: 【 】 浏览:127
Tags:oracle10046 事件

10046 事件
Oracle 10046是一个Oracle内部事件。最常用的是在Session级别设置sql_trace(alter session set sql_trace=true)即是开启了级别为1
的10046调试事件。当设置了10046事件之后,Oracle 将产生一个dump文件。通过得到的dump文件进行进一步分析,可以得到Oracle 内部执行系统解析、调用、等待、绑定变量等详细的trace信息,对于分析系统的性能有着举足轻重的作用。
当SQL语句操作出现性能问题时,我们可以用SQL_TRACE 或者10046事件进行跟踪是最合适的。 如果是数据库整体性能下降,就需要使用statspack或者AWR对数据库进行分析。

1.10046事件的相关参数

该事件需要设置一些参数以控制dump文件的输出:
TIMED_STATISTICS
用于控制计时信息,可以设定为true和false。当设定为true时,计时信息将会被添加到trace文件中。

MAX_DUMP_FILE_SIZE
用于控制trace文件的最大尺寸。当使用10046事件时,建议将该参数设定为unlimited。

USER_DUMP_DEST
用于设定trace文件写入到哪个文件目录

STATISTICS_LEVEL
用于控制统计信息的收集度。此参数有3个选择,baisc,typical,all。
basic:仅收集满足trace所需的最基本的信息,象Timed statistics,Object level statistics,以及一些advisory会被忽略。
typical:此为缺省值。此设置将在basic的基础上增加一些额外的统计信息,象操作系统耗用时间的统计信息,执行计划的统计信息都会被收集
all:当设置为all时,所有与该session相关的信息全部会被收集。

TRACEFILE_IDENTIFIER
用于设置识别Trace文件的字符串,便于更快捷的找到生成的Trace文件。
以上参数可以基于系统级别以及会话级别进行修改。
ALTER SESSION/SYSTEM SET timed_statistics=true
ALTER SESSION/SYSTEM SET max_dump_file_size=unlimited

ALTER SESSION SET tracefile_identifier='trace_sql_example' -->仅session级别

2. 10046调试事件的等级

10046调试事件可以分为多个不同的等级,不同的等级输出不同的trace信息。
等级 作用
0 禁止调试事件
1 调试事件处于激活状态。针对每个被处理的数据库调用,输出SQL语句,APPNAME(应用程序名),PARSING IN CURSOR,PARSE ERROR(SQL解析)
,EXEC(执行),FETCH(获取数据),UNMAP,SORT UNMAP(排序,临时段),ERROR,STAT(执行计划),XCTEND(事务)等行。
4 包括等级1的输出,加上BIND行(绑定变量信息)
8 包括等级1的输出,加上WAIT行(等待事件信息)。对于处理过程中的每个等待,提供如下信息:等待时间的名字,持续时间,以及一些额外
的参数,可表明所等待的资源。
12 输出等级4以及等级8的所有信息

?

3. 生成trace文件

[oracle@server8 trace]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Tue Feb 10 16:20:39 2015



sys@GHSJDB> alter session set tracefile_identifier='10046';

Session altered.

sys@GHSJDB>alter session set events '10046 trace name context forever,level 12';(如果没有权限赋予 alter session 权限)

Session altered.

sys@GHSJDB> select code,name,to_char(parent_code) parent,to_char(connect_by_isleaf) isleaf,lev
2 from ghsj_xm.v_organdataset
3 where level = 1 connect by prior code = parent_code start with code = '14142' order siblings by code
4 ;

CODE NAME
------------------------------------------------------------------------------------------ -----------------------------------
PARENT ISLEAF LEV
------------------------------------------------------------------------------------------ ---------------------------------------- ----------------------------------------
14142 国网湖北省电力公司
14000

?


sys@GHSJDB>alter session set events '10046 trace name context off';

Session altered.

?


4. 获取跟踪文件

方法1:

sys@GHSJDB> show parameter dump

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
background_core_dump string partial
background_dump_dest string /home/u01/app/oracle/diag/rdbm
s/ghsjdb/ghsjdb/trace
core_dump_dest string /home/u01/app/oracle/diag/rdbm
s/ghsjdb/ghsjdb/cdump
max_dump_file_size string unlimited
shadow_core_dump string partial
user_dump_dest string /home/u01/app/oracle/diag/rdbm
s/ghsjdb/ghsjdb/trace

去相应的目录下:

?

cd /home/u01/app/oracle/diag/rdbms/ghsjdb/ghsjdb/trace

查找标识符10046:

?

ls | grep 10046

ghsjdb_ora_9481_10046.trc
ghsjdb_ora_9481_10046.trm

?

方法2:

取得当前用户的sid,根据ID取得tracefile的地址

sys@GHSJDB> select * from v$my
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Oracle基础学习5--Oracle权限之”.. 下一篇oracle日期取年、月、日字段值

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: