适用于:Azure 数据工厂
Azure Synapse Analytics
本文提供了一些建议,用于排查 Azure 数据工厂 和 Azure Synapse 中常见的 Oracle 连接器问题。
版本 2.0
错误消息:ORA-12650:没有常见的加密或数据完整性算法
症状:遇到以下错误消息:
ORA-12650: No common encryption or data integrity algorithm
原因:在协商期间,客户端和服务器未能就常见的加密/数据完整性行为或算法达成一致。 默认客户端配置如下所示:
-
encryptionClient
:required
-
encryptionTypesClient
:(AES256)
-
cryptoChecksumClient
:required
-
cryptoChecksumTypesClient
:(SHA512)
-
建议:
检查服务器端配置,包括 SQLNET。ENCRYPTION_SERVER和 SQLNET。CRYPTO_CHECKSUM_SERVER。 如有需要,请在客户端更新链接服务的其他属性
encryptionClient
和cryptoChecksumClient
。 请注意,实际行为由客户端和服务器配置之间的协商结果确定,如下所示。客户端\服务器 拒绝 接受 要求 必填 拒绝 关闭 关闭 关闭 连接失败 接受 关闭 关闭 开启 开启 要求 关闭 开启 开启 开启 必填 连接失败 开启 开启 开启 检查服务器端配置,包括 SQLNET.ENCRYPTION_TYPES_SERVER 和 SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER。 在客户端更新链接服务的其他属性
encryptionTypesClient
和cryptoChecksumTypesClient
,以确保能够在它们之间找到通用算法。 您可以将encryptionTypesClient
设置为(AES128, AES192, AES256, 3DES112, 3DES168)
,将cryptoChecksumTypesClient
设置为(SHA1, SHA256, SHA384, SHA512)
,以包含所有支持的客户端算法。
“十进制精度过大”错误
症状:从 Oracle 复制 NUMBER 类型列时,复制可能会失败,或者写入接收器的数据不能被其他工具进一步使用,因为小数精度太大。
原因:为了避免数据丢失,用于表示 Oracle NUMBER 类型的十进制精度为 256,超过了接收器连接器或下游使用者支持的最大精度。
建议:
使用以下两种方法之一解决此问题:
使用查询,将列显式转换为 BINARY_DOUBLE。 例如:
SELECT CAST(ColA AS BINARY_DOUBLE) AS ColB FROM TableA.
将链接服务附加属性
supportV1DataTypes
设置为true
,这可确保版本 2.0 使用与版本 1.0 相同的数据类型映射。
错误消息:ORA-00933:SQL 命令未正确结束
症状:遇到以下错误消息:
ORA-00933: SQL command not properly ended
原因:当前 Oracle 版本 2.0 不支持以分号结尾的查询。
建议:删除查询末尾的分号。
版本 1.0
错误代码:ArgumentOutOfRangeException
消息:
原因:在 Azure 数据工厂和 Synapse 管道中,支持从 0001-01-01 00:00:00 到 9999-12-31 23:59:59 范围内的日期时间值。 但是,Oracle 支持范围更广的日期时间值(例如公元前世纪或 min/sec>59),这会导致失败。
建议:
若要查看 Oracle 中的值是否处于支持的日期范围内,请运行
select dump(<column name>)
。若要了解结果中的字节序列,请参阅如何在 Oracle 中存储日期?。
使用自承载集成运行时版本 5.36.8726.3 或更高版本时添加安全算法
症状:使用自承载集成运行时版本 5.36.8726.3 或更高版本时,将遇到以下错误消息:
[Oracle]ORA-12650: No common encryption or data integrity algorithm
。原因:安全算法未添加到 Oracle 服务器。
建议:如果尚未包含这些安全算法,请更新 Oracle 服务器设置以添加它们:
对于“SQLNET.ENCRYPTION_TYPES_SERVER”,需要添加以下被 OpenSSL 视为安全且将用于 OAS(Oracle 高级安全性)加密的算法。
- AES256
- AES192
- 3DES168
- AES128
- 3DES112
- DES
对于“SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER”,需要添加以下被 OpenSSL 视为安全且将用于 OAS(Oracle 高级安全性)数据完整性的算法。
- SHA256
- SHA384
- SHA512
注意
推荐的数据完整性算法 SHA256、SHA384 和 SHA512 可用于 Oracle 19c 或更高版本。
错误代码:UserErrorFailedToConnectOdbcSource
有三条与此错误代码关联的错误消息。 检查每条错误信息的相应原因和建议。
消息:
原因:
truststore
不适用于 OpenSSL 3.0,因为truststore
文件是使用 RC4、MD5 和 SHA1 等弱密码生成的。建议:需要使用 AES256 等强密码重新创建
truststore
。 有关使用 设置 TLS 连接的详细信息,请参阅此truststore
。
消息:
SSL Handshake Failure reason[Unknown SSL Error]
SSL Handshake Failure reason [error:OA000410:SSL routines::sslv3 alert handshake failure]
原因:服务器未配置为使用强密码进行 SSL 通信。 OpenSSL 3.0 应使用 TLS 1.0 及更高版本,因为它已弃用 SSL 协议版本。 例如,服务器可能会接受与版本在 TLS 1.0 之前的 TLS 协议的连接。
建议:修改服务器配置以使用更强大的 TLS 版本。
消息:
原因:CryptoProtocolVersion 设置为将弃用的 TLS 协议版本与 OpenSSL 3.0 配合使用。
建议:指定连接字符串属性
CryptoProtocolVersion=TLSv1.2
。
相关内容
尝试通过以下资源获得故障排除方面的更多帮助: