【问题标题】:How can I enumerate the list of privileges granted to an Oracle role?如何枚举授予 Oracle 角色的权限列表?
【发布时间】:2011-01-25 23:42:47
【问题描述】:

我有一个很久以前创建的本土 Oracle 角色:

create role MyRole;

它已被授予从某些表和视图中选择、插入、更新和删除的能力。

grant select on sometable to MyRole;
grant insert on sometable to MyRole;
grant select on someothertable to MyRole;
-- etc.

我现在如何枚举授予该角色的特定权限列表?我有兴趣发现特定表以及此角色对每个表的权限。我怎样才能恢复这些信息?

【问题讨论】:

    标签: oracle plsql roles


    【解决方案1】:

    您可以简单地从数据字典ROLE_TAB_PRIVS 中搜索。并这样做

    SELECT * FROM ROLE_TAB_PRIVS WHERE ROLE = 'MyRole';

    【讨论】:

      【解决方案2】:

      这很好用:

      SELECT DBA_TAB_PRIVS.GRANTEE, TABLE_NAME, PRIVILEGE,DBA_ROLE_PRIVS.GRANTEE
      FROM DBA_TAB_PRIVS, DBA_ROLE_PRIVS
      WHERE DBA_TAB_PRIVS.GRANTEE = DBA_ROLE_PRIVS.GRANTED_ROLE
      AND DBA_TAB_PRIVS.GRANTEE='<ENTER GROUP ROLE HERE>'
      AND DBA_ROLE_PRIVS.GRANTEE = '<ENTER ROLE HERE>'
      ORDER BY DBA_ROLE_PRIVS.GRANTEE
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-16
        • 1970-01-01
        • 1970-01-01
        • 2018-10-11
        • 2021-05-12
        • 1970-01-01
        • 2016-01-30
        • 1970-01-01
        相关资源
        最近更新 更多