将基于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位生产
知道如何纠正这个问题吗?想要向我的团队演示。
谢谢,
答案 0 :(得分:2)
听起来像是您的事务隔离问题。默认值为ISOLATION_SERIALIZABLE
,相当激进。
尝试将isolationLevelForCreate
中的ISOLATION_READ_COMMITTED
更改为JobRepository
,看看情况如何。