1

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?
0

1 Answer 1

1

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.