2016-02-12 57 views
1

在DBMS_JOB.SUBMIT的幫助下,我將一些作業插入到作業隊列中。我們可以在後臺調用DBMS_JOB.RUN嗎?

是否有無論如何,我在後臺使用DBMS_JOB.RUN在後臺運行它們?

我不希望用戶等待DBMS_JOB.RUN。

謝謝!

+1

哪您使用的是Oracle版本嗎? [DBMS_JOB已棄用](http://docs.oracle.com/cd/E11882_01/server.112/e25494/appendix_a.htm#ADMIN11002),因此您最好查看DBMS_SCHEDULER。 –

回答

2

您可以使用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; 
+0

嗨!謝謝你的評論。它會立即執行函數(job_action)還是將其放入作業隊列中? – Dax

+0

它會在後臺? – Dax

+0

它將被放入一個工作隊列中,但是被安排在隊列中儘快執行,並且當像這樣安排時,我總是會體驗到它在毫秒內進入隊列。是的,它會在後臺。 – MT0

相關問題