我们可以在后台调用 DBMS_JOB.RUN 吗?

Can we call DBMS_JOB.RUN in the background?

我在 DBMS_JOB.SUBMIT 的帮助下将一些作业插入到作业队列中。

我是否在下一步使用 DBMS_JOB.RUN 在后台 运行 它们?

我不想让用户等待 DBMS_JOB.RUN。

谢谢!

您可以使用 DBMS_SCHEDULER 创建工作:

BEGIN
  -- Job defined entirely by the CREATE JOB procedure.
  DBMS_SCHEDULER.create_job (
    job_name        => 'YourJobName',
    job_type        => 'PLSQL_BLOCK',
    job_action      => 'BEGIN NULL; /* Your code here*/ END;',
    start_date      => SYSTIMESTAMP, // run the job as soon as possible
    repeat_interval => NULL,         // don't repeat the job
    end_date        => NULL,         // ignore this if its not a repeating job
    enabled         => TRUE,         
    comments        => 'Your comments on and description of the job.');
END;
/

您还可以更改 job_type 以调用存储过程或外部可执行文件以及 PL/SQL 块。

如果您想查看当前 运行 个职位,您可以使用:

SELECT JOB_NAME, STATE
FROM   USER_SCHEDULER_JOBS;

如果你想view a log of your jobs那么你可以使用:

SELECT *
FROM   USER_SCHEDULER_JOB_LOG
ORDER BY LOG_DATE DESC;

和:

SELECT *
FROM   USER_SCHEDULER_JOB_RUN_DETAILS
ORDER BY LOG_DATE DESC;