2013-11-20 97 views
1

我定義爲甲骨文工作如下:爲什麼這個Oracle作業只執行一次?

BEGIN 
    DBMS_SCHEDULER.drop_job('clean_journal_partitions'); 
    DBMS_SCHEDULER.CREATE_JOB (
    job_name => 'clean_journal_partitions', 
    job_type => 'STORED_PROCEDURE', 
    job_action => 'CLEAN_JOURNAL_PARTITION', 
    repeat_interval => 'FREQ=WEEKLY;BYDAY=MON', 
    auto_drop => FALSE); 
    DBMS_SCHEDULER.ENABLE('clean_journal_partitions'); 
END; 

那如果我沒有錯,應該每週一次每週一執行。問題是它只執行一次,我不知道爲什麼。

爲了能夠更方便地測試它,我已經修改了它從每週一次的頻率改爲每10秒,這樣的:

BEGIN 
    DBMS_SCHEDULER.drop_job('clean_journal_partitions'); 
    DBMS_SCHEDULER.CREATE_JOB (
    job_name => 'clean_journal_partitions', 
    job_type => 'STORED_PROCEDURE', 
    job_action => 'CLEAN_JOURNAL_PARTITION', 
    repeat_interval => 'FREQ=SECONDLY;INTERVAL=10', 
    auto_drop => FALSE); 
    DBMS_SCHEDULER.ENABLE('clean_journal_partitions'); 
END; 

而且我有同樣的問題。它只執行一次。任何暗示爲什麼這個工作不會每10秒執行一次?

+1

檢查視圖user_scheduler_jobs並查看您的工作狀態。查看user_scheduler_job_run_details和user_scheduler_job_log的視圖,查看作業中的任何錯誤。 –

回答

1

這工作正常,我在Oracle 11g中:

CREATE TABLE TEST(
    run_time DATE 
); 

CREATE OR REPLACE PROCEDURE CLEAN_JOURNAL_PARTITION AS 
BEGIN 
    INSERT INTO TEST VALUES(SYSDATE); 
    COMMIT; 
END; 
/

BEGIN 
    DBMS_SCHEDULER.CREATE_JOB (
    job_name => 'clean_journal_partitions', 
    job_type => 'STORED_PROCEDURE', 
    job_action => 'CLEAN_JOURNAL_PARTITION', 
    repeat_interval => 'FREQ=SECONDLY;INTERVAL=10', 
    auto_drop => FALSE); 
    DBMS_SCHEDULER.ENABLE('clean_journal_partitions'); 
END; 

我得到了每10秒的TEST表中的一項。你的問題必須在你的CLEAN_JOURNAL_PARTITION程序中,也許它崩潰了?

相關問題