`
izuoyan
  • 浏览: 9127945 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Oracle10gR2 autotrace function was changed and enhanced

阅读更多

作者:eygle
出处:http://www.eygle.com/blog
日期:September 15, 2005
本文链接:http://www.eygle.com/archives/2005/09/oracle10gr2_aut.html

« EMC损坏硬盘更换及恢复过程 | Blog首页 | Oracle数据字典说明 »


今天在测试过程中,偶然发现在Oracle10g Release 2中,Autotrace的功能已经被极大加强和改变。
这是一个很有意思的小的变化,关于autotrace的使用,请参考:启用AutoTrace
接下来让我们先来看一下什么地方发生了改变:
SQL> set linesize 120
SQL> set autotrace on
SQL> select count(*) from v$session
  2  /

  COUNT(*)
----------
        21


Execution Plan
----------------------------------------------------------
Plan hash value: 2376410614

---------------------------------------------------------------------------------------------
| Id  | Operation                 | Name            | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT          |                 |     1 |    65 |     0   (0)| 00:00:01 |
|   1 |  SORT AGGREGATE           |                 |     1 |    65 |            |          |
|   2 |   NESTED LOOPS            |                 |     1 |    65 |     0   (0)| 00:00:01 |
|*  3 |    FIXED TABLE FULL       | X$KSUSE         |     1 |    52 |     0   (0)| 00:00:01 |
|*  4 |    FIXED TABLE FIXED INDEX| X$KSLED (ind:2) |     1 |    13 |     0   (0)| 00:00:01 |
---------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   3 - filter("S"."INST_ID"=USERENV('INSTANCE') AND BITAND("S"."KSSPAFLG",1)<>0 AND
              BITAND("S"."KSUSEFLG",1)<>0)
   4 - filter("S"."KSUSEOPC"="E"."INDX")


Statistics
----------------------------------------------------------
          1  recursive calls
          0  db block gets
          0  consistent gets
          0  physical reads
          0  redo size
        411  bytes sent via SQL*Net to client
        385  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed

注意,此时autotrace的输出被良好格式化,并给出关于执行计划部分的简要注释。
其实这里并没有带来新的东西,从Oracle9i开始,Oracle提供了一个新的工具dbms_xplan用以格式化和查看SQL的执行计划。其原理是通过对plan_table的查询和格式化提供更友好的用户输出。

dbms_xplan的调用的语法类似:
select * from table(dbms_xplan.display(format=>'BASIC'))
使用 TABLE() 操作符,或者 CAST 操作。

具体用法可以参考Oracle官方文档。

实际上从Oracle9i开始我们就经常使用如下方式调用dbms_xplan:
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning option
JServer Release 9.2.0.4.0 - Production

SQL> explain plan for
  2  select count(*) from dual;

Explained.

SQL> @?/rdbms/admin/utlxplp;

PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------

--------------------------------------------------------------------
| Id  | Operation            |  Name       | Rows  | Bytes | Cost  |
--------------------------------------------------------------------
|   0 | SELECT STATEMENT     |             |       |       |       |
|   1 |  SORT AGGREGATE      |             |       |       |       |
|   2 |   TABLE ACCESS FULL  | DUAL        |       |       |       |
--------------------------------------------------------------------

Note: rule based optimization

10 rows selected.

utlxplp.sql脚本中正是调用了dbms_xplan:
SQL> get ?/rdbms/admin/utlxplp;
  1  Rem
  2  Rem $Header: utlxplp.sql 23-jan-2002.08:55:23 bdagevil Exp $
  3  Rem
  4  Rem utlxplp.sql
  5  Rem
  6  Rem Copyright (c) 1998, 2002, Oracle Corporation.  All rights reserved.
  7  Rem
  8  Rem    NAME
  9  Rem      utlxplp.sql - UTiLity eXPLain Parallel plans
 10  Rem
 11  Rem    DESCRIPTION
 12  Rem      script utility to display the explain plan of the last explain plan
 13  Rem         command. Display also Parallel Query information if the plan happens to
 14  Rem      run parallel
 15  Rem
 16  Rem    NOTES
 17  Rem      Assume that the table PLAN_TABLE has been created. The script
 18  Rem      utlxplan.sql should be used to create that table
 19  Rem
 20  Rem      With SQL*plus, it is recomended to set linesize and pagesize before
 21  Rem      running this script. For example:
 22  Rem            set linesize 130
 23  Rem            set pagesize 0
 24  Rem
 25  Rem    MODIFIED   (MM/DD/YY)
 26  Rem    bdagevil    01/23/02 - rewrite with new dbms_xplan package
 27  Rem    bdagevil    04/05/01 - include CPU cost
 28  Rem    bdagevil    02/27/01 - increase Name column
 29  Rem    jihuang     06/14/00 - change order by to order siblings by.
 30  Rem    jihuang     05/10/00 - include plan info for recursive SQL in LE row source
 31  Rem    bdagevil    01/05/00 - make deterministic with order-by
 32  Rem    bdagevil    05/07/98 - Explain plan script for parallel plans
 33  Rem    bdagevil    05/07/98 - Created
 34  Rem
 35  set markup html preformat on
 36  Rem
 37  Rem Use the display table function from the dbms_xplan package to display the last
 38  Rem explain plan. Use default mode which will display only relevant information
 39  Rem
 40* select * from table(dbms_xplan.display());
 41  
SQL> 

而在Oracle10gR2中,Oracle帮我们简化了这个过程,一个autotrace就完成了所有的输出,这也是易用性上的一个进步吧。在使用Oracle的过程中,我们经常能够感受到Oracle针对用户需求或易用性的改进,这也许是很多人喜爱Oracle的一个原因吧。

如果足够信息我们还会注意到,在Oracle10g中PLAN_TABLE不再需要创建,Oracle缺省增加了一个字典表PLAN_TABLE$,然后基于PLAN_TABLE$创建公用同义词供用户使用。

关于dbms_xplan工具的使用还可以参考Itpub上的讨论:使用dbms_xplan工具查看执行计划.
分享到:
评论

相关推荐

    oracle 的Autotrace介绍

    Oracle Autotrace 是 Oracle 10g 中的一项新技术,用于自动跟踪 SQL 语句的执行计划并提供与该语句的处理有关的统计。Autotrace 是 SQL*Plus 的一项功能,可以用来替代 SQL Trace 使用。Autotrace 的好处是您不必...

    oracle使用autotrace 功能

    Oracle的Autotrace是SQL*Plus中的一个强大工具,它主要用于帮助数据库管理员和开发人员分析SQL查询的执行计划,并收集执行时的性能统计数据。通过这些信息,可以有效地进行SQL查询优化,提高数据库的性能。下面是...

    Oracle性能分析——使用set_autotrace_on和set_timing_on来分析select语句的性能.doc

    Oracle 性能分析——使用 set_autotrace_on 和 set_timing_on 来分析 select 语句的性能 Oracle 数据库性能分析是数据库优化的重要步骤之一,通过对 SQL 语句的执行计划和运行时间的分析,可以了解数据库的性能瓶颈...

    oracle怎么查看执行计划

    ### Oracle如何使用AUTOTRACE查看执行计划 在Oracle数据库管理中,查看SQL语句的执行计划是一项重要的技能,这有助于优化查询性能、诊断性能问题等。AUTOTRACE是Oracle提供的一种强大的工具,用于自动展示SQL语句的...

    AutoTrace 0.31.1

    矢量化,包含执行程序与C++源码。...Inputformats BMP, TGA, PNM, PPM, PGM, PBM and those supported by ImageMagick. Exportformat Postscript, svg, xfig, swf, pstoedit, emf, dxf, cgm, mif, p2e and sk

    Oracle默认用户名与密码速查表.doc

    2. 然后,执行 @?/rdbms/admin/utlxplan.sql 命令,创建 plan_table。 3.接着,执行 create public synonym plan_table for plan_table; 命令,创建公共同义词 plan_table。 4.然后,执行 grant select,update,...

    oracle数据库开发规范.pdf

    2. Oracle的自动跟踪(autotrace)用于跟踪SQL语句的执行情况。 3. Oracle的SQL优化器(CBO)使用统计信息来选择最优的执行计划。 4. Oracle的行级锁定(row-level locking)用于保证并发事务的正确性。 5. ...

    oracle explain plan总结

    ### Oracle Explain Plan 总结 #### 一、Oracle 执行计划的重要性 在Oracle数据库中,为了提高查询效率和系统性能,我们需要对SQL语句进行优化。优化的第一步就是理解SQL语句的执行计划。执行计划是指Oracle数据库...

    大牛出手Oracle SQL优化实例讲解

    2.loop insert 实例 3.autotrace验证索引的性能到底有多大? 4.EXPLAIN验证SQL是否走索引 5.结合autotrace创建并验证函数索引 6.sql trace分析工具--TKPROF详细讲解 7.V$SQL视图详解加几个实例 8.autotrace验证压缩...

    oracle的索引学习

    Oracle数据库中的索引是提升查询性能的关键工具,它允许数据库快速定位和检索数据。本篇文章将深入探讨Oracle索引的学习,重点关注索引的原理、类型、优缺点以及如何使用和分析执行计划。 首先,理解索引的基本概念...

    Oracle中explain_plan的用法

    Oracle 中 explain_plan 的用法 Oracle 中的 explain_plan 是一个强大的分析工具,能够帮助用户了解 SQL 语句的执行计划,通过它可以了解 Oracle 是如何连接表、使用什么方式扫描表(索引扫描或全表扫描)以及使用...

    Oracle查询优化改写-技巧与案例

    10. **SQL优化工具**:介绍Oracle的SQL Tuning Advisor和SQL Access Advisor,以及如何利用这些工具自动识别和建议优化方案。 本书作为DBA和开发人员的参考字典,不仅提供了理论知识,还包含大量的实际案例,帮助...

    Oracle数据库连接与会话

    Oracle数据库连接与会话 Oracle数据库连接与会话是Oracle数据库管理系统中的两个核心概念。它们之间存在一定的关系,但又有着明显的区别。 连接是一种从客户端到数据库实例的物理通道,可以通过网络或IPC机制建立...

    Oracle 9i&10g编程艺术

    《Oracle 9i&10g编程艺术》是数据库专家Thomas Kyte的一部经典之作,旨在深入探讨Oracle 9i和10g这两个版本的数据库系统。这本书详细讲解了Oracle数据库的各种特性和功能,帮助读者理解和掌握如何有效地利用这些特性...

    oracle10g数据库开发优化指南.doc

    Oracle 10g数据库开发优化指南是一份详细指导文档,旨在帮助开发者提升数据库性能和效率。以下是其中几个关键知识点的详细解释: 1. **绑定变量**: 绑定变量是提高SQL语句效率的关键。它允许你在执行SQL时使用...

    oracle 9i 10g编程艺术

    ### Oracle 9i 10g编程艺术 #### 概述 《Oracle 9i & 10g 编程艺术:深入数据库体系结构》是一本深入探讨Oracle 9i和10g版本数据库编程技术和架构的经典之作。本书旨在帮助读者全面理解Oracle数据库的核心组件、...

    Oracle优化常用概念.pptx

    Oracle 10g 的 CBO 已经很成熟,推荐使用。 查看优化器模式 可以使用 `show parameter optimizer_mode` 查看当前的优化器模式。optimizer_mode 的取值包括:rule(RBO)、choose(有统计信息时是 CBO,否则是 RBO...

Global site tag (gtag.js) - Google Analytics