|
【赛迪网-it技术报道】一. 概述
与权限,角色相关的视图大概有下面这些:
dba_sys_privs: 查询某个用户所拥有的系统权限
user_sys_privs: 当前用户所拥有的系统权限
session_privs: 当前用户所拥有的全部权限
role_sys_privs: 某个角色所拥有的系统权限
注意: 要以sys用户登陆查询这个视图,否则返回空.
role_role_privs: 当前角色被赋予的角色
session_roles: 当前用户被激活的角色
user_role_privs: 当前用户被授予的角色
另外还有针对表的访问权限的视图:
table_privileges
all_tab_privs
role_tab_privs: 某个角色被赋予的相关表的权限
...
二.examples
1.查询当前用户所拥有的权限
select * from session_privs;
2.查询某个用户被赋予的系统权限:
可以有多种方式
select * from user_sys_privs;
或者: select * from dba_sys_privs where grantee='xxx'
(需要当前用户拥有dba角色)
3.查询当前用户被授予的角色:
1.select * from session_roles order by role
说明: 这个查询会返回当前用户所被授予的全部角色, 其中包括
嵌套授权的角色. 例如将dba角色授予了一个用户,dba角色
已经被授予的角色(例如 exp_full_database 和 imp_full_database)
也会被查询出来
2.select * from user_role_privs
4.查询某一角色被赋予的系统权限
select privilege from role_sys_privs where role=&role
输入 role='connect'
输出:
privilege
--------------------
alter session
create cluster
create database link
create sequence
create session
create synonym
create table
create view
5. 查询当前角色被授予的角色
select granted_role from role_role_privs where role=&role
输入 role= 'dba'
输出:
granted_role
----------------------
delete_catalog_role
execute_catalog_role
exp_full_database
imp_full_database
plustrace
select_catalog_role
说明: plustrace这个角色是用于执行sql auto trace的, 通过执行
$oracle_home/sqlplus/admin/plustrce.sql可以生成这个角色。
|