Как я могу перечислить список привилегий, предоставленных роли Oracle? - PullRequest
12 голосов
/ 10 марта 2010

У меня есть доморощенная роль Oracle, которая была создана давно:

create role MyRole;

Ему предоставлена ​​возможность выбирать, вставлять, обновлять и удалять из некоторых таблиц и представлений.

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

Как теперь я могу перечислить конкретный список привилегий, которые были предоставлены роли? Я заинтересован в обнаружении конкретных таблиц и прав, которые эта роль имеет в отношении каждой таблицы. Как я могу восстановить эту информацию?

Ответы [ 2 ]

13 голосов
/ 12 сентября 2012

Вы можете просто искать из словаря данных ROLE_TAB_PRIVS. И сделай так

SELECT * FROM ROLE_TAB_PRIVS WHERE ROLE = 'MyRole';

5 голосов
/ 09 июля 2014

это хорошо работает:

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
...