查看 Oracle 数据库中的定时任务执行情况

笔者在系统中配置了每 8 小时自动执行一次向量化的定时任务后,可以通过 Oracle Scheduler 相关视图,查看任务配置、运行状态与执行历史。

01 | 查看已创建的定时任务

下面的 SQL 可查看当前用户下任务是否启用、执行状态、任务动作、重复规则,以及最近和下一次执行时间:

sql 复制代码
SELECT job_name,
       enabled,
       state,
       job_type,
       job_action,
       repeat_interval,
       last_start_date,
       last_run_duration,
       next_run_date,
       failure_count
FROM   user_scheduler_jobs
ORDER BY job_name;

重点关注 enabledstatelast_start_datenext_run_datefailure_count,可初步判断任务是否正常调度。

02 | 查看当前正在运行的任务

如果需要确认任务是否仍在执行,可查询:

sql 复制代码
SELECT job_name,
       running_instance,
       session_id,
       elapsed_time,
       slave_os_process_id
FROM   user_scheduler_running_jobs;

查询结果为空,表示当前没有正在运行的 Scheduler 任务。

03 | 查看近 7 天执行记录

任务的实际开始时间、运行时长、执行状态与错误信息,可通过执行明细查看:

sql 复制代码
SELECT job_name,
       status,
       actual_start_date,
       run_duration,
       additional_info,
       errors
FROM   user_scheduler_job_run_details
WHERE  actual_start_date >= SYSTIMESTAMP - INTERVAL '7' DAY
ORDER BY actual_start_date DESC;

若只想查看向量化相关任务,可按任务名称过滤:

sql 复制代码
SELECT job_name,
       status,
       actual_start_date,
       run_duration,
       errors
FROM   user_scheduler_job_run_details
WHERE  UPPER(job_name) LIKE '%VECTOR%'
ORDER BY actual_start_date DESC;

04 | 调整每 8 小时执行的时间点

例如,任务 TK_REFRESH_VECTORS_8H 需要在每天 2 点、10 点、18 点执行,可修改其重复规则:

sql 复制代码
BEGIN
  DBMS_SCHEDULER.SET_ATTRIBUTE(
    name      => 'TK_REFRESH_VECTORS_8H',
    attribute => 'repeat_interval',
    value     => 'FREQ=DAILY;BYHOUR=2,10,18;BYMINUTE=0;BYSECOND=0'
  );
END;
/

通过任务配置、运行中状态和执行历史这三类查询,笔者可以较完整地确认定时向量化任务是否按预期执行。

关注我,和AI一起成长~