Как долго, пока задание, которое закончило выполнение, не будет удалено из dba_jobs?
Если я отправляю задание через dbms_job.submit и фиксирую его, то оно выполняется до завершения. Сколько еще времени у меня будет доступно для просмотра в представлении dba_jobs и что будет определять это время?
1 ответ
Как сказал @Kaushik, DBMS_JOB
пакет был заменен DBMS_SCHEDULER
источник пакета. У них есть имена заданий вместо чисел, подходящий язык планировщика времени и множество представлений для мониторинга выполнения и т. Д.
DBMS_SCHEDULER.CREATE_JOB
процедура имеет даже выделенный параметр для вашего вопроса под названием auto_drop
:
Этот флаг, если
TRUE
, вызывает автоматическое удаление задания после его завершения. источник
Но вы просили DBMS_JOB
и я скорее уверен, что работа не удалена. Я только что проверил, что он удаляется, когда пользователь / схема удаляется.
Как администратор:
CREATE USER a IDENTIFIED BY a;
GRANT CREATE SESSION, CREATE JOB TO a;
Как пользователь:
DECLARE
my_job number;
BEGIN
DBMS_JOB.SUBMIT(job => my_job,
what => 'BEGIN DBMS_STATS.GATHER_SCHEMA_STATS(NULL); END;',
next_date=>sysdate+(1/24/60),
interval=>'sysdate+(1/24/60)');
COMMIT;
end;
/
Как администратор:
SELECT * FROM DBA_JOBS WHERE schema_user='A';
JOB LOG_USER LAST_DATE NEXT_DATE ...
25 A 29.06.2018 13:46:25 29.06.2018 13:47:25
DROP USER A;
User A dropped.
SELECT * FROM DBA_JOBS WHERE schema_user='A';
no rows returned