Вопрос

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?

Это было полезно?

Решение

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?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top