quartz 集群使用oracle数据库,出现死锁

发布于 2021-11-23 22:21:28 字数 3451 浏览 953 评论 9

如题:

org.quartz.impl.jdbcjobstore.LockException: Failure obtaining db row lock: ORA-00060: 等待资源时检测到死锁
 [See nested exception: java.sql.SQLException: ORA-00060: 等待资源时检测到死锁
]
        at org.quartz.impl.jdbcjobstore.StdRowLockSemaphore.obtainLock(StdRowLockSemaphore.java:155)
        at org.quartz.impl.jdbcjobstore.JobStoreTX.doCheckin(JobStoreTX.java:1386)
        at org.quartz.impl.jdbcjobstore.JobStoreSupport$ClusterManager.manage(JobStoreSupport.java:2378)
        at org.quartz.impl.jdbcjobstore.JobStoreSupport$ClusterManager.run(JobStoreSupport.java:2409)
* Nested Exception (Underlying Cause) ---------------
java.sql.SQLException: ORA-00060: 等待资源时检测到死锁

        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
        at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
        at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
        at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:799)
        at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1037)
        at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:839)
        at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1132)
        at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3316)
        at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3361)
        at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:93)
        at org.quartz.impl.jdbcjobstore.StdRowLockSemaphore.obtainLock(StdRowLockSemaphore.java:137)
        at org.quartz.impl.jdbcjobstore.JobStoreTX.doCheckin(JobStoreTX.java:1386)
        at org.quartz.impl.jdbcjobstore.JobStoreSupport$ClusterManager.manage(JobStoreSupport.java:2378)
        at org.quartz.impl.jdbcjobstore.JobStoreSupport$ClusterManager.run(JobStoreSupport.java:2409)

连接此数据库的客户端共有20个weblogic 逻辑server 同时连接 ,定时任务是每两钟执行一次,此问题今天上午10点左右出现,下点2点发现的,影响了一批任务,目前将其中2个server的数据库进行了更新,任务恢复正常处理,剩下的server目前因为是生产服务器,还不敢重启。

注:重启的2台server更新数据库的原因,是单独启动这两台,死在了“[org.quartz.core.QuartzScheduler.setJobFactory(QuartzScheduler.java:1853)] - JobFactory set to: org.s
pringframework.scheduling.quartz.AdaptableJobFactory@4e33e7”这一行就不动了。


此问题如何解决 ,请高手解答,另外,启动的两台server目前连接的是测试库,此方法也只是江湖救急,现在也不能保证将所有的server重启后能解决问题。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

顾挽 2021-11-24 16:19:49

这个主要是要搓开job处理的时间,将定点job和细粒度执行job搓开执行。

够钟 2021-11-24 16:19:49

怎么解决...

回忆凄美了谁 2021-11-24 16:19:36

   UPDATE QRTZ_TRIGGERS SET

TRIGGER_STATE = ? WHERE JOB_NAME = ? AND JOB_GROUP = ? AND TRIGGER_STATE = ?我也遇到了

落墨 2021-11-24 16:19:34

   UPDATE QRTZ_TRIGGERS SET

TRIGGER_STATE = ? WHERE JOB_NAME = ? AND JOB_GROUP = ? AND TRIGGER_STATE = ?我也遇到了

情场扛把子 2021-11-24 16:19:27

先检查一下对数据库操作部分的程序是不是有问题。如果单纯地进行这种定时任务,是不会发生死锁的情况。

奈何桥上唱咆哮 2021-11-24 16:10:40

先检查一下对数据库操作部分的程序是不是有问题。如果单纯地进行这种定时任务,是不会发生死锁的情况。

怎言笑 2021-11-24 15:29:49

真正该查的是:
ORA-00060

叹沉浮 2021-11-24 15:14:24

去查oracle的trace文件,看是什么sql造成了死锁。

怎言笑 2021-11-24 13:45:50

谁来帮帮我啊

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文