Я уже создаю расписание заданий для запуска процедуры на каждые 5 минут. Процедура удаления некоторых данных в указанных данных. Когда я вызываю это прямо из процедуры CALL PROCEDURE (); это работает как ожидалось. В задании планировщика журнал сообщает об успехе, но изменений не происходит. Я подозреваю, что это может быть вход пользователя в систему, потому что когда я запускаю задание по расписанию в качестве текущего сеанса, оно работает должным образом, но я запускаю с другим сеансом, которое не работает
BEGIN
SYS.DBMS_SCHEDULER.CREATE_JOB(
job_name => 'TDSUITE.SYNC_JOB'
,start_date => TO_TIMESTAMP_TZ('2020/02/01 00:00:00.000000 +07:00','yyyy/mm/dd hh24:mi:ss.ff tzr')
,repeat_interval => 'FREQ=MINUTELY;INTERVAL=5;'
,end_date => NULL
,job_class => 'DEFAULT_JOB_CLASS'
,job_type => 'PLSQL_BLOCK'
,job_action => 'TDSUITE.SYNC;'
,comments => NULL
);
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
( name => 'TDSUITE.SYNC_JOB'
,attribute => 'RESTARTABLE'
,value => FALSE);
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
( name => 'TDSUITE.SYNC_JOB'
,attribute => 'LOGGING_LEVEL'
,value => SYS.DBMS_SCHEDULER.LOGGING_OFF);
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE_NULL
( name => 'TDSUITE.SYNC_JOB'
,attribute => 'MAX_FAILURES');
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE_NULL
( name => 'TDSUITE.SYNC_JOB'
,attribute => 'MAX_RUNS');
BEGIN
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
( name => 'TDSUITE.SYNC_JOB'
,attribute => 'STOP_ON_WINDOW_CLOSE'
,value => FALSE);
EXCEPTION
-- could fail if program is of type EXECUTABLE...
WHEN OTHERS THEN
NULL;
END;
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
( name => 'TDSUITE.SYNC_JOB'
,attribute => 'JOB_PRIORITY'
,value => 3);
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE_NULL
( name => 'TDSUITE.SYNC_JOB'
,attribute => 'SCHEDULE_LIMIT');
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
( name => 'TDSUITE.SYNC_JOB'
,attribute => 'AUTO_DROP'
,value => TRUE);
SYS.DBMS_SCHEDULER.ENABLE
(name => 'TDSUITE.SYNC_JOB');
END;
/