#oracle #privileges
#Oracle #привилегии
Вопрос:
Что мне нужно сделать, это создать пользователя oracle, который будет видеть только заголовки процедур и функций, без тел.
Есть идеи, как я могу этого добиться, какие привилегии следует установить?
Комментарии:
1. Должен ли пользователь иметь возможность выполнять эти процедуры и функции?
Ответ №1:
Создание представления с учетной записью администратора базы данных и предоставление выбора в этом представлении должно сработать:
CREATE VIEW dba_source_pkg_headers AS
SELECT *
FROM dba_source
WHERE type = 'PACKAGE';
GRANT select ON dba_source_pkg_headers TO your_user;
обновление: это не будет работать с неупакованными функциями и процедурами. Я не думаю, что вы можете разделить заголовок и тело с помощью обычных функций / процедур.
Если вы используете обычные функции и процедуры, вы могли бы предоставить select on dba_arguments
, это дало бы вам доступ ко всем параметрам функции / процедуры.
Ответ №2:
Я не уверен, возможно ли это вообще. В качестве обходного пути вы могли бы создать «фасадные» процедуры в схеме, к которой у вашего пользователя есть доступ, а затем делегировать работу процедурам в другой схеме, к которой у вашего пользователя нет доступа. Но это довольно навязчивое изменение в дизайне вашей базы данных.
Комментарии:
1. На самом деле я ищу это решение для нашего провайдера. У нас есть доступ к этой базе данных, и мы можем вызывать процедуры по DBLINK, но мы не видим никаких пакетов, и нам пришла в голову идея, что наш провайдер мог бы создать для нас другого пользователя, который видел бы только заголовки.