如何更改 Spring batch(Job Repository) oracle 数据源模式

How can I change the Spring batch(Job Repository) oracle datasource schema

我正在使用以下 Oracle 数据库属性:

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

但是我们的 DBA 在不同的架构名称 (SQZ2210) 上创建了 JobRepository tables,这就是我收到 table 或视图不存在错误的原因。我的分析是 Spring batch JobReposity 的 schema 默认也是提供的用户名(username=ABS)。如果我的理解是正确的,我需要告诉 Spring 批处理使用不同的模式名称。前任。 :select * from SQZ2210.BATCH_JOB_EXECUTION

对于 Oracle,"user" 和 "schema" 本质上是同一件事(参见 Ask Tom)。因此,您在建立连接时需要使用 SQZ2210 的凭据。

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

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

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

谢谢。