Oracle 10046事件(一)

2015-03-05 23:51:41 · 作者: · 浏览: 99

10046 事件


当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: