gpt4 book ai didi

oracle - 手动运行计划的作业。 LAST_RUN_DATE 未更新

转载 作者:行者123 更新时间:2023-12-02 08:34:37 26 4
gpt4 key购买 nike

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

我还希望能够随时手动运行该作业。

我通过运行来做到这一点

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.

关于oracle - 手动运行计划的作业。 LAST_RUN_DATE 未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43765009/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com