【Oracle】获取执行计划之 10046 事件

10046事件是Oracle中用于获取SQL及PL/SQL执行详细信息的工具,包括执行计划、等待事件、资源消耗等。通过设置事件并执行SQL,然后分析生成的trace文件,可以深入了解语句的运行状态。tkprof工具可进一步规范化trace文件格式。该方法虽然步骤稍多,但能提供深入诊断信息,有助于性能优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【Oracle】获取执行计划之 10046 事件

10046

  10046 事件可以得到 Oracle 内部执行系统解析、调用、等待、绑定变量等详细的信息,可以帮助我们解析一条/多条 SQL、PL/SQL 语句的运行状态,这些状态包括:Parse/Fetch/Execute 三个阶段中遇到的等待事件、消耗的物理和逻辑读、CPU 时间、执行计划等,还能帮我们分析一些 DDL 维护命令的内部工作原理,RMAN、Data Pump Expdp/impdp 等工具缓慢问题。

执行步骤

方法一

  1. 激活 10046 事件

    alter session set events '10046 trace name context forever,level 12';
    
  2. 执行目标 SQL

    select * from emp;
    
  3. 查看生成的 trace 文件

    select distinct(m.sid),p.pid,p.tracefile from v$mystat m,v$session s,v$process p where m.sid=s.sid and s.paddr=p.addr;
    
  4. 关闭 10046 事件

    alter session set events '10046 trace name context off';
    
  5. 切换 cmd,tkprof 命令规范文件格式

    tkprof D:\11G\APP\ORACLE\diag\rdbms\xe\xe\trace\xe_ora_5140.trc E:\xe_ora_5140.trc
    

方法二

  1. 激活 10046 事件

    oradebug setmypid
    oradebug event 10046 trace name context forever,level 12;
    
  2. 执行目标 SQL

    select * from emp;
    
  3. 查看生成的 trace 文件

    oradebug tracefile_name
    
  4. 关闭 10046 事件

    oradebug event 10046 trace name context forever,level 12;
    
  5. 切换 cmd,tkprof 命令规范文件格式

    tkprof D:\11G\APP\ORACLE\diag\rdbms\xe\xe\trace\xe_ora_5140.trc E:\xe_ora_5140.trc
    

10046

优缺点

  • 优点
  1. 可以看出 sql 语句对应的等待事件
  2. 函数调用也会被列出
  3. 可以方便的看处理的行数,产生的逻辑物理读
  4. 可以方便的看解析时间和执行时间
  5. 可以跟踪整个程序包
  • 缺点
  1. 步骤繁琐
  2. 无法判断表被访问了多少次
  3. 执行计划中的谓词部分不能清晰的展现出来

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿的向往

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值