您的位置:首页 > 数据库 > Oracle

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内容!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息