drublik
drublik

Reputation: 466

Why this Oracle job is only executed once?

I've an Oracle job defined as follows:

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;

That if I'm not wrong, it should be executed once a week every monday. The problem is that it is executed only once and I don't know why.

To be able to test it more easily, I've modified it to change the frequency from weekly to every 10 seconds, like this:

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;

And I've the same problem. It is executed only once. Any hint why the job is not executed every 10 seconds?

Upvotes: 1

Views: 1075

Answers (1)

mavroprovato
mavroprovato

Reputation: 8362

This works fine for me in 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;

I get one entry in the TEST table every 10 seconds. Your problem must be in your CLEAN_JOURNAL_PARTITION procedure, maybe it crashes?

Upvotes: 1

Related Questions