完成执行的作业从 dba_jobs 中删除需要多长时间?

How long until a job that has finished executing gets removed from dba_jobs?

如果我通过 dbms_job.submit 提交作业并提交,则它会运行直到完成。我可以在 dba_jobs 视图上查看多长时间,这个时间由什么决定?

正如@Kaushik 所说,DBMS_JOB 包已被DBMS_SCHEDULERsource 取代。 他们有工作名称而不是数字、适当的时间调度程序语言和许多监控执行的视图等。

DBMS_SCHEDULER.CREATE_JOB 过程甚至有一个专门用于您的问题的参数,称为 auto_drop:

This flag if TRUE, causes the job to be automatically dropped after it has been completed. source

但是您要求DBMS_JOB,我很确定该职位没有被删除。我刚刚验证了当 user/schema 被删除时它被删除了。

作为管理员:

CREATE USER a IDENTIFIED BY a;
GRANT CREATE SESSION, CREATE JOB TO a;

作为用户 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