有哪位大侠看到类似如下的问题,请教下2009-12-27 20:25:55 ERROR [Thread-43586] (JDBCExceptionReporter.java:78)     - ORA-00060: deadlock detected while waiting for resource2009-12-27 20:25:55 ERROR [Thread-43586] (AbstractFlushingEventListener.java:301)     - Could not synchronize database state with session
org.hibernate.exception.LockAcquisitionException: could not update: [com.bee.appserver.vpg.entity.Movie#40626]
        at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:87)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
        at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2375)
        at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2257)
        at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2557)
        at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:92)
        at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248)
        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:232)
        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:140)
        at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
        at org.hibernate.event.def.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:41)
        at org.hibernate.impl.SessionImpl.autoFlushIfRequired(SessionImpl.java:969)
        at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1114)
        at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
        at org.springframework.orm.hibernate3.HibernateTemplate$29.doInHibernate(HibernateTemplate.java:849)
        at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:372)
        at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:840)
        at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:836)
        at com.bee.appserver.common.dao.BaseDaoImpl.find(BaseDaoImpl.java:68)
        at com.bee.appserver.vpg.service.impl.AssetServiceImpl.getMovieIdByAssetId(AssetServiceImpl.java:743)
        at com.bee.appserver.vpg.service.impl.AssetServiceImpl$$FastClassByCGLIB$$607c7b36.invoke(<generated>)
        at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
        at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:696)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
?40626                                                                                                            
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
        at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
        at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:631)
        at com.bee.appserver.vpg.service.impl.SynFailedAssetHandlerImpl$$EnhancerByCGLIB$$3c6aacd9.synFailedAssetHandle(<generated>)
        at com.bee.appserver.isa.util.SynFailedAssetThreader.run(SynFailedAssetThreader.java:29)
        at java.lang.Thread.run(Thread.java:595)
Caused by: java.sql.BatchUpdateException: ORA-00060: deadlock detected while waiting for resource        at oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:343)
        at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10768)
        at org.jboss.resource.adapter.jdbc.WrappedStatement.executeBatch(WrappedStatement.java:620)
        at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
        at org.hibernate.jdbc.BatchingBatcher.addToBatch(BatchingBatcher.java:34)
        at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2353)
        ... 50 more
2009-12-27 20:24:40 ERROR [Thread-43586] (VPGServiceImpl.java:683)     - [M3P->App]publish movie failed,assetId=10216872,error:could not update: [com.bee.appserver.vpg.entity.Movie#40626]; nested exception is org.hibernate.exception.LockAcquisitionException: could not update: [com.bee.appserver.vpg.entity.Movie#40626]
org.springframework.dao.CannotAcquireLockException: could not update: [com.bee.appserver.vpg.entity.Movie#40626]; nested exception is org.hibernate.exception.LockAcquisitionException: could not update: [com.bee.appserver.vpg.entity.Movie#40626]
Caused by:
org.hibernate.exception.LockAcquisitionException: could not update: [com.bee.appserver.vpg.entity.Movie#40626]
        at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:87)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
        at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2375)
        at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2257)
        at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2557)
        at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:92)
        at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248)
        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:232)
        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:140)
        at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
        at org.hibernate.event.def.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:41)
        at org.hibernate.impl.SessionImpl.autoFlushIfRequired(SessionImpl.java:969)
        at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1114)
        at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
        at org.springframework.orm.hibernate3.HibernateTemplate$29.doInHibernate(HibernateTemplate.java:849)
        at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:372)
        at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:840)
        at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:836)
        at com.bee.appserver.common.dao.BaseDaoImpl.find(BaseDaoImpl.java:68)
        at com.bee.appserver.vpg.service.impl.AssetServiceImpl.getMovieIdByAssetId(AssetServiceImpl.java:743)
        at com.bee.appserver.vpg.service.impl.AssetServiceImpl$$FastClassByCGLIB$$607c7b36.invoke(<generated>)
        at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
        at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:696)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
?40626                                                                                                            
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
        at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:631)
        at com.bee.appserver.vpg.service.impl.SynFailedAssetHandlerImpl$$EnhancerByCGLIB$$3c6aacd9.synFailedAssetHandle(<generated>)
        at com.bee.appserver.isa.util.SynFailedAssetThreader.run(SynFailedAssetThreader.java:29)
        at java.lang.Thread.run(Thread.java:595)
Caused by: java.sql.BatchUpdateException: ORA-00060: deadlock detected while waiting for resource        at oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:343)
        at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10768)
        at org.jboss.resource.adapter.jdbc.WrappedStatement.executeBatch(WrappedStatement.java:620)
        at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
        at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:242)
        ... 54 more
2009-12-27 20:24:40 WARN  [Thread-43586] (JDBCExceptionReporter.java:77)     - SQL Error: 60, SQLState: 61000

解决方案 »

  1.   

    Caused by: java.sql.BatchUpdateException: ORA-00060: deadlock detected while waiting for resource public class BatchUpdateException
    extends SQLException
    进行批量更新操作期间发生错误时抛出的 SQLException 子类。
    除了 SQLException 提供的信息以外,BatchUpdateException 还提供批量更新期间成功执行的所有命令的更新计数,也就是发生错误之前执行的所有命令的更新计数。更新计数数组中元素的顺序对应于将命令添加到批处理中的顺序。 批量更新中的命令无法正确执行并抛出 BatchUpdateException 之后,驱动程序可以继续处理批处理中的剩余命令,也可以不再进行处理。如果驱动程序在失败后继续进行处理,那么批处理的每个命令在 BatchUpdateException.getUpdateCounts 方法返回的数组中都有一个对应的元素,而不仅仅是发生错误前成功执行的命令才有对应的元素。在驱动程序继续处理命令的情况下,所有执行失败的命令对应的数组元素都是 Statement.EXECUTE_FAILED。 
    更具体的就不清楚了
      

  2.   

    ORA-00060: deadlock detected while waiting for resource2009-12-27 20:25:55 ERROR [Thread-43586] (AbstractFlushingEventListener.java:301)    - Could not synchronize database state with session
    org.hibernate.exception.LockAcquisitionException: could not update: 
    [com.bee.appserver.vpg.entity.Movie#40626] 
    oracle 数据库出现死锁!!!你的某个session(即数据库连接)在操作表Movie时,没有提交,而该连接非正常断开(或没有commit/rollback就断开),导致Movie对应的表被锁住,另外的session(即数据库连接)试图对该Movie对应的表进行DML时就会报资源正忙无法锁定的错误!
    楼主好好检查下代码!或者,在toad/plsqldev里面看看锁住Movie对应的表的到底是哪个session或哪个sql,然后相应的找原因。结帖给分吧!数据库死锁。