oracle12c的job没有自动执行,手动运行提示任务1%正在运行问题
  ajtZ4dACL54c 2023年12月19日 26 0


有个oracle12c上的job,提交到dbms_job,不知道什么时候开始,停下来了,没有自动运行。

手动关闭这个job,重新打开,不行;删除JOB,重新创建,也不行。
参考拙作:
oracle的JOBoracle job

手动运行,可以,但提示“任务1%正在运行”。该job运行一个存储过程。手动运行该存储过程,也没有问题。反正就是不会自动执行,也不知道这个1%是什么意思,是怎么来的。

在网上寻寻觅觅,也没有找到这个“任务1%正在运行”问题的解决办法。有的文章说是重启(不知道是重启数据库还是重启服务器,估计是重启服务器,彻底一些);有的说停掉一些会话,语焉不详。最可恶的是,某度给出了一些看似很贴合的搜索结果,是c*dn上的文章,标题明确提到了这个任务1%,但文章要收费才能看下半截;上半截根本没有这个1%的内容,怀疑是个坑。吃相太难看了。谷歌就不会提供这样的结果。

最后参照一篇论述job为何不会自动执行的文章,做了些设置,同时又修改了job的执行频率,结果发现问题解决了。但究竟是因为做了设置,还是修改了执行频率,不得而知。记录如下:

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

SELECT * FROM DBA_JOBS_RUNNING WHERE job = your_job_id;

如果有记录,说明该job正在运行。如果没有,则表明此刻没有运行。

2、查看job属性

可以在pl/sql developer中,右击该job看属性,也可以通过sql来查看:

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

字段含义顾名思义。broken=Y,说明job禁用了,为N则表明job是启用的。

3、尝试重置CJQ0进程

以上都正常的话,尝试重置CJQ0进程。这是个啥进程?不知道。

先执行:

SHOW PARAMETER JOB;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 0;

这俩语句可以在sql plus命令行里执行,也可以在pl/sql developer中的命令行窗口执行

oracle12c的job没有自动执行,手动运行提示任务1%正在运行问题_oracle


然后重新设置:

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

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

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

参考文章:
Oracle定时任务(dbms_job)无法自动运行的解决方法


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月19日 0

暂无评论

推荐阅读
ajtZ4dACL54c