如何更改Spring批处理(Job Repository)oracle数据源模式

时间:2015-11-17 23:09:25

标签: spring spring-batch spring-batch-admin

我正在使用以下oracle DB属性:

ds.username=ABC
ds.password=*****
ds.driverClassName=oracle.jdbc.OracleDriver`*`
ds.url=jdbc:oracle:thin:@xyz.com:1521:db1

但是我们的DBA在不同的模式名称(SQZ2210)上创建了JobRepository表,这就是为什么我得到表或视图不存在错误。我的分析是Spring批处理JobReposity的模式默认情况下也是提供的用户名(用户名= ABS)。如果我的理解是正确的,我需要告诉Spring批处理使用不同的模式名称。恩。 :select * from SQZ2210.BATCH_JOB_EXECUTION

2 个答案:

答案 0 :(得分:2)

对于Oracle,“用户”和“架构”本质上是相同的(请参阅此Ask Tom)。因此,在建立连接时需要使用SQZ2210的凭据。

如果您的业务表位于不同的用户/不同的数据源下,这可能会给您带来额外的复杂性;现在你必须关注跨多个数据源的步骤的事务完整性(它引入了JTA,XA等)。

有些人认为Spring Batch表应该包含在您的业务表中,因为作业元数据是如此密切相关;即作业本身是业务数据,尤其是当您考虑可能存储在作业参数和执行上下文中的内容时。

答案 1 :(得分:1)

我能够通过添加模式表前缀来解决此问题。 “batch.ds.prefix = XYZ.BATCH_”。只需确保添加“.BATCH_”,因为Spring Batch会截断此默认表前缀名称“BATCH_”,除非您修改了JobRepository元数据模式。

感谢。