Oracle 错误 - ORA-28374:在钱包中找不到键入的主密钥

问题描述 投票:0回答:2

我使用 Spring Boot 和 Hikari 线程池来连接到 Oracle 12c DB。我的所有表都是在加密表空间中创建的。问题是,当我尝试连接到我的数据库时,随机出现以下异常。

java.sql.SQLException ORA-28374: typed master key not found in wallet 
      at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450)
      at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:392)
      at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:385)
      at oracle.jdbc.driver.T4CTTIfun.processError(T4CTTIfun.java:1018)
      at oracle.jdbc.driver.T4CTTIoauthenticate.processError(T4CTTIoauthenticate.java:501)
      at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:522)
      at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:257)
      at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:437)
      at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:954)
      at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:639)
      at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:666)
      at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
      at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:566)
      at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:117)
      at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:123)
      at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:367)
      at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:196)
      at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:467)
      at com.zaxxer.hikari.pool.HikariPool.access$100(HikariPool.java:71)
      at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:706)
      at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:692)
      at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
      at java.lang.Thread.run(Thread.java:748)

如您所见,ojdbc 驱动程序引发了错误。这是我到目前为止所尝试过的。

  • 检查数据库日志。 DBA 在其日志中看不到任何错误。 (编辑:事实证明他们犯了一个错误,并最终通知我他们确实在日志中看到了这个问题)
  • 升级我的 ojdbc6.jar 驱动程序。问题仍然存在。
  • 重新创建整个数据库。还是会发生。
  • 通过在未加密的表空间中创建表来进行测试。这解决了问题,但公司政策要求加密表空间。
  • 使用SQLcl查询DB。即使使用 SQLcl,我仍然出现此错误! SQLcl 使用 ojdbc8.jar 驱动程序进行连接。

这可能是 DBA 错误配置了密钥轮换策略吗?可悲的是,我无法控制数据库资源,因此我无法从我的一端调试数据库端,我必须与远程 DBA 交谈。任何线索表示赞赏。

java oracle oracle12c
2个回答
0
投票

事实证明,这是数据库端的设置问题。我们的 DBA 告诉我们,在我们的 Oracle 集群中,钱包文件并未复制到所有节点上。这意味着如果我们的应用程序尝试连接到没有相应钱包的节点,则会抛出 ORA-28374 错误。


0
投票

即使将钱包文件复制到其他节点后,也出现相同的错误

© www.soinside.com 2019 - 2024. All rights reserved.