`
wsql
  • 浏览: 11812601 次
  • 性别: 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介绍 是oracle10g的新技术,有人需要么

    oracle使用autotrace 功能

    AUTOTRACE是一个SQL*Plus工具,用于跟踪SQL的执行计划,收集执行时所耗用资源的统计信息,是SQL优化工具之一,下面给出启用AUTOTRACE 功能步骤。

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

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

    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 SQL优化实例讲解

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

    深入解析Oracle.DBA入门进阶与诊断案例

    10.1.2 Oracle 10g AUTOTRACE功能的增强 473 10.1.3 AUTOTRACE功能的内部操作 475 10.1.4 使用AUTOTRACE功能辅助SQL优化 477 10.2 获取SQL执行计划的方法 479 10.2.1 通过V$SQL_PLAN获得执行计划 479 ...

    深入解析OracleDBA入门进阶与诊断案例 2/4

    深入解析OracleDBA入门进阶与诊断案例 扫描版 作 者:盖国强 著 出 版 社:人民邮电出版社 出版时间:2009-1-1 页 数:527 内容简介  针对数据库的启动和关闭、控制文件与数据库初始化、参数及参数文件、数据...

    ORACLE9i_优化设计与系统调整

    第一部分 ORACLE系统优化基本知识 23 第1章 ORACLE结构回顾 23 §1.1 Oracle数据库结构 23 §1.1.1 Oracle数据字典 23 §1.1.2 表空间与数据文件 24 §1.1.3 Oracle实例(Instance) 24 §1.2 Oracle文件 26 §1.2.1...

    Oracle数据库管理员技术指南

    6.12.2 Oracle Fail Safe 的优点 6.12.3 Oracle Fail Safe 的缺点 6.13 其他高可用性的选项 6.13.1 鞋带状预算的高可用性:传送备份 磁带 6.13.2 采用远程镜像 6.13.3 应用程序镜像 6.14 利用混合配置技术 ...

    oracle执行计划

    oracle执行计划,设置autotrace允许显示DML语句的一些统计信息和/或查询计划。

    Oracle 临时表之临时表的应用问题

     2、再将这较小的临时表与另一张较小的表进行关联查询  先不论思路是否值得商榷,这把临时表当成中转站的做法还是很值得肯定。  临时表本质上是一种cache的表现形式,Oracle的临时表都是事先建好的,一旦用...

    oracle怎么查看执行计划

    怎么进行autotrace进行查看执行计划

    深入解析OracleDBA入门进阶与诊断案例 4/4

    深入解析OracleDBA入门进阶与诊断案例 扫描版 作 者:盖国强 著 出 版 社:人民邮电出版社 出版时间:2009-1-1 页 数:527 内容简介  针对数据库的启动和关闭、控制文件与数据库初始化、参数及参数文件、数据...

    深入解析OracleDBA入门进阶与诊断案例 3/4

    深入解析OracleDBA入门进阶与诊断案例 扫描版 作 者:盖国强 著 出 版 社:人民邮电出版社 出版时间:2009-1-1 页 数:527 内容简介  针对数据库的启动和关闭、控制文件与数据库初始化、参数及参数文件、数据...

    autotrace-0.31.1-38.el7.x86_64 (1).rpm

    离线安装包,测试可用

    Oracle专家高级编程+(清晰).pdf

    着重调优的好书,非常经典,其中对于tkprof,autotrace等有很深刻的讲解

    oracle 性能优化

    oracle 性能优化 教你如果调优 sql&gt;set autotrace on

    使用AutoTrace软件将光栅图像转换为矢量格式的经验-研究论文

    这项工作演示了AutoTrace软件在测深图的栅格图像半自动数字化方面的成功应用。 使用AutoTrace软件(用于自动数字化)和ArcGIS在技术上对底部浮雕图的片段进行了编辑。 中文:最近,使用开放源代码软件,越来越精确...

    oracle performance tuning

    query processing,Explain plan,autotrace

Global site tag (gtag.js) - Google Analytics