SQL*PLUS 启动用autotrace

很久很久很久很久很久。。。。没有写日志了。这些天在干什么呢?整天被一些无聊至极的工作缠着,上个周末就连续加了两天的班。要么忍,要么残忍。迟早我民要残忍一回!加油!今天看看普通用户如何启用SQLPLUS中的AUTOTRACE工具。

在sqlplus中,普通用户是不能启动autotrace功能的:
SQL> conn scott/tiger
已连接。
SQL> set autotrace on
SP2-0618: 无法找到会话标识符。启用检查 PLUSTRACE 角色
SP2-0611: 启用 STATISTICS 报告时出错

原因是缺少一个角色:PLUSTRACE。PLUSTRACE 这个是专门为SQLPLUS设计的角色,它允许拥有该角色的的用户访问特定的V$_视图。
通过执行plustrace.sql可以创建该角色。该文件的路径(MS下):E:\oracle\product\10.2.0\db_1\sqlplus\admin

内容如下:
--
-- Copyright (c) Oracle Corporation 1995, 2002.  All Rights Reserved.
--
-- NAME
--   plustrce.sql
--
-- DESCRIPTION
--   Creates a role with access to Dynamic Performance Tables
--   for the SQL*Plus SET AUTOTRACE ... STATISTICS command.
--   After this script. has been run, each user requiring access to
--   the AUTOTRACE feature should be granted the PLUSTRACE role by
--   the DBA.
--
-- USAGE
--   sqlplus "/ as sysdba" @plustrce
--
--   Catalog.sql must have been run before this file is run.
--   This file must be run while connected to a DBA schema.

set echo on

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;
set echo off

可以看到,创建了一个角色plustrace,并为该角色授予可以访问 v_$sesstat  \   v_$statname      \    v_$mystat  的权限。然后将该角色授予DBA角色。

必须用SYS执行该脚本(v_$视图属性于SYS用户,V$视图属于fixed table,无法执行授权操作)。
然后对scott授权:grant plustrace to scott;
SQL> set autotrace traceonly
SQL> select empno from emp;

已选择15行。


执行计划
----------------------------------------------------------
Plan hash value: 179099197

---------------------------------------------------------------------------
| Id  | Operation        | Name   | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------
|   0 | SELECT STATEMENT |        |    15 |    60 |     1   (0)| 00:00:01 |
|   1 |  INDEX FULL SCAN | PK_EMP |    15 |    60 |     1   (0)| 00:00:01 |
---------------------------------------------------------------------------


统计信息
----------------------------------------------------------
        307  recursive calls
          0  db block gets
         54  consistent gets
          6  physical reads
          0  redo size
        561  bytes sent via SQL*Net to client
        385  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          5  sorts (memory)
          0  sorts (disk)
         15  rows processed
现在就可以用SQLPLUS 中的autotrace命令了。

常的AUTOTRACE方法:
只显示执行计划和统计信息,不显示结果
set autotrace traceonly        
显示执计划和结果,不显示统计信息
set autotrace on explain
显示执行结果、执行计划、统计信息
set autotrace on
显示执行结果和统计信息,不显示执行计划
set autotrace on statistics
关闭autotrace
set autotrace off

AUTOTRACE不会生成跟踪文件,而且将执行计划和统计信息格式化方便阅读。十分方便。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24478467/viewspace-712738/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/24478467/viewspace-712738/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值