为什么启用本机加密 (ASO) 后,Oracle 中的每个错误 SQL 请求都会出现 "Checksum fail"?
Why do I have "Checksum fail" on every bad SQL request in Oracle when Native Encryption (ASO) is enabled?
我们最近将 Oracle 数据库配置为所谓的 native encryption
(Oracle 高级安全选项)。
随着开发的进行,一些 SQL
查询有时会写得很糟糕,因此 JDBC
驱动程序 (ojdbc7 v12.1.0.2
) 应该会返回一个错误。取而代之的是 Checksum Fail IOException
被提出。
所以问题是我们根本没有任何语法或数据库完整性错误。 SQL GUI 编辑器中的问题是相同的,例如 DBeaver
、SQLDeveloper
或 SQuirrel
。
这是 Oracle JDBC 瘦驱动程序中的一个已知问题。如果您可以使用 SSL 而不是 ASO,那么这个问题就会消失。
我们的团队也遇到了同样的问题。
确定将 WebLogic 连接池设置为使用 SHA1 或 MD5 进行校验和加密解决了该问题(还必须将所选值添加到数据库服务器的 sqlnet.ora 文件中的已批准算法列表中当然)。
当 Oracle 尝试 return 一个 'standard' 错误,即违反约束时,尝试在客户端使用除 SHA1 或 MD5 之外的任何校验和值会产生校验和失败错误消息。
驱动程序版本 12.1 及更早版本在 SHA-2 函数中存在错误
如果能够强制服务器与 SHA-1
握手
-Doracle.net.crypto_checksum_client=REQUIRED
-Doracle.net.crypto_checksum_types=SHA1
这已在 ojdbc8.jar 版本 12.2
中修复
使用驱动程序 ojdbc7 12.1.0.1 正确的 VM 参数名称如下:
-Doracle.net.crypto_checksum_client=REQUIRED
-Doracle.net.crypto_checksum_types_client=SHA1
**如果您将记录插入数据库并看到错误则
- 检查您的插入值和架构,您可能正在插入空值
FK 参考值
- 您可能在非空列中插入了空值
**
Oracle 不会为此错误提供正确的信息
我们最近将 Oracle 数据库配置为所谓的 native encryption
(Oracle 高级安全选项)。
随着开发的进行,一些 SQL
查询有时会写得很糟糕,因此 JDBC
驱动程序 (ojdbc7 v12.1.0.2
) 应该会返回一个错误。取而代之的是 Checksum Fail IOException
被提出。
所以问题是我们根本没有任何语法或数据库完整性错误。 SQL GUI 编辑器中的问题是相同的,例如 DBeaver
、SQLDeveloper
或 SQuirrel
。
这是 Oracle JDBC 瘦驱动程序中的一个已知问题。如果您可以使用 SSL 而不是 ASO,那么这个问题就会消失。
我们的团队也遇到了同样的问题。
确定将 WebLogic 连接池设置为使用 SHA1 或 MD5 进行校验和加密解决了该问题(还必须将所选值添加到数据库服务器的 sqlnet.ora 文件中的已批准算法列表中当然)。
当 Oracle 尝试 return 一个 'standard' 错误,即违反约束时,尝试在客户端使用除 SHA1 或 MD5 之外的任何校验和值会产生校验和失败错误消息。
驱动程序版本 12.1 及更早版本在 SHA-2 函数中存在错误 如果能够强制服务器与 SHA-1
握手-Doracle.net.crypto_checksum_client=REQUIRED
-Doracle.net.crypto_checksum_types=SHA1
这已在 ojdbc8.jar 版本 12.2
中修复使用驱动程序 ojdbc7 12.1.0.1 正确的 VM 参数名称如下:
-Doracle.net.crypto_checksum_client=REQUIRED
-Doracle.net.crypto_checksum_types_client=SHA1
**如果您将记录插入数据库并看到错误则
- 检查您的插入值和架构,您可能正在插入空值 FK 参考值
- 您可能在非空列中插入了空值
**
Oracle 不会为此错误提供正确的信息