为什么在启用本机加密(ASO)时,Oracle中的每个错误SQL请求都会出现“校验和失败”?

时间:2016-05-19 12:26:32

标签: java oracle encryption jdbc java-7

我们最近将Oracle数据库配置为所谓的native encryption(Oracle高级安全性选项)。

随着开发的进行,有些SQL查询有时写得不好,因此JDBC驱动程序(ojdbc7 v12.1.0.2)应该返回错误。而不是那样,会引发Checksum Fail IOException

所以问题是我们根本没有任何语法或数据库完整性错误。 SQL GUI编辑器中的问题是相同的,例如DBeaverSQLDeveloperSQuirrel

5 个答案:

答案 0 :(得分:3)

驱动程序版本12.1及更早版本在SHA-2函数中存在错误 如果能够强制服务器与SHA-1握手

-Doracle.net.crypto_checksum_client=REQUIRED
-Doracle.net.crypto_checksum_types=SHA1

这已在ojdbc8.jar版本12.2中修复

答案 1 :(得分:3)

使用驱动程序ojdbc7 12.1.0.1时,正确的VM参数名称如下:

-Doracle.net.crypto_checksum_client=REQUIRED
-Doracle.net.crypto_checksum_types_client=SHA1

答案 2 :(得分:2)

我们的团队也遇到了同样的问题。

确定将WebLogic连接池设置为使用SHA1或MD5进行校验和加密解决了该问题(当然,还必须将所选值添加到DB服务器的sqlnet.ora文件中的已批准算法列表中)。 / p>

当Oracle尝试返回“标准”错误(即约束违规)时,尝试在客户端使用除SHA1或MD5之外的任何Checksum值会产生Checksum Fail错误消息。

答案 3 :(得分:1)

这是Oracle JDBC瘦驱动程序中的已知问题。如果你可以使用SSL而不是ASO,那么这个问题就会消失。

答案 4 :(得分:0)

**如果您正在将记录插入数据库并看到错误,则

  1. 检查您的插入值和架构,您可能要插入null FK参考中的值
  2. 您可能会在非null列中插入null

**

Oracle不会为该错误提供正确的信息