完成执行的作业从 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_SCHEDULER
包source 取代。
他们有工作名称而不是数字、适当的时间调度程序语言和许多监控执行的视图等。
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
如果我通过 dbms_job.submit 提交作业并提交,则它会运行直到完成。我可以在 dba_jobs 视图上查看多长时间,这个时间由什么决定?
正如@Kaushik 所说,DBMS_JOB
包已被DBMS_SCHEDULER
包source 取代。
他们有工作名称而不是数字、适当的时间调度程序语言和许多监控执行的视图等。
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