用户权限和角色的系统视图和字典
您可以使用系统视图和字典查找有关各种类型的权限和角色授予的信息,如下图所示:
查询所有的用户和角色的系统授权信息
可以使用系统视图sys_user或者sys_roles查询用户被授予的系统特权:
select usename,usesysid,usecreatedb,usesuper,userepl,usebypassrls
from sys_user;
usename |usesysid |usecreatedb |usesuper |userepl |usebypassrls |
--------+---------+------------+---------+--------+-------------+
system |10 |true |true |true |true |
sao |9 |false |false |false |false |
sso |8 |false |false |false |false |
u1 |16603 |true |false |false |false |
test |16394 |false |false |false |false |
rr |16606 |false |true |false |false |
t1 |16604 |false |false |false |false |
查询所有用户和角色的对象授权信息
可以使用系统视图DBA_TAB_PRIVS查询用户被授予的表对象的信息:
SELECT * FROM DBA_TAB_PRIVS WHERE grantee = 'test';
grantee |owner |table_name |grantor |privilege |grantable |
--------+-------+-----------+--------+-----------+----------+
test |system |orders |system |SELECT |NO |
test |system |orders |system |INSERT |NO |
test |system |orders |system |UPDATE |NO |
test |system |orders |system |REFERENCES |NO |
查询当前会话的角色信息
使用SESSION_USER和CURRENT_USER可以查询到当前用户角色,和当前会话的角色:
SELECT SESSION_USER, CURRENT_USER;
session_user |current_user |
-------------+-------------+
system |system |