oracle 10046事件故障诊断一例

本文详细介绍了Oracle数据库中的10046事件,这是一个用于调试SQL语句执行状态的重要工具。通过设置10046事件,可以追踪SQL语句在Parse/Fetch/Execute各阶段的行为,收集等待事件、读写操作、CPU使用等信息,进而帮助诊断性能问题。
什么是事件?
EVENTS are primarily used to produce additional diagnostic information
when insufficient information is available to resolve a given problem.
An EVENT is a special item used by the Oracle server to do one of the following:
event是oracle服务器用于下述三种目的的一个特殊对象:
Change behaviour 改变状态(行为)
Enable collection of trace or debug information 开启收集trace或debug信息
Enable additional error checking or similar 开启额外错误信息检查或类似目的

什么是10046事件?
oracle调试事件之一,帮助我们解析 一条/多条SQL、PL/SQL语句的运行状态 ,这些状态包括 :Parse/Fetch/Execute三个阶段中遇到的等待事件、消耗的物理和逻辑读、CPU时间、执行计划等等。
[oracle@hhu mesg]$ oerr ora 10046
10046, 00000, "enable SQL statement timing"
// *Cause:
// *Action:


10046事件的几种典型用法
单条sql调试
多条sql调试

案例
    通过awr报告或直接查询到该sql语句对应的sql id,然后在全局开启10046事件,追踪单条sql执行情况,同时请开发人员用zabbix监控,一旦发现该语句的执行有耗时超过10s级别的,立刻反馈。开发人员反馈捕捉到10s级别的执行情况后,关闭10046事件。进入到trace目录,用tkprof工具处理两份.trc文件,一份正常耗时,一份超时的,具体内容见另外两个文档。对比发现,两次sql执行的执行计划一致,但是超时的会处理上百万行数据,访问十几万个块,而正常耗时的则只是处理几十行数据。开发人员继而打印出语句中的绑定变量,发现超长耗时与具体绑定变量值相关。问题到此交与开发人员解决。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29067253/viewspace-2149450/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29067253/viewspace-2149450/

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值