user_sys_privs user_role_privs role_role_privs dba_tab_privs dba_sys_privs

1.查询对象权限视图

select * from dba_tab_privs

where GRANTEE='user_name' and owner='owner_name' and table_name='';

返回结果为空  --如果是对象授权应该返回有查询权限的一条记录

 

2.查询系统权限视图

select * from dba_sys_privs

 where GRANTEE='user_name';

 返回结果:1 row and privillege column value:unlimited tablespace

  --如果是系统授权,用户应该有授予了select any table的系统权限

3.这样看来用户不是直接用的grant sys privillege  and grant 对象 privlillege

  然后看看这个表是否授给了PUBLIC对象,这样所有的用户都可以访问和更新这个表。执行:

  select * from dba_tab_privs

  where GRANTEE='PUBLIC' and owner='owner_name' and table_name='同事不能更新的表名'

  and PRIVILEGE='UPDATE'

  返回结果为空

4.然后用同事登录的用户名和密码登录查询当前用户拥有的角色权限

  select * from session_roles ; 发现用户多了一个ROLE权限:role1

 原来DBA创建了一个角色:role1 ,然后执行脚本

grant select on table_name to role1;--把表的SELECT权限赋予role1

grant role1 to user_name;--把角色赋予了同事登录的账号

5. 查询

select * from dba_tab_privs

where GRANTEE='role1' and owner='owner_name' and table_name='同事不能更新的表名';

---返回得到该表的查询权限

 

6.如果需要更新权限,需要将表的UPDATE权限授予role1,然后我们就可以使用user_name登录更新这个表了

 grant update on table_name to role1;

 然后再在user_name用户下UPDATE table 成功

 

转自:http://blog.sina.com.cn/s/blog_6e02a2380100vv6q.html

你可能感兴趣的:(user_sys_privs user_role_privs role_role_privs dba_tab_privs dba_sys_privs)