• 查看Oracle数据库中的执行计划


    1、set autotrace traceonly命令

    2、explain plan for命令

     1)explain plan for select * from dual; 

     2)select * from table(dbms_xplan.display);  

    3、10046查看Oracle数据库中的执行计划

    能够得到SQL执行计划中每一个执行步骤所消耗的逻辑读,物理读,和花费的时间。实际上,也可以通过gather_plan_sstatistics Hint 配合dbms_xplan 包一起使用得到和10046事件类似细粒度的明细的执行计划。

    三个步骤就可以通过10046事件获得SQL的执行计划。

    1.首先在当前session 中激活10046事件。
    2.在当前session 中执行SQL语句。
    3.最后当前session 中关闭10046事件。
     当执行完上述步骤后,oracle就会将目标SQL的执行计划和明细资源消耗写入此session对应的trace文件中。
    oracle会在user_dump_dest参数设置的目录下产生这个trace文件。
     我们有两种方法在当前session中激活10046事件。
    1.在当前session中执行alter session set events '10046 trace naem context forever,level 12'
     2.在当前session中执行oradebug event 10046 trace name context forever,level 12'
    上述命令中的关键字”level“后的数字是标识设置的10046时间的level值,这个值是可以修改的,我们
     通常使用的值为12,表示在产生的trace文件中除了有目标sql的执行计划和资源消耗明细外,还包含
    SQL使用的绑定变量的值以及该session所经历的等待事件,除了level值外,其他的部分是固定的语法,
     是无法修改的。
     我推荐使用第2种方法,因为可以在激活10046事件后执行命令oradebug tracefile_name可以获得当前
    session 所对应的trace文件的具体路径名称。
     示例:

    1.我们先激活10046事件,我们是oradebug命令来激活。
    SQL>oradebug setmypid
     SQL>oradebug event 10046 trace name context forver,level 12
     2.在当前session中激活了10046事件后,我们执行一个SQL语句
    SQL>SELECT * FROM hr.test;
     3.使用oradebug tracefile_name 命令查看当前session所对应的trace文件路径和名称
    SQL>oradebug tracefile_name
     /app/oracle/diag/rdbms/pxboracle/pxboracle/trace/pxboracle_ora_18565.trc
     4.关闭当前session 中的10046事件:
    SQL>oradebug event 10046 trace name context off

    5.生成TKPROF报告

    然后键入 tkprof /app/oracle/diag/rdbms/pxboracle/pxboracle/trace/pxboracle_ora_18565.trc /tmp/tk.prf

  • 相关阅读:
    C# 缓存介绍与演示(转)
    sql server 2005中表的数据与excel互相导入导出的方法
    java.exe,javac.exe,javaw.exe,jar,javadoc 区别
    C# 装箱和拆箱、理论概念(非原创)
    Maven概述(非原创)
    理解java String(非原创)
    JVM JRE JDK区别于联系(非原创)
    LINQ to SQL与LINQ to Entities场景之对照(非原创)
    J2EE系统开发环境配置
    ASP.NET MVC 拦截器(转)
  • 原文地址:https://www.cnblogs.com/elontian/p/9706075.html
Copyright © 2020-2023  润新知