手动 运行 一项预定作业。 LAST_RUN_DATE 没有更新

manually running a scheduled job. LAST_RUN_DATE is not updating

我在数据库上有一份工作,使用 DBMS 调度程序 运行 每晚凌晨 1 点。

我也希望能够在任何时候手动 运行 作业。

我通过 运行ning

execute dbms_scheduler.run_job('JOB_NAME');

这一切都很好,工作确实 运行,但是当我在 DBA_SCHEDULER_JOBS 上查找工作时 LAST_RUN_DATE 列仍然只保存作业最后一次 运行 来自调度程序的日期(凌晨 1 点),而不是当我手动 运行 它时。这对任何人都有意义吗?我希望能够获得作业的最后一次 运行 以便我可以向用户显示 运行 宁它。

这是我查找 LAST_RUN_DATE,

的查询
SELECT LAST_START_DATE 
   FROM DBA_SCHEDULER_JOBS 
WHERE job_name='JOB_NAME';

我的解决方法是使用它来获取最后日期,但它似乎不正确:

select log_date, job_name, status, run_duration
  from dba_scheduler_job_run_details 
where job_name='JOB_NAME' 

dbms_scheduler.run_job 上的可选参数 use_current_session 在省略时默认为 TRUE。将此参数设置为 FALSE 将更新 last_start_date:

execute dbms_scheduler.run_job('JOB_NAME', use_current_session => false);

但是,设置此参数可能会导致其他副作用。有关详细信息,请参阅特定 Oracle 版本的 Oracle 文档。

12.1 docs (强调我的):

use_current_session:

This specifies whether or not the job run should occur in the same session that the procedure was invoked from.The job always runs as the job owner, in the job owner's schema, unless it has credential specified, then the job runs using the user named in the credential.

When use_current_session is set to TRUE:

You can test a job and see any possible errors on the command line.

state, run_count, last_start_date, last_run_duration, and failure_count of *_scheduler_jobs are not updated.

RUN_JOB can be run in parallel with a regularly scheduled job run.

When use_current_session is set to FALSE:

You need to check the job log to find error information. All relevant fields in *_scheduler_jobs are updated. RUN_JOB fails if a regularly scheduled job is running.