2

我有一个春季批处理管理应用程序。我们最近尝试通过创建具有最低权限的新 oracle 用户来提高安全性。更换弹簧批处理应用程序的用户后,我收到此错误。

exception: org.springframework.dao.DataAccessResourceFailureException: Could not obtain sequence value; nested exception is java.sql.SQLException: ORA-00942: table or view does not exist

在查看了应用程序和 tomcat 日志后,我发现应用程序在抛出错误之前尝试了 3 次执行此查询。

SELECT JOB_INSTANCE_ID, JOB_NAME from BATCH_JOB_INSTANCE where JOB_NAME = ? and JOB_KEY = ? 我尝试了来自 sql developer 的相同查询,其值在日志中说明,但返回时没有任何结果 - 但成功完成。(没有找到表错误。)

我尝试在日志中搜索相同 JOB_KEY 的实例,以为会有一个插入语句,但我在此日志中看不到任何内容。

有没有熟悉 Spring Batch 的人可以帮助我验证 oracle 用户需要哪些权限?我们的新用户没有创建或删除权限。你能帮我验证那些是必需的,以及为什么。-意思是创建和删除临时表吗?我试图在不同的日志文件中找到它,但到目前为止我还没有成功。

谢谢!

4

2 回答 2

2

该错误表明它找不到序列值。这会让我相信您拥有的新 db id 可以访问表,但不能访问序列。Spring Batch 的 Oracle 模式在表之外使用了三个序列:BATCH_STEP_EXECUTION_SEQ、BATCH_JOB_EXECUTION_SEQ 和 BATCH_JOB_SEQ。

于 2014-04-08T14:23:24.333 回答
0

请检查您的 context.xml 文件以获取正确的数据库类型。可能是您在代码中使用 My/Sql,而实际数据库是 Oracle。
属性名称="databaseType" 值="oracle"

于 2015-12-21T15:52:21.590 回答