`
LJ你是唯一LT
  • 浏览: 244049 次
社区版块
存档分类
最新评论

10053事件分析

阅读更多
1)10053介绍:
10053 事件是oracle 提供的用于跟踪sql 语句成本计算的内部事件,它能记载CBO 模式下oracle 优化器如何计算sql 成本,生成相应的执行计划。
用来描述oracle如何选择执行计划的过程,然后输出到trace文件里,因为我们经常看执行计划怎么执行的消耗了哪些资源,而不是常看执行计划怎么选择出来了的。

2)10053特点:
(1) 只可以了解oracle执行计划的选择过程
(2) 无法获知代价的计算公式,因为这是oracle内部的商业机密,而且每个oracle版本的优化器计算公式都不相同差距还是蛮大的,不同版本的同一个语句的代价也不一样,优化器现在还不是很成熟,还有待完善。
(3) 在这个里面我们重点要了解的是“代价”是如何计算出来的,然后我们才能了解执行计划是如何选择的。
(4) 在10053中可以了解哪些因素影响sql的执行代价
(5) 包含cost等价IO+CPU+网络+等待事件+其他代价

说明:
1、跟其他跟踪事件不同,10053提供了两个跟踪级别,但是级别2的跟踪信息比级别1少(其他跟踪事件如10046跟踪级别越高信息越多),跟踪信息将被记录到user_dump_dest目录底下
2、10053只对CBO有效,而且如果一个sql语句已经解析过,就不会产生新的trace信息。
3、如果你使用RULE优化器,那么10053也不会生成跟踪信息。
4、10053事件产生的trace文件不能用tkprof格式化。

3)使用10053事件的方法

SQL> create table t4 as select object_id id ,object_Name from dba_objects;
Table created.
SQL> create index t4_idx on t4(id);
Index created.
SQL> exec dbms_stats.gather_table_stats('TINA','T4',cascade=>true);  --收集统计信息
PL/SQL procedure successfully completed.
SQL> alter session set tracefile_identifier='tina04'; 
Session altered. 
SQL> alter session set events '10053 trace name context forever,level 1';
Session altered.
SQL> explain plan for select id,count(*) from t4 where id<2000 group by id;
Explained.
SQL> alter session set events '10053 trace name context off';
Session altered.

查看:
[oracle@oratest trace]$ cd /u01/diag/rdbms/tinadb/tinadb/trace
[oracle@oratest trace]$ ll -t |head -10
total 17552
-rw-r-----. 1 oracle oinstall  150199 Dec 25 17:30 tinadb_mmon_21083.trc
-rw-r-----. 1 oracle oinstall   16262 Dec 25 17:30 tinadb_mmon_21083.trm
-rw-r-----. 1 oracle oinstall   81658 Dec 25 17:30 tinadb_ora_5860_tina04.trc   --刚刚标记tina04的trace文件
-rw-r-----. 1 oracle oinstall   31379 Dec 25 17:30 tinadb_ora_5860_tina04.trm
-rw-r-----. 1 oracle oinstall  528149 Dec 25 17:19 alert_tinadb.log
-rw-r-----. 1 oracle oinstall    8878 Dec 25 17:19 tinadb_arc1_21174.trc
-rw-r-----. 1 oracle oinstall    1884 Dec 25 17:19 tinadb_arc1_21174.trm
-rw-r-----. 1 oracle oinstall  126591 Dec 25 17:12 tinadb_ckpt_21077.trc
-rw-r-----. 1 oracle oinstall    3288 Dec 25 17:12 tinadb_ckpt_21077.trm

[oracle@oratest trace]$ more tinadb_ora_5860_tina04.trc  ---只抽取部分内容显示
***************************************
SINGLE TABLE ACCESS PATH
  Single Table Cardinality Estimation for T4[T4]
  Table: T4  Alias: T4
    Card: Original: 74797.000000  Rounded: 1956  Computed: 1955.98  Non Adjusted: 1955.98
  Access Path: TableScan
    Cost:  102.84  Resp: 102.84  Degree: 0
      Cost_io: 102.00  Cost_cpu: 17594333
      Resp_io: 102.00  Resp_cpu: 17594333
  Access Path: index (IndexOnly)
    Index: T4_IDX
    resc_io: 6.00  resc_cpu: 433929
    ix_sel: 0.026151  ix_sel_with_filters: 0.026151
    Cost: 6.02  Resp: 6.02  Degree: 1
  Best:: AccessPath: IndexRange
  Index: T4_IDX
         Cost: 6.02  Degree: 1  Resp: 6.02  Card: 1955.98  Bytes: 5

Join order[1]:  T4[T4]#0
***********************
Best so far:  Table#: 0  cost: 6.0206  card: 1955.9757  bytes: 9780
***********************
(newjo-stop-1) k:0, spcnt:0, perm:1, maxperm:2000

*********************************
Number of join permutations tried: 1
*********************************
Enumerating distribution method (advanced)

GROUP BY adjustment factor: 1.000000
GROUP BY cardinality:  1956.000000, TABLE cardinality:  1956.000000
    SORT ressource         Sort statistics
      Sort width:         228 Area size:      200704 Max Area size:    40264704
      Degree:               1
      Blocks to Sort: 4 Row size:     16 Total Rows:           1956
      Initial runs:   1 Merge passes:  0 IO Cost / pass:          0
      Total IO sort cost: 0      Total CPU sort cost: 21984656
      Total Temp space used: 0
Trying or-Expansion on query block SEL$1 (#1)
Transfer Optimizer annotations for query block SEL$1 (#1)
id=0 frofkke[i] (index stop key) predicate="T4"."ID"<2000
GROUP BY adjustment factor: 1.000000
Final cost for query block SEL$1 (#1) - All Rows Plan:
  Best join order: 1
  Cost: 6.0206  Degree: 1  Card: 1956.0000  Bytes: 9780
  Resc: 6.0206  Resc_io: 6.0000  Resc_cpu: 433929
  Resp: 6.0206  Resp_io: 6.0000  Resc_cpu: 433929
kkoqbc-subheap (delete addr=0x7f86edf8faa0, in-use=13728, alloc=16408)
kkoqbc-end:
        :
    call(in-use=13416, alloc=49184), compile(in-use=134352, alloc=149736), execution(in-use=175072, alloc=175312)

kkoqbc: finish optimizing query block SEL$1 (#1)
apadrv-end
          :
    call(in-use=13416, alloc=49184), compile(in-use=135264, alloc=149736), execution(in-use=175072, alloc=175312)


Starting SQL statement dump

user_id=84 user_name=TINA module=SQL*Plus action=
sql_id=cz79brb4k269b plan_hash_value=1839880947 problem_type=3
----- Current SQL Statement for this session (sql_id=cz79brb4k269b) -----
explain plan for select id,count(*) from t4 where id<2000 group by id
sql_text_length=70


4)设置其他session的10053
开启:
   sys.dbms_system.set_ev(<sid>,<serial#>,10053,{1|2},")
关闭:
   sys.dbms_system.set_ev(<sid>,<serial#>,10053,0,")
分享到:
评论

相关推荐

    深入解析10053事件

    本文旨在详尽解读10053事件的功能、设置方法以及其在SQL性能分析中的应用。 ### 1. 10053事件概述 10053事件是Oracle提供的一种内部跟踪机制,专门设计来监控SQL语句在成本基线优化(Cost-Based Optimizer,简称...

    oracle诊断事件及深入解析10053事件

    通过分析10053事件的跟踪信息,DBA能够深入了解SQL语句的解析过程,识别可能的优化方向,如添加索引、调整SQL语句写法、优化数据库配置参数等。 总结,Oracle的诊断事件是强大而灵活的工具,尤其对于高级用户和DBA...

    oracle的10053事件

    Oracle的10053事件是Oracle数据库管理系统中的一种诊断工具,它允许DBA(数据库管理员)方便地转储数据库的各类结构并追踪特定事件。Oracle提供了多种诊断工具,但事件(Event)因其便捷性和实用性而备受青睐。下面...

    Oracle性能优化

    同时,通过Trace文件和10053事件分析,能深入到SQL执行的细节。 以上只是Oracle性能优化的部分方面,实际操作中还需要结合具体业务场景,灵活应用各种工具和技术,持续监控和调整,才能达到最佳的性能效果。Oracle...

    A Look under the Hood of CBO - the 10053 Event

    通过对10053事件的深入分析,我们不仅了解了CBO的工作机制,还学会了如何利用此事件来优化查询性能。10053事件是一个强大的工具,可以帮助数据库管理员和开发者更好地理解查询执行计划的选择逻辑,并据此优化查询...

    oracle事件探查器

    在Oracle中,事件探查器通过启用特定的跟踪事件来工作,这些事件包括但不限于10046(用于跟踪执行计划和调用堆栈)、10053(用于跟踪优化器决策过程)和10040(用于跟踪服务器进程)。通过设置这些事件,我们可以...

    Oracle事件探查器

    3. **10053 trace事件**:这个事件用于获取SQL优化器的详细信息,包括如何选择执行计划、优化过程的细节以及成本估算等。这对于理解和优化复杂的SQL查询非常有用。 4. **Automatic Workload Repository (AWR)**:...

    让Oracle跑得更快Oracle 10g性能分析与优化思路 谭怀远 扫描版

    国内第一本真正意义上从工作经验出发,以作者的心得体会全面论述...书中涉及很多新的性能话题,比如执行计划,bind peeking,并行执行,10046及10053事件,AWR报告等,基本上涵盖了所有Oracle数据库性能方面的知识。

    Oracle事件探查器.rar

    通过设置10046事件,配合10053(显示优化器决策过程)可以得到更丰富的信息。 8. **SQL Trace和TKPROF**:SQL Trace是事件探查器的一部分,它收集SQL执行的详细信息;TKPROF是Oracle提供的一个工具,用于格式化和...

    oracle10046事件详解

    - **等待事件分析**:除了 SQL 执行细节外,10046 事件还会记录 SQL 运行过程中发生的等待事件,这有助于进一步了解数据库资源的竞争情况。 #### 四、启用 10046 事件的方法 启用 10046 事件通常需要通过 SQL*Plus...

    SQL TRACE原理、方法、事件查看总结

    总结,SQL TRACE是Oracle数据库诊断和性能优化的重要工具,通过10046和10053事件,我们可以深入理解SQL的执行过程,从而针对性地优化数据库性能。掌握SQL TRACE的使用,对于提升数据库系统的效率具有重要意义。

    oracle 常用分析小工具

    此外,通过EXPLAIN PLAN、TRACE和10053事件等工具,可以更深入地诊断问题并找到优化策略。 至于“oratool”这个文件,很可能是一个自定义的Oracle分析工具,可能包含了上述功能的实现。这样的工具可以帮助数据库...

    让Oracle跑得更快 Oracle 10g性能分析与优化思路.part2.rar

    第11章 10053事件 276 第12章 性能视图和性能参数 294 12.1 性能视图 294 12.1.1 v$sql 295 12.1.2 v$sql_shared_cursor 300 12.1.3 v$session 305 12.1.4 v$sessstat 309 12.1.5 v$session_wait 310 12.2 性能参数 ...

    orcale 应用程序sql准踪器

    9. **10046和10053事件**:在Oracle中,SQL追踪通常通过设置10046和10053事件来启用。10046用于追踪SQL执行,10053则可以追踪PL/SQL调用堆栈。 10. ** tkprof工具**:Oracle还提供了一个名为tkprof的工具,它可以...

    让Oracle跑得更快 Oracle 10g性能分析与优化思路.part1.rar

    第11章 10053事件 276 第12章 性能视图和性能参数 294 12.1 性能视图 294 12.1.1 v$sql 295 12.1.2 v$sql_shared_cursor 300 12.1.3 v$session 305 12.1.4 v$sessstat 309 12.1.5 v$session_wait 310 12.2 性能参数 ...

    Oracle高级工具应用

    1. **SQL执行分析**:`10046`事件可用于深入分析SQL语句的执行情况,包括执行计划、等待事件等,是性能调优的重要手段。 2. **优化器决策过程**:`10053`事件揭示了优化器的决策过程,帮助DBA理解为何选择了特定的...

    oracle 诊断事件内容列表

    Oracle诊断事件是用于深入分析数据库内部行为的一组特定事件,它们允许DBA或开发人员收集关于Oracle数据库运行时的详细信息,以解决性能问题、调试错误或优化查询。以下是一些重要的Oracle诊断事件的详细说明: 1. ...

    ORACLE11G性能分析及优化对策

    - **SQL级别**:首先检查具体的SQL语句是否存在性能问题,如执行计划、10053/10046事件等。 - **会话级别**:如果问题无法在SQL级别定位,则转到会话级别进行更深层次的分析,涉及V$SESSION、V$SESSTAT、V$SESSION_...

    StatementTracerforOracle.zip

    8. **10046和10053事件**:在Oracle中,Statement Tracer通常通过设置10046和10053的 trace events 来启用,其中10046关注执行计划和执行统计,10053则用于获取更详细的调用堆栈信息。 9. **实际应用**:在实际工作...

    Oracle诊断案例专刊

    - **事件介绍**:10053事件是Oracle提供的一个强大的诊断工具,它允许DBA追踪特定的数据库活动,如会话的状态变化等。 - **应用场景**:例如,当无法创建物化视图时,可以通过启用10053事件来收集详细的日志信息,...

Global site tag (gtag.js) - Google Analytics