Как проверить, какие схемы получили разрешение EXECUTE для объекта Oracle? - PullRequest
6 голосов
/ 10 августа 2009

Мне нужно выяснить, каким схемам уже предоставлено разрешение на выполнение определенного объекта в Oracle 10g db (в данном случае, пакета). Какой самый простой способ для меня это сделать? Есть ли встроенная функция для предоставления этой информации?

1 Ответ

6 голосов
/ 10 августа 2009
SELECT grantee
  FROM all_tab_privs
 WHERE table_name = '<your object name>'
  AND privilege = 'EXECUTE'
  AND grantor = '<object owner>';

Да, я знаю, там написано "имя_таблицы", но это относится и к исполняемым объектам. Таблица DBA_TAB_PRIVS также работает. Вам понадобятся соответствующие разрешения (например, роль DBA, SELECT ANY TALBE) для выбора из этих представлений и просмотра всех данных.

В ответ на комментарий Мартина ... Вышесказанное - это самый простой способ сделать то, о чем вы просили, о чем я знаю. Если вы хотите ограничить его пакетами, попробуйте это:

SELECT * FROM all_tab_privs JOIN all_objects ON (table_name = object_name)
 WHERE table_name = '<your object name>'
   AND object_type = 'PACKAGE'
   AND privilege = 'EXECUTE'
   AND grantor = '<object owner>';
...