基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
OceanBase 数据库 V4.2.1.x 版本 Oracle 租户下创建的定时任务并不自动调度的原因和解决方法
更新时间:2026-07-02 15:41
问题现象
在 OceanBase 数据库 V4.2.1.x 版本 Oracle 租户下创建的定时任务不调度。
obclient > create table t1 (id int,name varchar(20),record_time timestamp);
Query OK, 0 rows affected (0.11 sec)
obclient > create or replace procedure p_t1_insert
as
begin
insert into t1 values(2,'b',sysdate);
commit;
end;
/
Query OK, 0 rows affected (0.05 sec)
obclient > BEGIN
DBMS_SCHEDULER.CREATE_JOB(
job_name => 'T1_INSERT_JOB',
job_type => 'STORED_PROCEDURE',
job_action => '"TEST"."P_T1_INSERT"',
number_of_argument => 0,
start_date => SYSDATE,
repeat_interval => 'FREQ=SECONDLY; INTERVAL=10',
enabled => TRUE,
auto_drop => FALSE,
comments => 'TEST2'
);
COMMIT;
END;
/
Query OK, 1 row affected (2.54 sec)
obclient > select * from t1;
Empty set (0.01 sec)
obclient > SELECT JOB_NAME,enabled,NEXT_RUN_DATE,state,last_start_date, TO_CHAR(end_date, 'YYYY-MM-DD HH24:MI:SS TZH:TZM') FROM DBA_SCHEDULER_JOBS;
+---------------------------+---------+-------------------------------------+-----------+-------------------------------------+-------------------------------------------------+
| JOB_NAME | ENABLED | NEXT_RUN_DATE | STATE | LAST_START_DATE | TO_CHAR(END_DATE,'YYYY-MM-DDHH24:MI:SSTZH:TZM') |
+---------------------------+---------+-------------------------------------+-----------+-------------------------------------+-------------------------------------------------+
| FRIDAY_WINDOW | 1 | 15-AUG-25 10.00.00.000000 PM +08:00 | NULL | NULL | 4000-01-01 00:00:00 +08:00 |
| MONDAY_WINDOW | 1 | 18-AUG-25 10.00.00.000000 PM +08:00 | NULL | NULL | 4000-01-01 00:00:00 +08:00 |
| OPT_STATS_HISTORY_MANAGER | 1 | 13-AUG-25 01.11.57.957060 PM +08:00 | NULL | NULL | 4000-01-01 00:00:00 +08:00 |
| SATURDAY_WINDOW | 1 | 16-AUG-25 06.00.00.000000 AM +08:00 | NULL | NULL | 4000-01-01 00:00:00 +08:00 |
| SUNDAY_WINDOW | 1 | 17-AUG-25 06.00.00.000000 AM +08:00 | NULL | NULL | 4000-01-01 00:00:00 +08:00 |
| T10_INSERT_JOB | 1 | 12-AUG-25 03.05.52.000000 PM +08:00 | SCHEDULED | 12-AUG-25 03.05.42.000980 PM +08:00 | 2025-11-20 14:00:12 +08:00 |
| T15_INSERT_JOB | 1 | 12-AUG-25 02.27.23.000000 PM +08:00 | NULL | NULL | 2000-01-01 00:00:00 +08:00 |
| T1_INSERT_JOB | 1 | 12-AUG-25 01.18.35.000000 PM +08:00 | NULL | NULL | 2000-01-01 00:00:00 +08:00 |
| T2_INSERT_JOB | 1 | 12-AUG-25 01.19.41.000000 PM +08:00 | NULL | NULL | 2000-01-01 00:00:00 +08:00 |
| T3_INSERT_JOB | 1 | 12-AUG-25 01.21.47.000000 PM +08:00 | NULL | NULL | 2000-01-01 00:00:00 +08:00 |
| THURSDAY_WINDOW | 1 | 14-AUG-25 10.00.00.000000 PM +08:00 | NULL | NULL | 4000-01-01 00:00:00 +08:00 |
| TUESDAY_WINDOW | 1 | 12-AUG-25 10.00.00.000000 PM +08:00 | NULL | NULL | 4000-01-01 00:00:00 +08:00 |
| WEDNESDAY_WINDOW | 1 | 13-AUG-25 10.00.00.000000 PM +08:00 | NULL | NULL | 4000-01-01 00:00:00 +08:00 |
+---------------------------+---------+-------------------------------------+-----------+-------------------------------------+-------------------------------------------------+
13 rows in set (0.00 sec)
关键信息
RS 日志可以根据 JOB 名过滤相关信息,对应任务打印 JOB 任务过期,END_DATE 是个默认值 946656000000000,同时上面查询的 DBA_SCHEDULER_JOBS 显示的 END_DATE 是小于当前值的。
rootservice.log:[2025-08-12 13:45:19.570453] WDIAG [RS] scheduler_job (ob_dbms_sched_job_master.cpp:382) [24087][DBMS_SCHEDULER][T0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=7][errcode=0] update for end for expired job(job_info={tenant_id_:1004, job_:1125899906850790, job_name_:"T1_INSERT_JOB", lowner_:"TEST", powner_:"TEST", cowner_:"TEST", last_modify_:1754975981357338, start_date_:1754975981000000, last_date_:0, this_date_:0, next_date_:1754975981000000, end_date_:946656000000000, total_:0, interval_:"FREQ=SECONDLY; INTERVAL=10", repeat_interval_:"", failures_:0, flag_:0, what_:"TEST.P_T1_INSERT", nlsenv_:"", charenv_:"", field1_:"", scheduler_flags_:0, enabled_:true, auto_drop_:false, max_run_duration_:0, interval_ts_:10000000}, now=1754977519569471)
问题原因
创建定时任务没有指定 END_DATE,默认时间小于当前时间调度时间,导致定时任务不调度。
问题的风险及影响
自定义定时任务不调度。
适用版本
OceanBase 数据库 V4.2.1.x 版本。
解决方法
升级至问题已修复版本。目前已修复的版本包括 OceanBase 数据库 V4.2.1 BP11 Hotfix6(oceanbase-4.2.1.11-111060012025071816)及之后版本。
规避方式
创建定时任务时指定 END_DATE 时间。