Как долго, пока задание, которое завершило выполнение, не будет удалено из dba_jobs? - PullRequest
0 голосов
/ 29 июня 2018

Если я отправляю задание через dbms_job.submit и фиксирую его, то оно выполняется до завершения. Сколько еще времени у меня будет доступно для просмотра в представлении dba_jobs и что будет определять это время?

1 Ответ

0 голосов
/ 29 июня 2018

Как сказал @Kaushik, пакет DBMS_JOB заменен пакетом DBMS_SCHEDULER source . У них есть имена заданий вместо чисел, подходящий язык планировщика времени и множество представлений для мониторинга выполнения и т. Д.

В процедуре 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
...