DBMS_SCHEDULER JOB interval not working

jobsoracle-11g-r2

I've created DBMS_SCHEDULER job, which type is CHAIN. Chain has 2 steps and 2 rules. Each step has PL/SQL "program" (which inserts SYSDATE to table). First rule's condition is TRUE. Second rule has condition checks if step 1 is completed and then runs second step. After I enabled CHAIN and JOB, then DBA_SCHEDULER_JOB_RUN_DETAILS table shows SUCCEEDED for both chain steps. Table keeping date has new values. So I would say that chain has ran successfully.

Problem here is that JOB does not execute second time. Job is suppose to run every 5 minutes.

DBMS_SCHEDULER.CREATE_JOB (
    job_name          => 'RUN_REFRESH',
    job_type          => 'CHAIN',
    job_action        => 'QUICK_REFRESH_CHAIN',
    repeat_interval   => 'FREQ=MINUTELY;INTERVAL=5',
    start_date       => SYSTIMESTAMP,
    enabled      => TRUE
);
END;
/

Job is also active in DBA_SCHEDULER_RUNNING_JOBS table.

Additional info:

SELECT START_DATE, LAST_START_DATE, NEXT_RUN_DATE 
FROM DBA_SCHEDULER_JOBS 
WHERE job_name = 'RUN_REFRESH'; 

shows: 
21.01.2015 12:58:18,000000000   
21.01.2015 12:58:18,328107000   
21.01.2015 12:58:18,000000000 

Questions:

  1. Does DBA_SCHEDULER_RUNNING_JOBS show only currently running
    jobs instead or enabled/scheduled jobs?
  2. Why doesn't JOB run second time, even though CHAIN ran
    successfully?

Best Answer

If a job has to run in an interval, the job needs to be in the state 'SCHEDULED' in between. In case of a job chain, make sure that it actually has an ending, otherwise it will remain running forever.

  1. DBA_RUNNING_JOBS only shows the jobs that are in state 'RUNNING'
  2. make sure the chain has an END action.