給普通用戶賦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

*/


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章