Oracle XE 10g:在程序包或过程中的作业调度:DBA_SCHEDULER_JOBS

时间:2011-10-24 16:14:02

标签: oracle plsql job-scheduling

我有一个可以在另一个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 个答案:

答案 0 :(得分:1)

为了在定义者权限存储过程(默认)中引用对象,过程的所有者必须能够直接访问该对象。无法通过角色授予权限,甚至是SYSDBA等非常强大的角色。

您可能希望授予此过程的所有者SELECT ANY DICTIONARY权限

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

您还可以单独授予每个对象(即DBA_SCHEDULER_JOBS)的权限,但如果您已授予此用户SYSDBA权限,则您可能不会过分关注限制授权。< / p>