Oracle 用户、角色、权限(系统权限、对象权限)的数据字典(细节版)

来源:互联网 发布:短信平台软件 编辑:程序博客网 时间:2024/06/01 09:52

参考了huang_xw前辈的文章《Oracle 用户、角色、权限(系统权限、对象权限)的数据字典》-原文地址http://blog.csdn.net/huang_xw/article/details/6527762,对原文进行一些细节性的描述与编辑,并对其中问题进行了回答。

三者的字典表

1.1 用户

select * from dba_users;

包含以下信息:

USERNAME                          USER_ID PASSWORD                       ACCOUNT_STATUS                   LOCK_DATE   EXPIRY_DATE DEFAULT_TABLESPACE             TEMPORARY_TABLESPACE           CREATED     PROFILE                        INITIAL_RSRC_CONSUMER_GROUP    EXTERNAL_NAME

含有信息量更多

select * from all_users;

仅包含以下信息

USERNAME                          USER_ID CREATED

select * from user_users;

查询的是当前用户:

USERNAME                          USER_ID ACCOUNT_STATUS                   LOCK_DATE   EXPIRY_DATE DEFAULT_TABLESPACE             TEMPORARY_TABLESPACE           CREATED     INITIAL_RSRC_CONSUMER_GROUP    EXTERNAL_NAME

SYSTEM                                  5 OPEN                                         2013/5/30 1 SYSTEM                         TEMP                           2010/4/2 13 SYS_GROUP                      

1.2 角色

select * from dba_roles;

查询当前oracle版本中含有多少种角色;11gR2中含有55

1.3 权限

分为系统权限与对象权限:

select * from system_privilege_map;

查询当前oracle版本中含有多少种系统权限;11gR2中含有208

select * from table_privilege_map;

查询当前oracle版本中含有多少种角色;11gR2中含有26

三者之间关系的字典表

这类关系字典表的表名后缀都包含"_privs"

2.1 用户与角色

用户拥有的角色:

select * from dba_role_privs;

select * from user_role_privs;

select * from role_role_privs;

role_role_privsrole_role_privs 都是dba_role_privs的子集.

dba_role_privsgrantee字段包括用户名与角色名.

user_role_privsusername字段包括操作用户的用户名.--当前用户

role_role_privsrole字段只是角色名.

2.2 用户与权限

用户拥有的系统权限:

select * from dba_sys_privs;

select * from user_sys_privs;---username字段包括操作用户的用户名.-当前用户

 dba_sys_privsgrantee字段包括用户名与角色名.

注意: 没有all_sys_privs, --系统权限是不级联回收的所以不存在此表

用户拥有的对象权限:

select * from dba_tab_privs;

select * from all_tab_privs;

存放的是授予者与被授予者之间权限的关系 这个对象权限是级联回收的~所以存在此表

注意两个字段:grantee(被授予者) 与grantor(授予者)

select * from user_tab_privs;

查询当前用户的对象权限

注意查询时一般加上distinct privilege 因为基于不同的表对象权限是不同的,所以如果查询某用户所用拥有全部对象权限,要去重。

select * from dba_col_privs;

select * from all_col_privs;

select * from user_col_privs;

2.3 角色与权限

查询授出去的对象权限(通常是属主自己查)

select * from role_sys_privs;

查询角色所拥有的系统权限

select * from role_tab_privs;

查询角色所用的对象权限

注意查询时一般加上distinct privilege 一般对象权限是对于不同的表的,所以如果查询某角色所拥有的全部对象权限,要去重。

其他

查询授出去的对象权限(通常是属主自己查)

select * from user_tab_privs_made;

都是查询当前用户所授出去的对象权限

select * from all_tab_privs_made;

查询各个用户所授出的对象权限

用户拥有的对象权限

select * from user_tab_privs_recd;

都是查询当前用户所得到的系统权限

select * from all_tab_privs_recd;

都是查询各个用户所得到的系统权限

用户分配出去的列的对象权限

select * from user_col_privs_made;

select * from all_col_privs_made;

用户拥有的关于列的对象权限

select * from user_col_privs_recd;

select * from all_col_privs_recd;

 

注意: ALL版本列出了用户或PUBLIC为被授予者或授予者的那些对象。

原创粉丝点击