Oracle Trace 10046 事件和10053 事件

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内容!

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值