关于autotrace

Expert Oracle Database Architecture学习笔记

关于autotrace


在SQL*Plus中启用(打开)autotrace时,如果我们执行DML操作(insert、update、delete、select和merge),SQL*Plus会完成以下动作:

(1)如果还不存在辅助会话,它会使用当前连接创建一个新会话。
(2)要求这个新会话查询v$sesstat视图来记住实际会话(即运行DML的会话)的初始统计值。
(3)在原会话中运行DML操作。
(4)DML语句执行结束后,SQL*plus会请求另外那个会话(即“监视”会话)再次查询v$sesstat,并生成报告,显示出原会话(运行DML的会话)的统计结果之差。

SQL> set autotrace on statistics
SQL> select username, sid, serial#, server, paddr, status from v$session
  2  where username=user;

USERNAM         SID        SERIAL#   SERVER           PADDR      STATUS
----------------- ---------- ----------  ---------             --------       --------
SYS                      9            5               DEDICATED   681E6C3C   INACTIVE
SYS                     10           5               DEDICATED   681E6C3C   ACTIVE


Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
          0  consistent gets
          0  physical reads
          0  redo size
          0  bytes sent via SQL*Net to client
          0  bytes received via SQL*Net from client
          0  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          2  rows processed
----------------------------------------
补充:今天找到一篇介绍Autotrace的更完整的文章,来自可乐加冰的blog
文章名为《ORACLE AUTOTRACE介绍
文章url:http://sonic.itpub.net/post/17575/107300
以下是文章内容,并在此表示对 可乐加冰 的感谢。

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

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

使用AUTOTRACE不会产生跟踪文件。


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

1、报错示例:
SQL :> set autotrace on;
SP2-0613: Unable to verify PLAN_TABLE format or existence
SP2-0611: Error enabling EXPLAIN report
SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enabled
SP2-0611: Error enabling STATISTICS report

*******************************************************************************

SQL> set autotrace on;

SP2-0613: 无法验证 PLAN_TABLE 格式或实体

SP2-0611: 启用EXPLAIN报告时出现错误

SP2-0618: 无法找到会话标识符。启用检查 PLUSTRACE 角色

SP2-0611: 启用STATISTICS报告时出现错误

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

2、解决方法:

A.以SYS用户登录:

oracle>sqlplus '/ as sysdba';

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

SQL>@ D:oracleora81RDBMSADMINutlxplan.sql

C.通过执行 plustrce.sql(ORACLE_HOME/sqlplus/admin/plustrce.sql)脚本创建 plustrace 角色,这将V$ 视图上的选择权限授予该角色,也将 plustrace 角色授予 DBA 色,脚本部份内容如下:

drop role plustrace;
create role plustrace;
grant select on v_$sesstat to plustrace;
grant select on v_$statname to plustrace;
grant select on v_$session to plustrace;
grant plustrace to dba with admin option;
D.将 plustrace 角色授予当前用户( DBA 角色的用户)

二、设置Autotrace的命令。

序号

命令

解释

1

SET AUTOTRACE OFF

此为默认值,即关闭Autotrace

2

SET AUTOTRACE ON

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

3

SET AUTOTRACE ON EXPLAIN

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

4

SETAUTOTRACE TRACEONLY

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

5

SET AUTOTRACE

TRACEONLY STATISTICS

只显示统计

EgSET 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)

在磁盘上执行的排序量

 


转载于:https://www.cnblogs.com/angzi/archive/2006/12/07/585298.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值