Oracle定时任务(dbms_job)无法自动运行的解决方法

接同事消息说Oracle定时任务都不能自动运行,但手动通过dbms_job.run(<job>)执行正常,经分析,发现是CJQ0进程的问题,只需执行一条SQL语句便可。

先确认Job定时任务运行状态:

select job,last_date,last_sec,next_date,next_sec,broken,failures from dba_jobs;

然后,尝试重置CJQ0进程,先执行:

SHOW PARAMETER JOB;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 0;

视job任务量等约1-5分钟,然后重新设置:

ALTER SYSTEM SET JOB_QUEUE_PROCESSES = [原来的值];

发现定时任务的running状态依旧是no,这时候该检查CJQ0进程

  • Linux服务器执行命令:ps -ef | grep ora_cjq0
  • Windows服务器检查服务:OracleJobScheduler[SID]

如果进程或服务存在,则执行如下SQL语句启动定时任务:

exec dbms_ijob.set_enabled(true);


若进程或服务不存在,则需要重启数据库(Linux)或服务(Windows)。

原创文章禁止转载:技术学堂 » Oracle定时任务(dbms_job)无法自动运行的解决方法

精彩评论

9+8=

感谢您的支持与鼓励

支付宝扫一扫打赏

微信扫一扫打赏