我有一个 Spring Batch 管理应用程序。我们最近尝试通过创建具有最小权限的新 Oracle 用户来提高安全性。替换 Spring Batch 应用程序的用户后,出现此错误。
异常:org.springframework.dao.DataAccessResourceFailureException:无法获取序列值;嵌套异常是java.sql.SQLException:ORA-00942:表或 View 不存在
查看应用程序和 tomcat 日志后,我发现应用程序在抛出错误之前尝试了 3 次执行此查询。
从 BATCH_JOB_INSTANCE 中选择 JOB_INSTANCE_ID、JOB_NAME,其中 JOB_NAME = ?和 JOB_KEY = ?
我尝试使用日志中规定的值从 sql Developer 进行相同的查询,但没有返回任何结果 - 但成功完成。 (没有找到表格错误。)
我尝试在日志中搜索相同 JOB_KEY 的实例,认为会有一条插入语句,但我在该日志中没有看到任何内容。
有熟悉Spring Batch的人可以帮我验证oracle用户需要什么权限吗?我们的新用户没有创建或删除权限。您能帮我验证这些是否是必需的,以及为什么。 - 意思是创建和删除临时表?我试图在不同的日志文件中找到它,但到目前为止我还没有成功。
谢谢!
最佳答案
该错误表明无法找到序列值。这会让我相信您拥有的新数据库 ID 可以访问表,但不能访问序列。 Spring Batch 的 Oracle 架构除了表之外还使用了三个序列:BATCH_STEP_EXECUTION_SEQ、BATCH_JOB_EXECUTION_SEQ 和 BATCH_JOB_SEQ。
关于oracle - Spring Batch 的 oracle 用户需要什么权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22916040/