oracle autotrace使用

来源:互联网 发布:淘宝网的商业模式 编辑:程序博客网 时间:2024/05/05 06:54

AUTOTRACE是一项SQL*Plus功能,自动跟踪为SQL语句生成一个执行计划并且提供与该语句的处理有

的统计。SQL*Plus AUTOTRACE可以用来替代SQL Trace使用,AUTOTRACE的好处是您不必设置跟踪文件的格式,并且它将自动为SQL语句显示执行计划。然而,AUTOTRACE分析和执行语句;而EXPLAIN PLAN仅分析语句。使用AUTOTRACE不会产生跟踪文件。

一、启用Autotrace功能。

任何以SQL*PLUS连接的session都可以用Autotrace,不过还是要做一些设置的,否则可能报错

SQL> set autotrace on
       SP2-0613: Unable to verify PLAN_TABLE format or existence
       SP2-0611: Error enabling EXPLAIN report

该错误的的主要原因是由于当前用户下没有PLAN_TABLE这张表及相应的PLUSTRACE角色权限。

2、解决方法:

A.以SYS用户登录:

C:\Documents and Settings\Ares>sqlplus "/as sysdba"

SQL*Plus: Release 9.2.0.1.0 - Production on Sat Sep 29 20:09:36 2007

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.


       Connected to:
       Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
       With the Partitioning, OLAP and Oracle Data Mining options
       JServer Release 9.2.0.1.0 - Production

SQL>

B.运行utlxplan.sql(rdbms/admin下)脚本创建PLAN_TABLE;

NT:(D:\oracle\rdbms\admin\utlxplan.sql)

Linux/Unix($oracle_home/rdbms/admin/utlxplan.sql)

SQL>@ D:oracle\rdbms\admin\utlxplan.sql

Table created.


create table PLAN_TABLE (
        statement_id       varchar2(30),
        plan_id            number,
        timestamp          date,
        remarks            varchar2(4000),
        operation          varchar2(30),
        options            varchar2(255),
        object_node        varchar2(128),
        object_owner       varchar2(30),
        object_name        varchar2(30),
        object_alias       varchar2(65),
        object_instance    numeric,
        object_type        varchar2(30),
        optimizer          varchar2(255),
        search_columns     number,
        id                 numeric,
        parent_id          numeric,
        depth              numeric,
        position           numeric,
        cost               numeric,
        cardinality        numeric,
        bytes              numeric,
        other_tag          varchar2(255),
        partition_start    varchar2(255),
        partition_stop     varchar2(255),
        partition_id       numeric,
        other              long,
        distribution       varchar2(30),
        cpu_cost           numeric,
        io_cost            numeric,
        temp_space         numeric,
        access_predicates  varchar2(4000),
        filter_predicates  varchar2(4000),
        projection         varchar2(4000),
        time               numeric,
        qblock_name        varchar2(30),
        other_xml          clob

);


C.通过执行plustrce.sql(ORACLE_HOME/sqlplus/admin/plustrce.sql)脚本创建plustrace角色,这将V$视图上

的选择权限授予该角色,也将plustrace角色授予DBA角色

SQL> @d:\oracle\sqlplus\admin\plustrce.sql


drop role plustrace;

create role plustrace;

grant select on v_$sesstat to plustrace;

grant select on v_$statname to plustrace;

grant select on v_$mystat to plustrace;

grant plustrace to dba with admin option;


D.将plustrace角色授予当前用户(无DBA角色的用户)。


grant plustrace to jojoa;

grant select any dictionary to jojoa;


二、设置Autotrace的命令。

序号

命令

解释

1

SET AUTOTRACE OFF

此为默认值,即关闭Autotrace

2

SET AUTOTRACE ON

产生结果集和解释计划并列出统计

3

SET AUTOTRACE ON  EXPLAIN

显示结果集和解释计划不显示统计

4

SET AUTOTRACE TRACE  ONLY

显示解释计划和统计,尽管执行该语句但您将看不到结果集

5

SET AUTOTRACE

TRACE  ONLY  STATISTICS

只显示统计

Eg:SET AUTOTRACE ON,set timing on,alter session set time_statistics=true;

.

三、Autotrace执行计划的各列的涵义

序号

列名

解释

1

ID_PLUS_EXP

每一步骤的行号

2

PARENT_ID_PLUS_EXP

每一步的Parent的级别号

3

PLAN_PLUS_EXP

实际的每步

4

OBJECT_NODE_PLUS_EXP

Dblink或并行查询时才会用到

四、AUTOTRACE Statistics常用列解释

序号

列名

解释

1

db block gets

从buffer cache中读取的block的数量

2

consistent gets

从buffer cache中读取的undo数据的block的数量

3

physical reads

从磁盘读取的block的数量

4

redo size

DML生成的redo的大小

5

sorts (memory)

在内存执行的排序量

7

sorts (disk)

在磁盘上执行的排序量



原创粉丝点击