普通用户调用dbms_xplan.display_cursor函数权限问题

dbms_xplan.display_cursor函数可以用来获取sql执行路径,不带任何参数可以获取当前session的最后一条sql语句的执行路径,或者可以指定参数获取指定sql的执行路径。
普通数据库用户在调用该函数时,若没有赋予相关表的查询权限,将会报错,如下:

点击(此处)折叠或打开

  1. SQL> select count(*) from t;

  2.   COUNT(*)
  3. ----------
  4.      99296

  5. SQL> select * from table(dbms_xplan.display_cursor);

  6. PLAN_TABLE_OUTPUT
  7. --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  8. User has no SELECT privilege on V$SESSION
此时可知该用户没有查询v$session视图的权限,需要赋予v_$session视图的权限

点击(此处)折叠或打开

  1. SQL> grant select on v_$session to test;

  2. Grant succeeded.

再次执行该语句,发现依然报错,原来调用该函数,还需要赋予查询v$sql、v$sql_plan等表的权限

点击(此处)折叠或打开

  1. SQL> select * from table(dbms_xplan.display_cursor);

  2. PLAN_TABLE_OUTPUT
  3. --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  4. User has no SELECT privilege on V$SESSION

点击(此处)折叠或打开

  1. SQL> grant select on v_$sql to test;

  2. Grant succeeded.

  3. SQL> grant select on v_$sql_plan to test;

  4. Grant succeeded.


点击(此处)折叠或打开

  1. SQL> select * from table(dbms_xplan.display_cursor);

  2. PLAN_TABLE_OUTPUT
  3. --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  4. SQL_ID 3694ctwp1817g, child number 1
  5. -------------------------------------
  6.  select * from table(dbms_xplan.display_cursor)

  7. Plan hash value: 3713220770

  8. ----------------------------------------------------------------------------------------------------
  9. | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
  10. ----------------------------------------------------------------------------------------------------
  11. | 0 | SELECT STATEMENT | | | | 29 (100)| |
  12. | 1 | COLLECTION ITERATOR PICKLER FETCH| DISPLAY_CURSOR | 2 | 4 | 29 (0)| 00:00:01 |
  13. ----------------------------------------------------------------------------------------------------

  14. Note
  15. -----
  16.    - cardinality feedback used for this statement


  17. 17 rows selected.

可知,普通数据库用户调用dbms_xplan.display_cursor函数,需赋予表v$session、v$sql、v$sql_plan的查询权限。




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

转载于:http://blog.itpub.net/24420807/viewspace-1343818/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值