代码之家  ›  专栏  ›  技术社区  ›  Chris Farmer Marcelo Cantos

如何枚举授予Oracle角色的权限列表?

  •  11
  • Chris Farmer Marcelo Cantos  · 技术社区  · 15 年前

    我有一个很早以前创建的土生土长的Oracle角色:

    create role MyRole;
    

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

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

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

    2 回复  |  直到 10 年前
        1
  •  11
  •   Shyamkkhadka    12 年前

    您只需从数据字典中搜索 ROLE_TAB_PRIVS . 像这样做

    从role_tab_privs中选择*role='myrole';

        2
  •  5
  •   Theodore.C    10 年前

    这很有效:

    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