Oracle spring.jpa.hibernate.ddl auto=validate需要多少最低数据库权限?

Oracle spring.jpa.hibernate.ddl auto=validate需要多少最低数据库权限?,oracle,hibernate,spring-boot,hibernate-validator,Oracle,Hibernate,Spring Boot,Hibernate Validator,我正在尝试将SpringBoot与Oracle数据库一起使用。在开发过程中,我们一直在使用hibernate设置 spring.jpa.hibernate.ddl auto=validate 但是现在我们正朝着生产版本迈进,我们希望锁定连接权限。 但是,即使在生产版本中,也最好保留hibernate validate启动处理提供的健全性检查 遗憾的是,当我尝试使用具有足够权限运行Spring启动应用程序的数据库连接执行此操作时,hibernate验证阶段在bean初始化期间失败,因为它表示缺少表

我正在尝试将SpringBoot与Oracle数据库一起使用。在开发过程中,我们一直在使用hibernate设置 spring.jpa.hibernate.ddl auto=validate 但是现在我们正朝着生产版本迈进,我们希望锁定连接权限。 但是,即使在生产版本中,也最好保留hibernate validate启动处理提供的健全性检查

遗憾的是,当我尝试使用具有足够权限运行Spring启动应用程序的数据库连接执行此操作时,hibernate验证阶段在bean初始化期间失败,因为它表示缺少表。 现在我知道这不是真的,所以我打赌hibernate使用额外的查询来验证模式,并且这些查询需要额外的访问。如果我将该值设置为“无”,则应用程序可以工作,但不会检查模式兼容性。如果我将DBA特权授予连接用户,所有工作都正常,包括验证。但我绝对不会在生产中提供应用程序的访问级别

那么,是否有人知道我可以向用户帐户添加的最低权限,以便启用hibernate验证?理想情况下,我只需在表上提供SELECT、INSERT、UPDATE和DELETE,并在用户帐户上提供CONNECT权限,但这不足以启用验证

我曾考虑在某个地方创建一个特殊的自动模式版本变量,并在运行时对此进行验证,但这似乎有些混乱。如果我能找到一个可接受的Oracle特权组合,使验证步骤能够在不太打开连接的情况下进行,那么我更愿意使用这种方法

我还可以在我们的持续集成服务器上定义一个特殊作业,这样它就可以临时为一个作业启用所有数据库权限。但我觉得这是一个大锤式的方法,并不优雅

感激地接受任何暗示

非常感谢,, 乔纳森

我把这个答案贴在我自己的问题上是因为我犯了一个错误。由于我的SQL脚本中隐藏了一条错误消息,所以我实际上没有将所有基本权限分配给表(以及其他类别,如索引)。但我没有在应用程序中运行所有工作流,这可能会揭示这一点。一旦我解决了访问问题,这也为Hibernate验证处理步骤提供了足够的访问权限


感谢所有看过我的问题的人,答案是确保您对Oracle架构中的所有内容都具有至少读取权限(选择权限)。(Hibernate会在启动时检查所有这些测试,因此比我简单的手动测试更严格)。

我不知道;我不使用Hibernate。然而,只是为了鼓励你——在我看来,你选择了正确的方法。只授予最低限度的特权;如果你需要额外的,以后再给他们。此外,考虑不授予连接;它是一个预定义的角色,曾经非常流行(与资源一起)。现在,你宁愿一个特权一个特权地给予特权。实际上,您将授予CREATE会话,而不是CONNECT。是的,我知道,这还不够,不,我不知道你还应该授予什么。如果您可以共享任何错误,请这样做。也许会更容易帮助此资源描述了应用程序用户和数据用户之间使用flywaydb和Spring Boot的分离。