Почему моя работа планировщика СУБД не выполняется? - PullRequest
0 голосов
/ 29 мая 2019

Я создаю домашнее задание, которое удалит данные старше недели, для этого я написал задание, которое будет периодически запускаться. В SQL-разработчике, когда я вижу статус задания, оно каждый раз показывает, что оно выполнено успешно, но в действительности задание выполняет заданную работу только в первый раз или когда я выполняю какие-либо изменения в нем. не могли бы вы помочь мне определить, что не так?

моя таблица имеет поле с обновленной датой в формате '2018-05-06', поэтому я использую его, чтобы определить, какие записи старше

BEGIN
    SYS.DBMS_SCHEDULER.CREATE_JOB (
            job_name => '"OWNER"."test"',
            job_type => 'PLSQL_BLOCK',
            job_action => 'DECLARE
   CURSOR c1 is
      SELECT updateddate, IDENTIFIER FROM LIMITS;

   my_updateddate VARCHAR2(255 CHAR);
   my_identifier VARCHAR2(255 CHAR);
   templateMessage3 VARCHAR2(255 CHAR);
   templateMessage4 VARCHAR2(255 CHAR);

BEGIN
   FOR i IN c1 LOOP
      my_updateddate:=i.updateddate;
      my_identifier:=i.identifier;
      templateMessage3 := replace(my_updateddate, ''-'', '''');
      templateMessage4 := TO_DATE(templateMessage3, ''yyyymmdd'');
      IF templateMessage4 < sysdate-7 THEN
      Delete from LIMITS where identifier=my_identifier AND updateddate=my_updateddate;
      END IF;
      COMMIT;
   END LOOP;
END;
',
            number_of_arguments => 0,
            start_date => TO_TIMESTAMP_TZ('2019-05-29 15:11:19 Asia/Calcutta','YYYY-MM-DD HH24.MI.SS TZR'),
            repeat_interval => 'FREQ=MINUTELY;INTERVAL=3',
            end_date => NULL,
            job_class => '"SYS"."DEFAULT_JOB_CLASS"',
            enabled => True,
            auto_drop => FALSE,
            comments => 'housekeeping',
            credential_name => NULL,
            destination_name => NULL);

    SYS.DBMS_SCHEDULER.SET_ATTRIBUTE( 
             name => '"OWNER".""', 
             attribute => 'logging_level', value => DBMS_SCHEDULER.LOGGING_OFF);

    SYS.DBMS_SCHEDULER.enable(
             name => '"OWNER"."test"');
END; 
/

Моя работа каждый раз показывает статус успешной, но удаляет строки только первый раз. Я ожидаю, что он будет удалять старые данные каждый раз, когда он запускается

...