我已经连接到oracle11g作为非dba用户。我需要创建一个新的Oracle Job。在我的作业创建查询中,我需要设置一个与现有dbms_jobs不冲突的唯一“job_id”。我的计划是从整个dbms_jobs中选择job_ids,以便从结果集中我可以确定我的job_id是否存在。 但作为非dba用户,我无法查询dbms_jobs(来自sys.job $)。 我该怎么办?
答案 0 :(得分:3)
作业由用户创建,因此查询USER_JOBS
。这包含该用户的所有工作。
同样,作为DBA用户,您不应该查询JOB$
,请使用DBA_JOBS
。
在11g中,DBMS_JOB
仅提供"for backwards compatability"。现在有更强大的DBMS_SCHEDULER
代替。
然而,你的问题的前提似乎是有缺陷的。你写过:
在我的职位创建查询中,我需要设置一个不具备的唯一“job_id” 与现有的dbms_jobs冲突。我的计划是从中选择job_ids 整个dbms_jobs,以便从结果集中我可以决定我的job_id是 现有与否
DMBS_JOB.SUBMIT()
中的作业ID是 OUT 参数。你没有指定这个,包裹会为你做。
declare
l_job_id number;
begin
dbms_job.submit( l_job_id, what => ... );
end;