Как я могу перечислить ВСЕ предоставления, которые получил пользователь?

Если можно изменить синтаксический анализ () метод, изменить его для принятия смещения, где обработка должна начаться. Синтаксический анализ TCPHeader (байт [] буфер, международное смещение);

90
задан NullUserException 23 October 2011 в 15:47
поделиться

2 ответа

Если вы хотите больше, чем просто прямые гранты таблицы (например, гранты через роли, системные привилегии, такие как выбор любой таблицы и т. Д.), Вот несколько дополнительных запросов:

Системные привилегии для пользователь:

SELECT PRIVILEGE
  FROM sys.dba_sys_privs
 WHERE grantee = <theUser>
UNION
SELECT PRIVILEGE 
  FROM dba_role_privs rp JOIN role_sys_privs rsp ON (rp.granted_role = rsp.role)
 WHERE rp.grantee = <theUser>
 ORDER BY 1;

Прямые гранты для таблиц / представлений:

SELECT owner, table_name, select_priv, insert_priv, delete_priv, update_priv, references_priv, alter_priv, index_priv 
  FROM table_privileges
 WHERE grantee = <theUser>
 ORDER BY owner, table_name;

Косвенные гранты для таблиц / представлений:

SELECT DISTINCT owner, table_name, PRIVILEGE 
  FROM dba_role_privs rp JOIN role_tab_privs rtp ON (rp.granted_role = rtp.role)
 WHERE rp.grantee = <theUser>
 ORDER BY owner, table_name;
128
ответ дан 24 November 2019 в 07:01
поделиться

Предположим, вы хотите перечислить гранты для всех объектов , которые конкретный пользователь получил :

select * from all_tab_privs_recd where grantee = 'your user'

При этом не будут возвращены объекты, принадлежащие пользователю. Если они вам нужны, используйте вместо него представление all_tab_privs .

31
ответ дан 24 November 2019 в 07:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: