完成执行的作业从 dba_jobs 中删除需要多长时间?
Posted
技术标签:
【中文标题】完成执行的作业从 dba_jobs 中删除需要多长时间?【英文标题】:How long until a job that has finished executing gets removed from dba_jobs? 【发布时间】:2018-06-29 07:28:16 【问题描述】:如果我通过 dbms_job.submit 提交作业并提交,那么它会一直运行直到完成。我可以在 dba_jobs 视图上查看多长时间?是什么决定了这个时间?
【问题讨论】:
认为它会一直存在,直到您的架构存在。此外,您应该考虑使用DBMS_SCHEDULER
而不是 DBMS_JOB
,后者现在已被弃用。
【参考方案1】:
正如@Kaushik 所说,DBMS_JOB
包已被DBMS_SCHEDULER
包source 取代。
它们具有作业名称而不是数字、适当的时间调度语言以及许多用于监控执行的视图等。
DBMS_SCHEDULER.CREATE_JOB
过程甚至为您的问题提供了一个名为 auto_drop
的专用参数:
如果是
TRUE
,则此标志会导致作业在完成后自动放弃。 source
但是你要求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
【讨论】:
谢谢,您有验证来源吗?以上是关于完成执行的作业从 dba_jobs 中删除需要多长时间?的主要内容,如果未能解决你的问题,请参考以下文章
[转]51430stm32周期和执行一条语句需要多长时间的问题