Question

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?

Était-ce utile?

La solution

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?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top