oracle-запрос для поиска привилегий хранимой процедуры - PullRequest
10 голосов
/ 28 января 2010

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

Допустим, пользователь UserA и имя хранимой процедуры my_stored_proc

Я хочу знать, есть ли у UserA разрешение на выполнение my_stored_proc

Пользователь A не является владельцем хранимого процесса. Другой владелец дает ему разрешение.

Ответы [ 4 ]

12 голосов
/ 28 января 2010

Для учета грантов через роль:

  select grantee, table_name, privilege
     from dba_tab_privs
     where
       table_name = 'my_stored_proc'
        and 
       owner = 'ownerOfObject'
       and
       (grantee = 'userA'
         or
         grantee in
          (select granted_role
        from dba_role_privs
        where grantee = 'userA'
           )
        )
4 голосов
/ 28 января 2010

Вы можете попробовать

select ap.*
from All_Procedures ap
where ap.owner = 'UserA'

Это говорит только о том, что пользователь A является владельцем. Я полагаю, что UserA может иметь разрешение, даже если не владелец. Не уверен, как это проверить.

EDIT: Другие таблицы для проверки

USER_SYS_PRIVS
USER_TAB_PRIVS
USER_ROLE_PRIVS
ROLE_SYS_PRIVS
ROLE_TAB_PRIVS

Я редко спрашивал их, поэтому я не совсем уверен, как найти то, что вы ищете, но я бы начал с них.

2 голосов
/ 28 января 2010

Понял ...

SELECT * FROM DBA_TAB_PRIVS A WHERE GRANTEE = 'UserA' AND GRANTOR = 'someoneelse' and privilege = 'EXECUTE'
0 голосов
/ 07 марта 2019

Это то, что у меня сработало, я хотел найти всех SP, к которым у меня есть доступ:

выберите * из USER_TAB_PRIVS, где GRANTEE = '______' и PRIVILEGE = 'EXECUTE'

Столбцы в USER_TAB_PRIVS включают GRANTEE, OWNER, GRANTOR, TABLE_NAME (в данном случае имя SP) и PRIVILEGE, так что, на мой взгляд, это идеально.

Насколько я понимаю, ответы dpbradley и Omnipresent не будут работать для обычного пользователя, поскольку они не могут получить доступ к таблицам DBA_ *.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...