在DBMS_JOB.SUBMIT的帮助下,我将一些作业插入到作业队列中。我们可以在后台调用DBMS_JOB.RUN吗?
是否有无论如何,我在后台使用DBMS_JOB.RUN在后台运行它们?
我不希望用户等待DBMS_JOB.RUN。
谢谢!
在DBMS_JOB.SUBMIT的帮助下,我将一些作业插入到作业队列中。我们可以在后台调用DBMS_JOB.RUN吗?
是否有无论如何,我在后台使用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;
哪您使用的是Oracle版本吗? [DBMS_JOB已弃用](http://docs.oracle.com/cd/E11882_01/server.112/e25494/appendix_a.htm#ADMIN11002),因此您最好查看DBMS_SCHEDULER。 –