-- 确定角色的权限
select * from role_tab_privs;包含了授予角色的对象权限
select * from role_role_privs;包含了授予另一角色的角色
select * from role_sys_privs;包含了授予角色的系统权限
-- 确定用户帐户所授予的权限
select * from DBA_tab_privs ;直接授予用户帐户的对象权限
select * from DBA_role_privs ; 授予用户帐户的角色
select * from DBA_sys_privs ;授予用户帐户的系统权限
查看当前用户权限:
sql> select * fromsession_privs;
PRIVILEGE
----------------------------------------
CREATE SESSION
CREATE TABLE
CREATE CLUSTER
CREATE SYNONYM
CREATE VIEW
CREATE SEQUENCE
CREATE PROCEDURE
CREATE TRIGGER
8 rows selected.
本身的数据字典设计我个人觉得很合理,因为DBA_xxx,ALL_xxx,USER_xxx 让人一看大概就知道这个视图是干什么用的.本文简要总结了一下与权限,角色相关的视图.
一. 概述与权限,角色相关的视图大概有下面这些:
USER_SYS_PRIVS:当前用户所拥有的系统权限
SESSION_PRIVS:当前用户所拥有的全部权限
ROLE_SYS_PRIVS:某个角色所拥有的系统权限
ROLE_ROLE_PRIVS:当前角色被赋予的角色
SESSION_ROLES:当前用户被激活的角色
USER_ROLE_PRIVS: 当前用户被授予的角色
另外还有针对表的访问权限的视图:
TABLE_PRIVILEGES
ALL_TAB_PRIVS
ROLE_TAB_PRIVS:某个角色被赋予的相关表的权限
...
二. Examples 1.查询当前用户所拥有的权限Select * fromsession_privs;
2. 查询某个用户被赋予的系统权限.可以有多种方式
Select * from user_sys_privs;
或者: select * from DBA_SYS_PRIVS where grantee='XXX'
(需要当前用户拥有DBA角色)
3.查询当前用户被授予的角色:1. Select * from SESSION_ROLES order byROLE
嵌套授权的角色. 例如将DBA角色授予了一个用户,DBA角色
已经被授予的角色(例如 exp_full_database 和 imp_full_database)
也会被查询出来
2. Select * fromUSER_ROLE_PRIVS
4. 查询某一角色被赋予的系统权限Select Privilege from ROLE_SYS_PRIVS whereROLE=&Role
输入 role='CONNECT'
输出:
PRIVILEGE
--------------------
ALTER SESSION
CREATE CLUSTER
CREATE DATABASE LINK
CREATE SEQUENCE
CREATE SESSION
CREATE SYNONYM
CREATE TABLE
CREATE VIEW
Select GRANTED_ROLE from ROLE_ROLE_PRIVS whereROLE=&ROLE
输入 role= 'DBA'
输出:
GRANTED_ROLE
----------------------
DELETE_CATALOG_ROLE
EXECUTE_CATALOG_ROLE
EXP_FULL_DATABASE
IMP_FULL_DATABASE
PLUSTRACE
SELECT_CATALOG_ROLE
转自:http://blog.sina.com.cn/s/blog_629e606f0100ne81.html