我有一个可以在另一个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
答案 0 :(得分:1)
为了在定义者权限存储过程(默认)中引用对象,过程的所有者必须能够直接访问该对象。无法通过角色授予权限,甚至是SYSDBA
等非常强大的角色。
您可能希望授予此过程的所有者SELECT ANY DICTIONARY
权限
GRANT select any dictionary
TO <<owner of procedure>>
您还可以单独授予每个对象(即DBA_SCHEDULER_JOBS
)的权限,但如果您已授予此用户SYSDBA
权限,则您可能不会过分关注限制授权。< / p>