DB2问题,程序运行时不定时出现以下sql报错问题!
|2012/11/2117:31:47.032:错误信息为:[IBM][CLIDriver][DB2/AIX64]SQL1476NThecurrenttransactio...
|2012/11/21 17:31:47.032: 错误信息为:[IBM][CLI Driver][DB2/AIX64] SQL1476N The current transaction was rolled back because of error "-911". SQLSTATE=40506
java.sql.BatchUpdateException: [IBM][CLI Driver][DB2/AIX64] SQL1476N The current transaction was rolled back because of error "-911". SQLSTATE=40506
at COM.ibm.db2.jdbc.app.SQLExceptionGenerator.throw_SQLException(Unknown Source)
at COM.ibm.db2.jdbc.app.SQLExceptionGenerator.check_batch_return_code(Unknown Source)
at COM.ibm.db2.jdbc.app.DB2PreparedStatement.executeBatch(Unknown Source)
at com.sunyard.operatornavagation.UpdateNavagation.updateCpicOnlineinfoForRM(UpdateNavagation.java:124)
at com.sunyard.insurance.icm.rm.NavigateResourceManagerServices.migrateResourceService(NavigateResourceManagerServices.java:1676)
at com.sunyard.insurance.icm.rm.SchedUpService.run(SchedUpService.java:111)
at java.lang.Thread.run(Thread.java:595)
|2012/11/21 17:31:47.036:错误信息为:[IBM][CLI Driver][DB2/AIX64] SQL1476N The current transaction was rolled back because of error "-911". SQLSTATE=40506 展开
java.sql.BatchUpdateException: [IBM][CLI Driver][DB2/AIX64] SQL1476N The current transaction was rolled back because of error "-911". SQLSTATE=40506
at COM.ibm.db2.jdbc.app.SQLExceptionGenerator.throw_SQLException(Unknown Source)
at COM.ibm.db2.jdbc.app.SQLExceptionGenerator.check_batch_return_code(Unknown Source)
at COM.ibm.db2.jdbc.app.DB2PreparedStatement.executeBatch(Unknown Source)
at com.sunyard.operatornavagation.UpdateNavagation.updateCpicOnlineinfoForRM(UpdateNavagation.java:124)
at com.sunyard.insurance.icm.rm.NavigateResourceManagerServices.migrateResourceService(NavigateResourceManagerServices.java:1676)
at com.sunyard.insurance.icm.rm.SchedUpService.run(SchedUpService.java:111)
at java.lang.Thread.run(Thread.java:595)
|2012/11/21 17:31:47.036:错误信息为:[IBM][CLI Driver][DB2/AIX64] SQL1476N The current transaction was rolled back because of error "-911". SQLSTATE=40506 展开
3个回答
展开全部
-911错误有两种可能:
一、死锁
二、超时
从你使用事务上来看,请检查你的事务是否提交;如果有提交,那么如果采用多重并发事务操作的时候,且在程序要返回结果集的时候,建议你将事务做简单的操作,而不是大量数据操作,等待反馈结果。这样的话,用户可能会失去耐心,从而加快更多的进程进行并发操作,增加并发事务量。
根据你的情况,给你如下建议:
一、根据你的需求,将反馈结果,进行小时更新或日更新;
二、根据你的实际况情,优化事务SQL语句;尽量采用中间表(没办法,DB2的数据特性)
三、延长超时设置
四、跟踪你的事务,保证事物完整性提交,尽可能减少死锁。
死锁分析方法:
用实例用户连接到db2实例,切换到死锁监视器路径下,运行db2evmon -path xxx >lock_rpt.txt来生成报告
一、死锁
二、超时
从你使用事务上来看,请检查你的事务是否提交;如果有提交,那么如果采用多重并发事务操作的时候,且在程序要返回结果集的时候,建议你将事务做简单的操作,而不是大量数据操作,等待反馈结果。这样的话,用户可能会失去耐心,从而加快更多的进程进行并发操作,增加并发事务量。
根据你的情况,给你如下建议:
一、根据你的需求,将反馈结果,进行小时更新或日更新;
二、根据你的实际况情,优化事务SQL语句;尽量采用中间表(没办法,DB2的数据特性)
三、延长超时设置
四、跟踪你的事务,保证事物完整性提交,尽可能减少死锁。
死锁分析方法:
用实例用户连接到db2实例,切换到死锁监视器路径下,运行db2evmon -path xxx >lock_rpt.txt来生成报告
追问
请问这种情况的出现会不会影像数据准确性?报错的地方我只是对数据做了个简单的更新sql,
追答
如果你将更新做成事务的话,表示已经回滚了。未更新数据。
事务的特性是:
一、原子性,如果有一步未成功操作,其他的数据都不会操作;
二、持久性,操作的过程不会因为死锁或外部原因而分步操作
三、一致性,数据的读取和操作是一致的;
四、隔离性,其实就是加锁,对记录或表进行加锁处理,防止在进程运行时对数据进行访问。
如果你未做成事务,只是表超大,那么应该是超时原因,
一、延长超时设置。
二、将表进行分区
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |