Создание пользователя Oracle, который будет видеть только заголовки процедур

#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, но мы не видим никаких пакетов, и нам пришла в голову идея, что наш провайдер мог бы создать для нас другого пользователя, который видел бы только заголовки.