Oracle Trace 10046 事件和10053 事件
2016-10-31 20:43
295 查看
10046 事件(SQL TRACE)
10046事件和SQL_TRACE作用一样,都是用来追踪SQL,通过生成的trace来了解SQL的执行过程。和普通的SQL_TRACE方法相比,10046事件提供了可选的追踪级别。10046事件可选四个级别:level 1、4、8、12:
Level 0 停用SQL跟踪,相当于SQL_TRACE=FALSE
Level 1 标准SQL跟踪,相当于SQL_TRACE=TRUE
Level 4 在level 1的基础上增加绑定变量的信息
Level 8 在level 1的基础上增加等待事件的信息
Level 12 在level 1的基础上增加绑定变量和等待事件的信息
10046事件不但可以跟踪用户会话(trace文件位于USER_DUMP_DEST),也可以跟踪background进程(trace文件位于BACKGROUND_DUMP_DEST)。
根据追踪的方法不同,最后生成的trace文件的大小也不同个,起决定于4个因素:
跟踪级别,跟踪时长,会话的活动级别和MAX_DUMP_FILE_SIZE参数设置。
步骤一:事件基础参数设置:
alter session set tracefile_identifier='10046';
设置追踪标识符,标识符可随意指定,本例中生成的trace文件名中会包含‘10046’字样,方便查找;
alter session set timed_statistics=true;
设置为true,否则不会有CPU时间信息;
alter session set max_dump_file_size ='UNLIMITED';
Trace文件的最大尺寸(单位为操作系统块),UMLIMITED表示没有限制
步骤二:开启/关闭追踪
alter session set events '10046 trace name context forever, level 12'; alter session set events '10046 trace name context off';
步骤三:获取trace文件(我们自定了10046追踪标识):
Trace文件记录的是查询操作:
SELECT organization_code FROM org_organization_definitions ood WHERE organization_id = 736;
10053 事件(CBO TRACE)
当一个SQL出现性能问题的时候,可以使用SQL_TRACE或者10046事件来跟踪SQL,通过生成的trace来了解SQL的执行过程;10053事件是用来诊断优化器如何估算成本和选择执行计划的,用它产生的trace文件提供了Oracle如何选择执行计划,为什么会得到这样的执行计划信息;
10053事件生成trace文件目录和SQL_TRACE一样。
注意:
对于10053事件的trace文件,我们只能直接阅读原始的trace文件,不能使用tkprof工具来处理。
tkprof工具只能用来处理sql_trace 和 10046事件产生的trace文件。
10053事件存在两个级别:
Level 2:2级是1级的一个子集,它包含以下内容:
Column statistics
Single Access Paths
Join Costs
Table Joins Considered
Join Methods Considered (NL/MS/HA)
Level 1: 1级比2级更详细,它包含2级的所有内容,在加如下内容:
Parameters used by the optimizer
Index statistics
步骤一:启用10053事件
ALTER SESSION SET EVENTS='10053 trace name context forever, level 1';
步骤二:关闭10053事件
ALTER SESSION SET EVENTS '10053 trace name context off';
注意:
要实现跟踪必须满足两个条件:
sql语句必须被hard parse并且必须使用CBO优化器模式。如果sql语句已经被parse过,那么10053不生成跟踪信息。如果你使用RULE优化器,那么10053 也不会生成跟踪信息。
可使用sql查询当前会话的优化器模式:
SELECT NAME, VALUE FROM v$parameter WHERE NAME = 'optimizer_mode';
CBO优化器:基于代价, 优化模式:ALL_ROWS,FIRST_ROWS
RBO优化器:基于规则, 优化模式:RULE
对查询语句开启10053跟踪,满足硬解析和CBO优化器模式条件:
SELECT organization_code FROM org_organization_definitions ood WHERE organization_id = 736;
对于10053事件的trace文件,我们只能直接阅读原始的trace文件,不能使用tkprof工具来处理。
可以设置其他session的10053
开启:
SYS.DBMS_SYSTEM.SET_EV (<sid>, <serial#>, 10053, {1|2}, '')
关闭:
SYS.DBMS_SYSTEM.SET_EV (<sid>, <serial#>, 10053,0, '')
网址参考:
ORACLE 深入解析10053事件(1)Oracle 10053事件内部原理与测试(2)
10053诊断事件——深入分析CBO内容!
相关文章推荐
- ORACLE TRACE 10046事件常见的几种方法 推荐
- 10046 事件 与 10053 事件
- 10046事件跟踪(10053)
- Oracle sql_trace 10046事件 10053事件笔记
- 10046 事件 与 10053 事件
- 10046事件与10053事件
- 10053、10046跟踪事件学习
- ORACLE 10046、10053 事件
- 执行计划+Hint+统计信息+并行+绑定变量+sql跟踪和10046事件+10053事件总结
- 10046 事件 与 10053 事件
- 10046事件
- 10046事件和tkprof命令
- 【性能优化】 之 10053 事件
- Oracle 10046事件
- ORACLE追踪应用执行sql语句——10046事件
- Oracle SQL Trace 和 10046 事件 .
- ORACLE 深入解析10053事件
- 拜年+散分贴《Oracle SQL_TRACE和10046事件优化SQL实例》
- 10053事件分析案例一则
- oracle 10046事件