Oracle 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($ORACLE_HOME/rdbms/admin) 脚本创建 PLAN_TABLE

grant all on plan_table to scott;

C.通过执行 plustrce.sql($ORACLE_HOME/sqlplus/admin/plustrce.sql)脚本创建 plustrace

角色

grant plustrace to scott;
grant select any dictionary to scott;

二、设置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)
在磁盘上执行的排序量

 

======================================================

set autotrace 报错sp2-0613&sp2-0618

 

同事创建了role plustrace,使用system登录可以使用autotrace。
但以普通用户test登录时,报错:

SQL> connect test/test
Connected.

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> select * from user_role_privs;

USERNAME                       GRANTED_ROLE                   ADM DEF OS_
------------------------------ ------------------------------ --- --- ---
TEST                          CONNECT                        NO  YES NO
TEST                           PLUSTRACE                      NO  YES NO
TEST                           RESOURCE                       NO  YES NO

检查表
SQL> select synonym_name,table_name,table_owner from all_synonyms where synonym_name = 'PLAN_TABLE';

no rows selected

应是表PLAN_TABLE没有赋予plustrace select权限。

SQL> connect system/manager as sydba

Connected.

SQL> create public synonym plan_table for plan_table;

Synonym created.

SQL> grant all on plan_table to public;

Grant succeeded.

再试:
SQL> connect test/test
Connected.

SQL> set autotrace on
SP2-0618: Cannot find the Session Identifier.  Check PLUSTRACE role is enabled
SP2-0611: Error enabling STATISTICS report

网上查找,tom说了:
http://asktom.oracle.com/pls/ask/f?p=4950:8:::::F4950_P8_DISPLAYID:5671636641855

Followup:

look up a couple of reviews.

I believe you have slightly mismatched versions of SQLPlus and database.


9203 and up use v$mystat
9202 and before use v$session

9201 client and lower queries v$session
9203 client and higher queries v$mystat


make sure plustrace has select on v$mystat and v$session or use the same version
of sqlplus as database.

我的Oracle server和SQL*Plus的版本都是9.0.2.4.0,找到原因了

SQL> connect system/manager as sydba

Connected.

SQL> grant select on v_$mystat to plustrace;

Grant succeeded.

SQL> connect test/test

Connected.

SQL> set autotrace on
成功!

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/cockcrow/archive/2006/03/02/614058.aspx

你可能感兴趣的:(oracle,sql,SQL Server,脚本,UP)