select any dictionary与select_catalog_role的区别(转)

转自:http://space.itpub.net/23650854/viewspace-688668 作者:zecaro
在日常开发中,连接数据库都使用开发者帐号,仅有connect和resource角色。有时候,我们需要查询v$session时,即发现此帐号没有相应的权限,这时候,就要给相应的帐号赋于select any dictionary的权限或者select_catalog_role的角色了。这两个东西都可以实现让开发者帐号访问v$session的目的,但这两个东西还是有一定区别的。此文章详细地描述了,相应的区别和使用。

相同之处:
有了这两个中的一个,基本就可以查询数据字典,数据字典就是我们经常查询的v$session或v$process这些信息了

不同之处:

  1. select any dictionary是一种系统权限(system privilege),而select_catalog_role 是一种角色(a role)。
  2. 角色的话需要重新登录或者显式的set role 来生效,而赋予系统权限是立即生效的。(P.S. 同样revoke权限也是立即生效)
  3. select_catalog_role可以查看一些数据字典的视图·(可以看role的定义),如dba_之类的,而select any dictionary可以查看sys的表,select_catalog_role看不到。

以下是详细的验证信息:
角色的话需要重新登录或者显式的set role 来生效,而赋予系统权限是立即生效的。(P.S. 同样revoke权限也是立即生效)

继续阅读“select any dictionary与select_catalog_role的区别(转)”