1

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

4

1 回答 1

0

正如@Kaushik 所说,该DBMS_JOB包已被DBMS_SCHEDULER取代。它们具有作业名称而不是数字、适当的时间调度程序语言以及许多监视执行的视图等。

DBMS_SCHEDULER.CREATE_JOB过程甚至为您的问题提供了一个专用参数,称为auto_drop

此标志 ifTRUE会导致作业在完成后自动删除。资源

但是你要求DBMS_JOB,我很确定这个工作没有被删除。我刚刚验证了当用户/模式被删除时它被删除了。

作为管理员:

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
于 2018-06-29T09:07:04.887 回答