Spring Batch的SimpleJobRepository中的CannotSerializeTransactionException

时间:2018-01-11 16:03:48

标签: spring-boot spring-batch

将基于Spring Boot项目构建的SpringBatch带到更高的环境中,我没有收到奇怪的错误: Caused by: org.springframework.dao.CannotSerializeTransactionException: PreparedStatementCallback; SQL [INSERT into BATCH_JOB_EXECUTION_PARAMS(JOB_EXECUTION_ID, KEY_NAME, TYPE_CD, STRING_VAL, DATE_VAL, LONG_VAL, DOUBLE_VAL, IDENTIFYING) values (?, ?, ?, ?, ?, ?, ?, ?)]; ORA-08177: can't serialize access for this transaction ; nested exception is java.sql.SQLException: ORA-08177: can't serialize access for this transaction

我是在本地运行这个针对正在运行的Oracle数据库: Oracle Enterprise 11g R2 v11.2.0.3

将它放入我们的测试"正在运行oracle的环境: Oracle Database 12c企业版12.1.0.2.0版 - 64位生产

知道如何纠正这个问题吗?想要向我的团队演示。

谢谢,

1 个答案:

答案 0 :(得分:2)

听起来像是您的事务隔离问题。默认值为ISOLATION_SERIALIZABLE,相当激进。

尝试将isolationLevelForCreate中的ISOLATION_READ_COMMITTED更改为JobRepository,看看情况如何。

相关问题