Oracle XE 10g: планирование заданий с пакетом или процедурой: DBA_SCHEDULER_JOBS - PullRequest
1 голос
/ 24 октября 2011

У меня есть пакет, который прекрасно компилируется в другой среде 11g.
Когда я пытаюсь скомпилировать его в своей среде XE 10g с пользователем DBA, я получаю ошибку ORA-00942.

   FOR r IN (SELECT DISTINCT job_name jname
                        FROM dba_scheduler_jobs
                             ^
                       WHERE job_name LIKE p_job_prefix || '%')
   LOOP
      ...

Когда я выполняю прямой выбор таблицы, проблем не возникает.

   Select * from dba_scheduler_jobs;

Текст ошибки:

   Line: 34 Column: 34  Error: PL/SQL: ORA-00942: table or view does not exist

1 Ответ

1 голос
/ 24 октября 2011

Для ссылки на объект в хранимой процедуре определения прав (по умолчанию) владелец процедуры должен иметь прямой доступ к объекту.Привилегия не может быть предоставлена ​​с помощью роли, даже очень мощной роли, такой как SYSDBA.

Возможно, вы захотите предоставить владельцу этой процедуры привилегию SELECT ANY DICTIONARY

GRANT select any dictionary
   TO <<owner of procedure>>

Youможет также предоставить привилегии для каждого объекта (например, DBA_SCHEDULER_JOBS) индивидуально, но если вы уже предоставили этому пользователю привилегию SYSDBA, вы, вероятно, не слишком озабочены ограничением грантов.

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