zoukankan      html  css  js  c++  java
  • 【Oracle】详解10053事件

    借助Oracle的10053事件event,我们可以监控到CBO对SQL进行成本计算和路径选择的过程和方法。
    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';
    ALTER SESSION SET EVENTS='10053 trace name context forever, level 2';
    关闭10053事件:
    ALTER SESSION SET EVENTS '10053 trace name context off';
    说明:
    1、sqlplus中打开autotrace看到的执行计划实际上是用explain plan 命令得到的,explain plan 命令不会进行bind peeking。应该通过v$sql_plan查看SQL的真实的执行计划。
    2、10053只对CBO有效,而且如果一个sql语句已经解析过,就不会产生新的trace信息。

    3、10053事件产生的trace文件不能用tkprof格式化。

    4.通过10053事件分析一个SQL执行计划的产生过程,需要贴出trace中的相关信息和必要的文字说明。


    测试:

    1)创建测试表t1,t2

    SQL> create table t1 as select * from all_objects;

    Table created.

    SQL> create table t2 as select * from all_objects where rownum<=100;

    Table created.

    SQL> select count(*) from t1;

      COUNT(*)
    ----------
          5756

    SQL> select count(*) from t2;

      COUNT(*)
    ----------
           100

    2)对t1,t2表进行分析,不包含直方图

    SQL> exec dbms_stats.gather_table_stats ('scott','t1',cascade=>true,estimate_percent=>null,method_opt=>'for all columns size 1');

    PL/SQL procedure successfully completed.

    SQL> exec dbms_stats.gather_table_stats ('scott','t2',cascade=>true,estimate_percent=>null,method_opt=>'for all columns size 1');

    PL/SQL procedure successfully completed.

    3)生成10053 trace文件

    SQL> conn / as sysdba
    Connected.

    SQL> alter session set events '10053 trace name context forever,level 1';

    Session altered.

    SQL> select count(*) from scott.t1,scott.t2 where t1.object_id=t2.object_id;

      COUNT(*)
    ----------
           100

    SQL> alter session set events '10053 trace name context off';

    Session altered.

    SQL> select value from v$diag_info where name like '%Default%';

    VALUE
    --------------------------------------------------------------------------------
    /u01/app/oracle/diag/rdbms/drz/drz/trace/drz_ora_10614.trc

    4)查看trace文件

    [oracle@drz ~]$ more /u01/app/oracle/diag/rdbms/drz/drz/trace/drz_ora_10614.trc


  • 相关阅读:
    织梦开发——相关阅读likeart应用
    织梦标签教程
    织梦专题调用代码
    HIT 2543 Stone IV
    POJ 3680 Intervals
    HIT 2739 The Chinese Postman Problem
    POJ 1273 Drainage Ditches
    POJ 2455 Secret Milking Machine
    SPOJ 371 Boxes
    HIT 2715 Matrix3
  • 原文地址:https://www.cnblogs.com/NextAction/p/7366661.html
Copyright © 2011-2022 走看看