Мне нужно выяснить, какие схемы уже получили разрешение на выполнение определенного объекта в Oracle 10g db (в данном случае пакет). Какой самый простой способ для меня сделать это? Есть ли встроенная функция для предоставления этой информации?Как проверить, какие схемы были предоставлены разрешения EXECUTE для объекта Oracle?
6
A
ответ
6
SELECT grantee
FROM all_tab_privs
WHERE table_name = '<your object name>'
AND privilege = 'EXECUTE'
AND grantor = '<object owner>';
Да, я знаю, это говорит «table_name», но оно относится и к исполняемым объектам. Также работает таблица 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>';
Я был на самом деле после того, как либо что-то более общее, или пакет конкретном случае ... – MPritchard
Все прощено! Хороший старый оракул и его бессмысленное называние системных таблиц :) – MPritchard
lol, all_tab_privs - ужасное имя для этой таблицы – Reimius