Oracle 数据库定时任务 Scheduler 执行历史状态排查 甲骨文关系型数据库高级用法
🕗2026-08-30👁️0
在系统中配置了每 8 小时自动执行一次向量化的定时任务后,可以通过 Oracle Scheduler 相关视图,查看任务配置、运行状态与执行历史。
01 | 查看已创建的定时任务
下面的 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; |
重点关注 enabled、state、last_start_date、next_run_date 和 failure_count,可初步判断任务是否正常调度。
02 | 查看当前正在运行的任务
如果需要确认任务是否仍在执行,可查询:
| SELECT job_name, |
| running_instance, |
| session_id, |
| elapsed_time, |
| slave_os_process_id |
| FROM user_scheduler_running_jobs; |
查询结果为空,表示当前没有正在运行的 Scheduler 任务。
03 | 查看近 7 天执行记录
任务的实际开始时间、运行时长、执行状态与错误信息,可通过执行明细查看:
| 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; |
若只想查看向量化相关任务,可按任务名称过滤:
| 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 点执行,可修改其重复规则:
| 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; |
| / |
通过任务配置、运行中状态与执行历史这三类的查看,可以比较完整地知道定时向量化任务是否按预期执行。