给普通用户赋AUTOTRACE权限

前言:

平时在SCOTT用户上做实验时需要用到AUTOTRACE功能

但由于没有权限,所以会报以下错误:

SQL> conn scott/a123456
已连接。
SQL> set autotrace traceonly
SP2-0618: 无法找到会话标识符。启用检查 PLUSTRACE 角色
SP2-0611: 启用 STATISTICS 报告时出错

 

上网搜了下是由于SCOTT用户没有PLUSTRACE 角色权限导致的。

现在来创建PLUSTRACE 角色并赋权给PUBLIC

----


实验:

-- 参考eygle的文章:http://www.eygle.com/faq/AutoTrace.htm

SQL> conn sys/a123456 as sysdba
已连接。
SQL> show user
USER 为 "SYS"
SQL> @?\rdbms\admin\utlxplan


表已创建。


已用时间:  00: 00: 00.18
SQL> create public synonym plan_table for plan_table;
create public synonym plan_table for plan_table
                      *
第 1 行出现错误:
ORA-00955: 名称已由现有对象使用


已用时间:  00: 00: 00.06


SQL> grant all on plan_table to public ;


授权成功。


已用时间:  00: 00: 00.07
SQL> @?\sqlplus\admin\plustrce
SQL> drop role plustrace;
drop role plustrace
          *
第 1 行出现错误:
ORA-01919: 角色 'PLUSTRACE' 不存在


已用时间:  00: 00: 00.03
SQL> create role plustrace;


角色已创建。


已用时间:  00: 00: 00.08
SQL>
SQL> grant select on v_$sesstat to plustrace;


授权成功。


已用时间:  00: 00: 00.01
SQL> grant select on v_$statname to plustrace;


授权成功。


已用时间:  00: 00: 00.01
SQL> grant select on v_$mystat to plustrace;


授权成功。


已用时间:  00: 00: 00.03
SQL> grant plustrace to dba with admin option;


授权成功。


已用时间:  00: 00: 00.01
SQL>
SQL> set echo off
SQL>
SQL> grant plustrace to public ;


授权成功。

-- 

到此为止,已经成功给所有用户赋予执行AUTOTRACE的权限了。现在切换到SCOTT用户支测试一下


已用时间:  00: 00: 00.01
SQL> conn scott/a123456
已连接。
SQL> set autot trace

已用时间:  00: 00: 00.02
SQL> select * from emp ;


已选择14行。


已用时间:  00: 00: 00.01


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


--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |    14 |   532 |     3   (0)| 00:00:01 |
|   1 |  TABLE ACCESS FULL| EMP  |    14 |   532 |     3   (0)| 00:00:01 |
--------------------------------------------------------------------------




统计信息
----------------------------------------------------------
        104  recursive calls
          0  db block gets
         23  consistent gets
          0  physical reads
          0  redo size
       1631  bytes sent via SQL*Net to client
        519  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
         14  rows processed

--=========================================================================--

以下是刚才用到的两个脚本的内容:

--1.?\rdbms\admin\utlxplan

/*

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

*/

-- 2. ?\sqlplus\admin\plustrce

/*

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

*/


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值