权限:Privilege 角色:Role这两者其实都是跟权限有关的,只不过角色的权限是不确定的,或许有1至多个,甚至可能没有权限(如果只创建了角色而没有赋予权限的话),也有可能一个角色里面也包含多个角色。因此要想查询到一个用户、一个角色到底具有怎样的权限可以通过一下几个系统数据字典来查看:
1. [USER|DBA]_sys_privs 包括【当前|所有】用户所具有的所有权限
2. [USER|DBA]_role_privs 包括【当前|所有】用户所具有的角色
3. role_role_privs 包括所有角色所拥有的其他角色
4. role_sys_privs 包括所有角色所拥有的权限
今天遇到一个诡异的问题,DBA角色所拥有的权限或角色如下:
SQL> select role,granted_role from role_role_privs where role='DBA';
ROLE GRANTED_ROLE
------------------------------ ------------------------------
DBA OLAP_DBA
DBA SCHEDULER_ADMIN
DBA DELETE_CATALOG_ROLE
DBA EXECUTE_CATALOG_ROLE
DBA WM_ADMIN_ROLE
DBA EXP_FULL_DATABASE
DBA SELECT_CATALOG_ROLE
DBA JAVA_DEPLOY
DBA GATHER_SYSTEM_STATISTICS
DBA JAVA_ADMIN
DBA XDBADMIN
DBA IMP_FULL_DATABASE
DBA XDBWEBSERVICES
直接赋予GRANTED_ROLE所列出来的角色或权限,应用那边得到的反馈居然不行,启动某个应用后提示表或视图不存在,赋予DBA角色之后就正常了,不知何故。
被授予角色的用户,如果角色具备某些权限则只能通过收回角色来达到目的,比如授予resource和create table权限,通过 revoke create table from XXX实际上XXX用户仍然具有创建表的权限,因为resource角色里面包含了create table权限,但是resource角色所具有的unlimited tablespace权限却可以通过revoke unlimited tablespace from XXX来收回权限。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12216142/viewspace-752723/
,如需转载,请注明出处,否则将追究法律责任。