quartz_job.xml配置的JOB为啥不执行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了quartz_job.xml配置的JOB为啥不执行相关的知识,希望对你有一定的参考价值。

这是配置文件,TestJob实现了Job接口,execute方法中只有一个system.out
<job>
<job-detail>
<name>myJob</name>
<group>group1</group>
<description>this is a test job</description>
<job-class>
com.test.TestJob
</job-class>
<volatility>false</volatility>
<durability>false</durability>
<recover>false</recover>
</job-detail>
<trigger>
<cron>
<name>myJobTrigger</name>
<group>group1</group>
<job-name>myJob</job-name>
<job-group>group1</job-group>
<cron-expression>0/20 * * * * ?</cron-expression>
</cron>
</trigger>
</job>

因为你的testjob类名字跟jobname不同啊,这样就反射不到你的testjob上了,也就是说testjob跟myjob这两个名字应该是一样的 参考技术A 我是来打酱油的

oracle job不自动执行,手动可以执行

解决方法:

用sysdba登录,执行show parameter job_queue_process看看结果是不是0

如果是这个原因,可以修改此参数

ALTER SYSTEM SET job_queue_processes = 100;

 

小结

1)job_queue_processes参数决定了job作业能够使用的总进程数。

2)当该参数为0值,任何job都不会被执行,建议合理设置该值且至少大于1。

3)对于job运行时间也应该尽量合理的设置间隔以及启动时间。

4)如果同一时间内运行的Job数很多,过小的参数值导致job不得不进行等待。而过大的参数值则消耗更多的系统资源。

5)job_queue_processes取值范围为0到1000,总共可创建多少个job进程由job_queue_processes参数来决定。

6)当job_queue_processes大于1时,且并行执行job时,至少一个为协调进程。其总数不会超出job_queue_processes的值。

7)job_queue_processes参数的值为且DBMS_JOB与DBMS_SCHEDULER共享。

8)job_queue_processes参数,当设定该值为0的时候则任意方式创建的job都不会运行。

9)非零值的job_queue_processes,其job子进程数依赖于可用资源,资源配置方式以及当前运行的job数来自行调整。

10)此外对于Scheduler jobs方式还受限制于scheduler属性MAX_JOB_SLAVE_PROCESSES的设置。

11)可以通过DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE来设置max_job_slave_processes

以上是关于quartz_job.xml配置的JOB为啥不执行的主要内容,如果未能解决你的问题,请参考以下文章

Spring Batch - 为啥在 Web 上下文而不是 Job 上下文中创建/执行作业 Step bean?

kettle定时设置每周一7点执行为啥没执行?

quartz中,同一个job的并发执行

XXL-JOB逻辑自测及执行参数配置踩坑

Jenkins-job之间依赖关系配置

oracle job不自动执行