0

我以非 dba 用户的身份连接到 oracle11g。我需要创建一个新的 Oracle 作业。在我的工作创建查询中,我需要设置一个与现有 dbms_jobs 不冲突的唯一“job_id”。我的计划是从整个 dbms_jobs 中选择 job_ids,以便从结果集中我可以确定我的 job_id 是否存在。但作为非 dba 用户,我无法查询 dbms_jobs(来自 sys.job$)。我应该怎么办?

4

1 回答 1

3

作业是由用户创建的,因此 query USER_JOBS。这具有该用户的所有工作。

JOB$同样,作为 DBA 用户,您不应该查询DBA_JOBS.

在 11g 中,DBMS_JOB仅提供“向后兼容”。现在有更强大的DBMS_SCHEDULER代替。

但是,您的问题的前提似乎有缺陷。你写过:

在我的工作创建查询中,我需要设置一个与现有 dbms_jobs 不冲突的唯一“job_id”。我的计划是从整个 dbms_jobs 中选择 job_ids 以便从结果集中我可以确定我的 job_id 是否存在

作业 ID inDMBS_JOB.SUBMIT()是一个OUT参数。你不分配这个,如果为你,包会这样做。

declare

   l_job_id number;

begin

   dbms_job.submit( l_job_id, what => ... );

end;
于 2013-07-03T05:44:17.367 回答