您的位置:首页 > 数据库 > Oracle

oracle autotrace使用

2013-07-07 18:00 477 查看
通过以下方法可以把Autotrace的权限授予Everyone,
  如果你需要限制Autotrace权限,可以把对public的授权改为对特定user的授权。 

D:\oracle\ora92>sqlplus /nolog
  SQL*Plus: Release 9.2.0.1.0 - Production on 星期二 6月 3 15:16:03 2003
  Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> connect sys as sysdba

  请输入口令:
  已连接。

SQL> @?\rdbms\admin\utlxplan

  表已创建。

SQL> create public synonym plan_table for plan_table;

  同义词已创建。

SQL> grant all on plan_table to public ;

  授权成功。

SQL> @?\sqlplus\admin\plustrce
  SQL>
  SQL> drop role plustrace;
  drop role plustrace
  *

  ERROR 位于第 1 行:
  ORA-01919: 角色’PLUSTRACE’不存在

SQL> create role plustrace;

  角色已创建
SQL>
SQL> grant select on v_$sesstat to plustrace;

  授权成功。

SQL> grant select on v_$statname to plustrace;
授权成功。
SQL> grant select on v_$session to plustrace;

  授权成功。

SQL> grant plustrace to dba with admin option;

  授权成功。

SQL>
SQL> set echo off
  DBA用户首先被授予了plustrace角色,然后我们可以把plustrace授予public
  这样所有用户都将拥有plustrace角色的权限.

SQL> grant plustrace to public ;

  授权成功。
  然后我们就可以使用AutoTrace的功能了.

SQL> connect eqsp/eqsp

  已连接。

SQL> set autotrace on
SQL> set timing on
SQL>
  关于Autotrace几个常用选项的说明:
  SET AUTOTRACE OFF ---------------- 不生成AUTOTRACE 报告,这是缺省模式
  SET AUTOTRACE ON EXPLAIN ------ AUTOTRACE只显示优化器执行路径报告
  SET AUTOTRACE ON STATISTICS -- 只显示执行统计信息
  SET AUTOTRACE ON ----------------- 包含执行计划和统计信息
  SET AUTOTRACE TRACEONLY ------ 同set autotrace on,但是不显示查询输出

SQL> set autotrace traceonly
SQL> select table_name from user_tables;

已选择98行。
  已用时间: 00: 00: 00.04

execution Plan
  ----------------------------------------------------------
  0 select STATEMENT ptimizer=CHOOSE
  1 0 NESTED LOOPS
  2 1 NESTED LOOPS (OUTER)
  3 2 NESTED LOOPS (OUTER)
  4 3 NESTED LOOPS (OUTER)
  5 4 NESTED LOOPS (OUTER)
  6 5 NESTED LOOPS
  7 6 TABLE ACCESS (BY INDEX ROWID) OF ’OBJ$’
  8 7 INDEX (RANGE SCAN) OF ’I_OBJ2’ (UNIQUE)
  9 6 TABLE ACCESS (CLUSTER) OF ’TAB$’
  10 9 INDEX (UNIQUE SCAN) OF ’I_OBJ#’ (NON-UNIQUE)
  11 5 TABLE ACCESS (BY INDEX ROWID) OF ’OBJ$’
  12 11 INDEX (UNIQUE SCAN) OF ’I_OBJ1’ (UNIQUE)
  13 4 INDEX (UNIQUE SCAN) OF ’I_OBJ1’ (UNIQUE)
  14 3 TABLE ACCESS (CLUSTER) OF ’USER$’
  15 14 INDEX (UNIQUE SCAN) OF ’I_USER#’ (NON-UNIQUE)
  16 2 TABLE ACCESS (CLUSTER) OF ’SEG$’
  17 16 INDEX (UNIQUE SCAN) OF ’I_FILE#_BLOCK#’ (NON-UNIQUE)
  18 1 TABLE ACCESS (CLUSTER) OF ’TS$’
  19 18 INDEX (UNIQUE SCAN) OF ’I_TS#’ (NON-UNIQUE)
  Statistics
  ----------------------------------------------------------
  0 recursive calls
  0 db block gets
  1389 consistent gets
  0 physical reads
  0 redo size
  2528 bytes sent via SQL*Net to client
  569 bytes received via SQL*Net from client
  8 SQL*Net roundtrips to/from client
  0 sorts (memory)
  0 sorts (disk)
  98 rows processed
  SQL>
  补充一下在10g中的用法
  在10g中带有plan_table这张表,但是将名字改为了plan_table$
  只需$ORACLE_HOME/sqlplus/admin/plustrce.sql创建plustrace角色
  grant plustrace to public

设置Autotrace的命令。

SET AUTOTRACE OFF
此为默认值,即关闭Autotrace

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

SET AUTOTRACE ON EXPLAIN
显示结果集和解释计划不显示统计

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

SET AUTOTRACE

TRACEONLY STATISTICS
只显示统计

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

Autotrace执行计划的各列的涵义

ID_PLUS_EXP:每一步骤的行号

PARENT_ID_PLUS_EXP:每一步的Parent的级别号

PLAN_PLUS_EXP:实际的每步

OBJECT_NODE_PLUS_EXP:Dblink或并行查询时才会用到

AUTOTRACE Statistics常用列解释

db block gets
从buffer cache中读取的block的数量

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

physical reads
从磁盘读取的block的数量

redo size
DML生成的redo的大小

sorts (memory)
在内存执行的排序量

sorts (disk)
在磁盘上执行的排序量
转载:/article/3929034.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: