日期:2014-05-16  浏览次数:20379 次

select any dictionary与select_catalog_role区别

select any dictionary与select_catalog_role

相同之处,有了这两个中的一个,基本就可以查询数据字典

不同之处:

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看不到。

下面具体验证一下:

2、角色的话需要重新登录或者显式的set role 来生效,而赋予系统权限是立即生效的。(P.S. 同样revoke权限也是立即生效)

select any dictionary立即生效

sys@TEST0924> desc dba_role_privs
 Name                                                  Null?    Type
 ----------------------------------------------------- -------- ------------------------------------
 GRANTEE                                                        VARCHAR2(30)
 GRANTED_ROLE                                          NOT NULL VARCHAR2(30)
 ADMIN_OPTION                                                   VARCHAR2(3)
 DEFAULT_ROLE                                                   VARCHAR2(3)

同时开两个会话,查看情况。从上至下,按顺序。

sys@TEST0924> select * from dba_role_privs where grantee='TEST';

GRANTEE                        GRANTED_ROLE                   ADM DEF
------------------------------ ------------------------------ --- ---
TEST                           RESOURCE                       NO  YES
TEST &