quartz 集群使用oracle数据库,出现死锁
如题:
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
这个主要是要搓开job处理的时间,将定点job和细粒度执行job搓开执行。
怎么解决...
UPDATE QRTZ_TRIGGERS SET
TRIGGER_STATE = ? WHERE JOB_NAME = ? AND JOB_GROUP = ? AND TRIGGER_STATE = ?我也遇到了
UPDATE QRTZ_TRIGGERS SET
TRIGGER_STATE = ? WHERE JOB_NAME = ? AND JOB_GROUP = ? AND TRIGGER_STATE = ?我也遇到了
先检查一下对数据库操作部分的程序是不是有问题。如果单纯地进行这种定时任务,是不会发生死锁的情况。
先检查一下对数据库操作部分的程序是不是有问题。如果单纯地进行这种定时任务,是不会发生死锁的情况。
真正该查的是:
ORA-00060
去查oracle的trace文件,看是什么sql造成了死锁。
谁来帮帮我啊