Как сказал @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