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

文章讲述了在Oracle12c环境下,一个job停止自动运行的问题,通过检查job状态、属性、CJQ0进程等方法,最终发现可能是执行频率设置或CJQ0进程影响了job的自动执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

手动关闭这个job,重新打开,不行;删除JOB,重新创建,也不行。
参考拙作:
oracle的JOB
oracle 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中的命令行窗口执行
在这里插入图片描述
然后重新设置:

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值