You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle19c中DBMS_SCHEDULER作业下一次启动时间查询与更新方法咨询

Oracle 19c DBMS_SCHEDULER 作业时间操作解答

一、获取作业下一次启动时间

直接查询scheduler系列视图的NEXT_RUN_DATE字段即可,普通用户可查USER_SCHEDULER_JOBS,有更高权限可查ALL_SCHEDULER_JOBS/DBA_SCHEDULER_JOBS,该字段为TIMESTAMP WITH TIME ZONE类型,存储作业最新的下一次预定执行时间。
示例代码:

-- 基础查询
SELECT job_name, next_run_date
FROM user_scheduler_jobs
WHERE job_name = '你的作业名称';

-- 转换为指定格式输出
SELECT job_name, TO_CHAR(next_run_date, 'DD.MM.YYYY HH24:MI:SS') next_run_time
FROM user_scheduler_jobs
WHERE job_name = 'YOUR_JOB_NAME';

二、更新作业下一次启动时间

支持该操作,使用DBMS_SCHEDULER.SET_ATTRIBUTE过程修改作业的NEXT_RUN_DATE属性即可,传入的字符串格式日期只要先通过TO_DATE转换为日期类型即可,支持从自定义表、自定义函数取值传入。

常用场景示例

  1. 直接传入指定格式日期字符串
BEGIN
  DBMS_SCHEDULER.SET_ATTRIBUTE(
    name => 'YOUR_JOB_NAME',
    attribute => 'NEXT_RUN_DATE',
    value => TO_DATE('15.10.2024 14:30:00', 'DD.MM.YYYY HH24:MI:SS')
  );
END;
/
  1. 从预配置表读取日期值传入
DECLARE
  v_next_run DATE;
BEGIN
  SELECT run_datetime INTO v_next_run
  FROM your_job_config_table
  WHERE job_name = 'YOUR_JOB_NAME' AND ROWNUM = 1;

  DBMS_SCHEDULER.SET_ATTRIBUTE(
    name => 'YOUR_JOB_NAME',
    attribute => 'NEXT_RUN_DATE',
    value => NVL(v_next_run, SYSDATE)
  );
END;
/
  1. 从作业时机判定函数取值传入
BEGIN
  DBMS_SCHEDULER.SET_ATTRIBUTE(
    name => 'YOUR_JOB_NAME',
    attribute => 'NEXT_RUN_DATE',
    value => get_job_next_run_time('YOUR_JOB_NAME')
  );
END;
/

注意:修改NEXT_RUN_DATE仅影响下一次作业执行时间,不会改动作业原有重复执行规则,本次修改的时间点执行完成后,作业会继续按照原有REPEAT_INTERVAL规则生成后续执行时间。如果需要永久调整作业执行周期,需要修改REPEAT_INTERVAL属性。

内容的提问来源于stack exchange,提问作者Николай Шевцов

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 22:45:05