适用于:Azure 数据工厂
Azure Synapse Analytics
本文概述如何在 Azure 数据工厂中使用复制活动从/向 Oracle 数据库复制数据。 本文是在复制活动概述的基础上编写的。
此 Oracle 连接器支持以下功能:
① Azure 集成运行时 ② 自承载集成运行时
有关复制活动支持作为源或接收器的数据存储列表,请参阅支持的数据存储表。
具体而言,此 Oracle 连接器支持:
- 适用于版本 2.0 的 Oracle 数据库的以下版本(预览版):
- Oracle Database 19c 或更高版本
- 适用于版本 1.0 的 Oracle 数据库的以下版本:
- Oracle 19c R1 (19.1) 和更高版本
- Oracle 18c R1 (18.1) 和更高版本
- Oracle 12c R1 (12.1) 和更高版本
- Oracle 11g R1 (11.1) 和更高版本
- Oracle 10g R1 (10.1) 和更高版本
- Oracle 9i R2 (9.2) 和更高版本
- Oracle 8i R3 (8.1.7) 和更高版本
- Oracle Database Cloud Exadata Service
- 从 Oracle 源进行并行复制。 有关详细信息,请参阅从 Oracle 进行并行复制部分。
备注
不支持 Oracle 代理服务器。
如果数据存储位于本地网络、Azure 虚拟网络或 Amazon Virtual Private Cloud 内部,则需要配置自承载集成运行时才能连接到该数据存储。
如果数据存储是托管的云数据服务,则可以使用 Azure Integration Runtime。 如果访问范围限制为防火墙规则中允许的 IP,你可以选择将 Azure Integration Runtime IP 添加到允许列表。
此外,还可以使用 Azure 数据工厂中的托管虚拟网络集成运行时功能访问本地网络,而无需安装和配置自承载集成运行时。
要详细了解网络安全机制和数据工厂支持的选项,请参阅数据访问策略。
集成运行时提供内置的 Oracle 驱动程序。 因此,在从/向 Oracle 复制数据时不需要手动安装驱动程序。
若要使用管道执行复制活动,可以使用以下工具或 SDK 之一:
使用以下步骤在 Azure 门户 UI 中创建一个到 Oracle 的链接服务。
浏览到 Azure 数据工厂或 Synapse 工作区中的“管理”选项卡,并选择“链接服务”,然后单击“新建”:
搜索“Oracle”并选择 Oracle 连接器。
配置服务详细信息、测试连接并创建新的链接服务。
对于特定于 Oracle 连接器的实体,以下部分提供了有关用于定义这些实体的属性的详细信息。
Oracle 连接器现在支持版本 2.0(预览版)。 请参阅本 部分 ,从版本 1.0 升级 Oracle 连接器版本。 关于属性详情,请参阅对应部分。
应用版本 2.0 时,Oracle 链接服务支持以下属性:
财产 | 描述 | 必需 |
---|---|---|
类型 | type 属性必须设置为 Oracle。 | 是 |
版本 | 指定的版本。 该值为 2.0 。 |
是 |
服务器 | 要连接到的 Oracle 数据库的位置。 可以引用 服务器属性配置 来指定它。 | 是 |
身份验证类型 | 用于连接 Oracle 数据库的身份验证类型。 现在仅支持 基本 身份验证。 | 是 |
用户名 | Oracle 数据库用户名。 | 是 |
密码 | Oracle 数据库密码。 将此字段标记为 SecureString 以安全存储它。 或者,可以引用 Azure Key Vault 中存储的机密。 | 是 |
connectVia | 用于连接到数据存储的集成运行时。 在先决条件部分了解更多信息。 如果未指定,则使用默认 Azure Integration Runtime。 | 否 |
可以按案例在链接服务中设置的更多连接属性:
属性 | 描述 | 必需 | 默认值 |
---|---|---|---|
encryptionClient | 指定加密客户端行为。 支持的值是accepted 、rejected 或requested required 。 类型:字符串 |
否 | required |
encryptionTypesClient | 指定客户端可以使用的加密算法。 支持的值是AES128 ,,AES192 ,AES256 ,3DES112 3DES168 。 类型:字符串 |
否 | (AES256) |
cryptoChecksumClient | 指定当此客户端连接到服务器时所需的数据完整性行为。 支持的值是accepted 、rejected 或requested required 。 类型: 字符串 |
否 | required |
cryptoChecksumTypesClient | 指定客户端可以使用的加密校验算法。 支持的值为 SHA1 ,, SHA256 SHA384 。 SHA512 类型:字符串 |
否 | (SHA512) |
initialLobFetchSize | 指定源最初为 LOB 列提取的量。 类型:int | 否 | 0 |
fetchSize | 指定驱动程序在一次数据库往返中分配用于提取数据的字节数。 类型:int | 否 | 10 MB |
statementCacheSize | 指定要为每个数据库连接缓存的游标或语句的数量。 类型:int | 否 | 0 |
initializationString | 指定在连接到数据库后立即发出的命令,以管理会话设置。 类型: 字符串 | 否 | Null |
enableBulkLoad | 指定在将数据加载到数据库中时是使用大容量复制还是批量插入。 类型:布尔值 | 否 | 是 |
supportV1DataTypes | 指定是否使用版本 1.0 数据类型映射。 除非要保持与版本 1.0 数据类型映射的向后兼容性,否则不要将其设置为 true。 类型:布尔值 | 否,此属性仅用于向后兼容性使用 | false |
fetchTswtzAsTimestamp | 指定驱动程序将 TIMESTAMP WITH TIME ZONE 数据类型的列值返回为日期/时间还是字符串。 如果 supportV1DataTypes 不为 true,则忽略此设置。 类型:布尔值 | 否,此属性仅用于向后兼容性使用 | 是 |
示例:
{
"name": "OracleLinkedService",
"properties": {
"type": "Oracle",
"version": "2.0",
"typeProperties": {
"server": "<server name>",
"username": "<user name>",
"password": "<password>",
"authenticationType": "<authentication type>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
示例:在 Azure 密钥保管库中存储密码
{
"name": "OracleLinkedService",
"properties": {
"type": "Oracle",
"version": "2.0",
"typeProperties": {
"server": "<server name>",
"username": "<user name>",
"authenticationType": "<authentication type>",
"password": {
"type": "AzureKeyVaultSecret",
"store": {
"referenceName": "<Azure Key Vault linked service name>",
"type": "LinkedServiceReference"
},
"secretName": "<secretName>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
对于 server
属性,可以使用以下三种格式之一指定它:
格式 | 示例: |
---|---|
连接描述符 | (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=sales.us.acme.com))) |
Easy Connect (Plus) 命名 | salesserver1:1521/sales.us.example.com |
Oracle Net Services 名称(TNS 别名)(仅适用于自承载集成运行时) | 销售额 |
以下列表显示 server
支持的参数。 如果使用的参数不在以下列表中,则连接将失败。
使用 Azure 集成运行时时:
HOST
端口
协议
SERVICE_NAME
SID
INSTANCE_NAME
服务器
CONNECT_TIMEOUT
RETRY_COUNT
RETRY_DELAY
SSL_VERSION
SSL_SERVER_DN_MATCH
SSL_SERVER_CERT_DN当使用自承载集成运行时:
HOST
端口
协议
ENABLE
过期时间
FAILOVER
负载均衡
RECV_BUF_SIZE
山东大学 (SDU)
SEND_BUF_SIZE
SOURCE_ROUTE
服务类型
COLOCATION_TAG
CONNECTION_ID_PREFIX
FAILOVER_MODE
GLOBAL_NAME
HS
INSTANCE_NAME
泳池边界
POOL_CONNECTION_CLASS
POOL_NAME
游泳池纯度
RDB_DATABASE
SHARDING_KEY
SHARDING_KEY_ID
SUPER_SHARDING_KEY
服务器
SERVICE_NAME
SID
TUNNEL_SERVICE_NAME
SSL_客户端认证
SSL_CERTIFICATE_ALIAS
SSL_CERTIFICATE_THUMBPRINT
SSL_VERSION
SSL_SERVER_DN_MATCH
SSL_SERVER_CERT_DN
钱包位置
CONNECT_TIMEOUT
RETRY_COUNT
RETRY_DELAY
TRANSPORT_CONNECT_TIMEOUT
RECV_TIMEOUT
压缩
压缩级别
应用版本 1.0 时,Oracle 链接服务支持以下属性:
属性 | 描述 | 必需 |
---|---|---|
类型 | type 属性必须设置为 Oracle。 | 是 |
connectionString | 指定连接到 Oracle 数据库实例所需的信息。 还可以将密码放在 Azure Key Vault 中,并从连接字符串中拉取 password 配置。 有关更多详细信息,请参阅以下示例和在 Azure Key Vault 中存储凭据。 支持的连接类型:可以使用 Oracle SID 或 Oracle 服务名称来标识数据库: - 如果使用 SID: Host=<host>;Port=<port>;Sid=<sid>;User Id=<username>;Password=<password>; - 如果使用服务名称: Host=<host>;Port=<port>;ServiceName=<servicename>;User Id=<username>;Password=<password>; 对于高级 Oracle 原生连接选项,你可以选择在安装了自承载集成运行时的计算机上的 TNSNAMES.ORA 文件中添加条目,在 Oracle 链接服务中,可以选择使用“Oracle 服务名称”连接类型并配置相应的服务名称。 |
是 |
connectVia | 用于连接到数据存储的集成运行时。 在先决条件部分了解更多信息。 如果未指定,则使用默认 Azure Integration Runtime。 | 否 |
提示
如果遇到错误“ORA-01025:UPI 参数超出范围”,且 Oracle 版本为 8i,请将 WireProtocolMode=1
添加到连接字符串。 然后重试。
如果有多个 Oracle 实例用于故障转移方案,则可以创建 Oracle 链接服务并填充主要主机、端口、用户名、密码等,并添加新的“其他连接属性”,其属性名称为 AlternateServers
,值为 (HostName=<secondary host>:PortNumber=<secondary port>:ServiceName=<secondary service name>)
- 不要遗漏括号,并注意作为分隔符的冒号 (:
)。 例如,以下备用服务器值定义用于连接故障转移的两台备用数据库服务器:(HostName=AccountingOracleServer:PortNumber=1521:SID=Accounting,HostName=255.201.11.24:PortNumber=1522:ServiceName=ABackup.NA.MyCompany)
。
可以根据自己的情况在连接字符串中设置更多连接属性:
财产 | 描述 | 允许的值 |
---|---|---|
ArraySize | 连接器在单个网络往返中可以提取的字节数。 例如,ArraySize=10485760 。较大的值可减少在网络中提取数据的次数,从而提高吞吐量。 较小的值会增加响应时间,因为等待服务器传输数据的延迟较小。 |
1 到 4294967296 (4 GB) 之间的一个整数。 默认值为 60000 。 值 1 不定义字节数,而指示仅为一行数据分配空间。 |
若要在 Oracle 连接上启用加密,你有两种选择:
若要使用三重 DES 加密 (3DES) 和高级加密标准 (AES) ,请在 Oracle 服务器端,转到“Oracle 高级安全性 (OAS)”并配置加密设置。 有关详细信息,请参阅 Oracle 文档。 Oracle 应用程序开发框架 (ADF) 连接器会自动协商加密方法,以便在建立与 Oracle 的连接时使用在 OAS 中配置的加密方法。
要使用 TLS,请应用以下三种方法之一,为 SSL 服务器身份验证设置
truststore
:方法 1(建议):
通过将 TLS/SSL 证书导入本地证书存储来安装该证书。 内置的 Oracle 驱动程序可以从证书存储中加载所需的证书。
在服务中,使用
EncryptionMethod=1
配置 Oracle 连接字符串。
方法 2:
获取 TLS/SSL 证书信息。 获取 TLS/SSL 证书的可辨别编码规则 (DER) 编码或隐私增强邮件 (PEM) 编码证书信息。
openssl x509 -inform (DER|PEM) -in [Full Path to the DER/PEM Certificate including the name of the DER/PEM Certificate] -text
在服务中,使用
EncryptionMethod=1
和相应的TrustStore
值配置 Oracle 连接字符串。 例如:Host=<host>;Port=<port>;Sid=<sid>;User Id=<username>;Password=<password>;EncryptionMethod=1;TrustStore= data:// -----BEGIN CERTIFICATE-----<certificate content>-----END CERTIFICATE-----
备注
TrustStore
字段的值应以data://
为前缀。- 为多个证书指定内容时,请在
-----BEGIN CERTIFICATE-----
和-----END CERTIFICATE-----
之间指定每个证书的内容。 短划线 (-----
) 的数量在BEGIN CERTIFICATE
和END CERTIFICATE
前后应相同。 例如:
-----BEGIN CERTIFICATE-----<certificate content 1>-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----<certificate content 2>-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----<certificate content 3>-----END CERTIFICATE-----
TrustStore
字段支持长度高达 8192 个字符的内容。
方法 3:
使用强密码(如 AES256)创建
truststore
文件。openssl pkcs12 -in [Full Path to the DER/PEM Certificate including the name of the DER/PEM Certificate] -out [Path and name of TrustStore] -passout pass:[Keystore PWD] -keypbe AES-256-CBC -certpbe AES-256-CBC -nokeys -export
将
truststore
文件放置在自承载集成运行时计算机上。 例如,将该文件放在C:\MyTrustStoreFile
。在服务中,使用
EncryptionMethod=1
和相应的TrustStore
/TrustStorePassword
值配置 Oracle 连接字符串。 例如,Host=<host>;Port=<port>;Sid=<sid>;User Id=<username>;Password=<password>;EncryptionMethod=1;TrustStore=C:\\MyTrustStoreFile;TrustStorePassword=<trust_store_password>
。
示例:
{
"name": "OracleLinkedService",
"properties": {
"type": "Oracle",
"typeProperties": {
"connectionString": "Host=<host>;Port=<port>;Sid=<sid>;User Id=<username>;Password=<password>;"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
示例:在 Azure 密钥保管库中存储密码
{
"name": "OracleLinkedService",
"properties": {
"type": "Oracle",
"typeProperties": {
"connectionString": "Host=<host>;Port=<port>;Sid=<sid>;User Id=<username>;",
"password": {
"type": "AzureKeyVaultSecret",
"store": {
"referenceName": "<Azure Key Vault linked service name>",
"type": "LinkedServiceReference"
},
"secretName": "<secretName>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
本部分提供 Oracle 数据集支持的属性列表。 有关可用于定义数据集的各个部分和属性的完整列表,请参阅数据集。
若要从/向 Oracle 复制数据,请将数据集的 type 属性设置为 OracleTable
。 支持以下属性。
属性 | 描述 | 必需 |
---|---|---|
类型 | 数据集的 type 属性必须设置为 OracleTable 。 |
是 |
schema | 架构的名称。 | 对于源为“否”,对于接收器为“是” |
table | 表/视图的名称。 | 对于源为“否”,对于接收器为“是” |
tableName | 具有架构的表/视图的名称。 此属性支持后向兼容性。 对于新的工作负荷,请使用 schema 和 table 。 |
对于源为“否”,对于接收器为“是” |
示例:
{
"name": "OracleDataset",
"properties":
{
"type": "OracleTable",
"schema": [],
"typeProperties": {
"schema": "<schema_name>",
"table": "<table_name>"
},
"linkedServiceName": {
"referenceName": "<Oracle linked service name>",
"type": "LinkedServiceReference"
}
}
}
本部分提供 Oracle 源和接收器支持的属性列表。 有关可用于定义活动的各个部分和属性的完整列表,请参阅管道。
提示
有关如何使用数据分区从 Oracle 有效加载数据的详细信息,请参阅从 Oracle 进行并行复制部分。
要从 Oracle 复制数据,请将复制活动中的源类型设置为 OracleSource
。 复制活动的 source 节支持以下属性。
财产 | 描述 | 必需 |
---|---|---|
类型 | 复制活动源的类型属性必须设置为 OracleSource 。 |
是 |
oracleReaderQuery | 使用自定义 SQL 查询读取数据。 例如 "SELECT * FROM MyTable" 。启用分区加载时,需要在查询中挂接任何相应的内置分区参数。 有关示例,请参阅从 Oracle 进行并行复制部分。 |
否 |
将小数转换为整数 | 使用零标度或未指定标度的 Oracle NUMBER 类型将转换为相应的整数。 允许的值为 true 和 true(默认值)。 如果使用 Oracle 版本 2.0(预览版),则仅当 supportV1DataTypes 为 true 时,才允许设置此属性。 |
否 |
分区选项 | 指定用于从 Oracle 加载数据的数据分区选项。 允许值包括:None(默认值)、PhysicalPartitionsOfTable 和 DynamicRange。 启用分区选项(即,该选项不为 None )时,用于从 Oracle 数据库并行加载数据的并行度由复制活动上的 parallelCopies 设置控制。 |
否 |
partitionSettings | 指定数据分区的设置组。 当分区选项不是 None 时适用。 |
否 |
partitionNames | 需要复制的物理分区的列表。 当分区选项是 PhysicalPartitionsOfTable 时适用。 如果使用查询来检索源数据,请在 WHERE 子句中挂接 ?AdfTabularPartitionName 。 有关示例,请参阅从 Oracle 进行并行复制部分。 |
否 |
partitionColumnName | 指定并行复制范围分区使用的源列(整数类型)的名称。 如果未指定,系统会自动检测表的主键并将其用作分区列。 当分区选项是 DynamicRange 时适用。 如果使用查询来检索源数据,请在 WHERE 子句中挂接 ?AdfRangePartitionColumnName 。 有关示例,请参阅从 Oracle 进行并行复制部分。 |
否 |
partitionUpperBound | 要从中复制数据的分区列的最大值。 当分区选项是 DynamicRange 时适用。 如果使用查询来检索源数据,请在 WHERE 子句中挂接 ?AdfRangePartitionUpbound 。 有关示例,请参阅从 Oracle 进行并行复制部分。 |
否 |
partitionLowerBound | 要从中复制数据的分区列的最小值。 当分区选项是 DynamicRange 时适用。 如果使用查询来检索源数据,请在 WHERE 子句中挂接 ?AdfRangePartitionLowbound 。 有关示例,请参阅从 Oracle 进行并行复制部分。 |
否 |
示例:使用基本查询但不使用分区复制数据
"activities":[
{
"name": "CopyFromOracle",
"type": "Copy",
"inputs": [
{
"referenceName": "<Oracle input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "OracleSource",
"convertDecimalToInteger": false,
"oracleReaderQuery": "SELECT * FROM MyTable"
},
"sink": {
"type": "<sink type>"
}
}
}
]
若要向 Oracle 复制数据,请将复制活动中的汇接点类型设置为 OracleSink
。 复制活动“接收器”部分支持以下属性。
属性 | 描述 | 必需 |
---|---|---|
类型 | 复制活动接收器的 type 属性必须设置为 OracleSink 。 |
是 |
writeBatchSize | 缓冲区大小达到 writeBatchSize 时将数据插入 SQL 表。允许的值为 Integer(行数)。 |
否(默认值为 10,000) |
writeBatchTimeout | 超时前等待批插入操作完成的时间。 允许的值为 Timespan。 示例为 00:30:00(30 分钟)。 |
否 |
preCopyScript | 指定每次运行时,复制活动将数据写入到 Oracle 之前要运行的 SQL 查询。 可以使用此属性清除预加载的数据。 | 否 |
maxConcurrentConnections | 活动运行期间与数据存储建立的并发连接的上限。 仅在要限制并发连接时指定一个值。 | 无 |
示例:
"activities":[
{
"name": "CopyToOracle",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<Oracle output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "OracleSink"
}
}
}
]
Oracle 连接器提供内置的数据分区,用于从 Oracle 并行复制数据。 可以在复制活动的“源”表中找到数据分区选项。
启用分区复制后,服务将对 Oracle 源运行并行查询,按分区加载数据。 可通过复制活动中的 parallelCopies
设置控制并行度。 例如,如果将 parallelCopies
设置为 4,该服务会根据指定的分区选项和设置并行生成并运行 4 个查询,每个查询从 Oracle 数据库检索一部分数据。
建议同时启用并行复制和数据分区,尤其是从 Oracle 数据库加载大量数据时。 下面是适用于不同方案的建议配置。 将数据复制到基于文件的数据存储中时,建议将数据作为多个文件写入文件夹(仅指定文件夹名称),在这种情况下,性能优于写入单个文件。
情景 | 建议的设置 |
---|---|
从包含物理分区的大型表进行完整加载。 | 分区选项:表的物理分区。 在执行期间,该服务将自动检测物理分区并按分区复制数据。 |
从不包含物理分区但包含用于数据分区的整数列的大型表进行完整加载。 | 分区选项:动态范围分区。 分区列:指定用于对数据进行分区的列。 如果未指定,将使用主键列。 |
利用自定义查询和物理分区加载大量数据。 | 分区选项:表的物理分区。 查询: SELECT * FROM <TABLENAME> PARTITION("?AdfTabularPartitionName") WHERE <your_additional_where_clause> 。分区名称:指定要从中复制数据的分区名称。 如果没有指定,服务将自动检测在 Oracle 数据集中指定的表的物理分区。 在执行期间,服务会将 ?AdfTabularPartitionName 替换为实际分区名称,并发送到 Oracle。 |
使用自定义查询加载大量数据,表中没有物理分区,但有用于数据分区的整数列。 | 分区选项:动态范围分区。 查询: SELECT * FROM <TABLENAME> WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause> 。分区列:指定用于对数据进行分区的列。 可以针对整数数据类型的列进行分区。 分区上限和分区下限:指定是否要对分区列进行筛选,以便仅检索介于下限和上限之间的数据。 在执行期间,服务会将 ?AdfRangePartitionColumnName 、?AdfRangePartitionUpbound 和 ?AdfRangePartitionLowbound 替换为每个分区的实际列名称和值范围,并发送到 Oracle。 例如,如果为分区列“ID”设置了下限 1、上限 80,并将并行复制设置为 4,则服务会按 4 个分区检索数据。 其 ID 分别介于 [1, 20]、[21, 40]、[41, 60] 和 [61, 80] 之间。 |
提示
从非分区表复制数据时,可以使用“动态范围”分区选项针对整数列进行分区。 如果源数据没有这种类型的列,则可以利用源查询中的 ORA_HASH 函数来生成列,并将其用作分区列。
示例:使用物理分区进行查询
"source": {
"type": "OracleSource",
"query": "SELECT * FROM <TABLENAME> PARTITION(\"?AdfTabularPartitionName\") WHERE <your_additional_where_clause>",
"partitionOption": "PhysicalPartitionsOfTable",
"partitionSettings": {
"partitionNames": [
"<partitionA_name>",
"<partitionB_name>"
]
}
}
示例:使用动态范围分区进行查询
"source": {
"type": "OracleSource",
"query": "SELECT * FROM <TABLENAME> WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause>",
"partitionOption": "DynamicRange",
"partitionSettings": {
"partitionColumnName": "<partition_column_name>",
"partitionUpperBound": "<upper_value_of_partition_column>",
"partitionLowerBound": "<lower_value_of_partition_column>"
}
}
当你从/向 Oracle 复制数据时,服务中会使用以下临时数据类型映射。 若要了解复制活动如何将源架构和数据类型映射到接收器,请参阅架构和数据类型映射。
Oracle 数据类型 | 临时服务数据类型(适用于版本 2.0(预览版)) | 临时服务数据类型(适用于版本 1.0) |
---|---|---|
BFILE | Byte[] | Byte[] |
BINARY_FLOAT | 单身 | 单身 |
BINARY_DOUBLE | Double | Double |
BLOB | Byte[] | Byte[] |
CHAR | 字符串 | 字符串 |
CLOB | 字符串 | 字符串 |
DATE | DateTime | DateTime |
FLOAT (P < 16) | Double | Double |
FLOAT (P >= 16) | 十进制 | Double |
INTERVAL YEAR TO MONTH | Int64 | 字符串 |
INTERVAL DAY TO SECOND | TimeSpan | 字符串 |
LONG | 字符串 | 字符串 |
LONG RAW | Byte[] | Byte[] |
NCHAR | 字符串 | 字符串 |
NCLOB | 字符串 | 字符串 |
NUMBER (p,s) | Int16, Int32, Int64, Double, Single, Decimal | Decimal, String (if p > 28) |
NUMBER(没有精度和小数位数) | 十进制 | Double |
NVARCHAR2 | 字符串 | 字符串 |
RAW | Byte[] | Byte[] |
TIMESTAMP | DateTime | DateTime |
TIMESTAMP WITH LOCAL TIME ZONE | DateTime | DateTime |
TIMESTAMP WITH TIME ZONE | DateTimeOffset | DateTime |
VARCHAR2 | 字符串 | 字符串 |
XMLTYPE | 字符串 | 字符串 |
备注
NUMBER (p,s) 根据精度 (p) 和小数位数 (s) 映射到适当的临时服务数据类型。
若要了解有关属性的详细信息,请查看 Lookup 活动。
下面是帮助你升级 Oracle 连接器的步骤:
在编辑链接服务页面中,在版本下选择2.0(预览版),然后通过引用链接服务属性版本 2.0(预览版)来配置链接服务。
对于身份验证相关属性(包括用户名和密码),请在版本 2.0(预览版)中的相应字段中指定原始值。 版本 1.0 中的其他连接属性(例如主机、端口和 Oracle 服务名称/Oracle SID)现在是版本 2.0(预览版)中的属性的参数
server
。例如,如果将版本 1.0 的连接服务配置如下:
{ "name": "OracleLinkedService", "properties": { "type": "Oracle", "typeProperties": { "connectionString": "host=oraclesample.com;port=1521;servicename=db1" }, "connectVia": { "referenceName": "<name of Integration Runtime>", "type": "IntegrationRuntimeReference" } } }
使用 Easy Connect (Plus) 命名的相同版本 2.0(预览版)链接服务配置为:
{ "name": "OracleLinkedService", "properties": { "type": "Oracle", "version": "2.0", "typeProperties": { "server": "oraclesample.com:1521/db1", "username": "<user name>", "password": "<password>", "authenticationType": "<authentication type>" }, "connectVia": { "referenceName": "<name of Integration Runtime>", "type": "IntegrationRuntimeReference" } } }
使用 连接器描述符 的相同版本 2.0(预览版)链接服务配置为:
{ "name": "OracleLinkedService", "properties": { "type": "Oracle", "version": "2.0", "typeProperties": { "server": "(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST= oraclesample.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=db1)))", "username": "<user name>", "password": "<password>", "authenticationType": "<authentication type>" }, "connectVia": { "referenceName": "<name of Integration Runtime>", "type": "IntegrationRuntimeReference" } } }
提示
Azure Key Vault 支持
server
属性。 可以编辑链接服务 JSON 以添加 Azure Key Vault 引用,如下所示:
请注意:
如果在版本 1.0 中使用 Oracle 服务名称 ,则可以使用 Easy Connect (Plus) 命名 或 连接器描述符 作为版本 2.0(预览版)中的服务器格式。
如果在版本 1.0 中使用 Oracle SID ,则需要在版本 2.0(预览版)中使用 连接器描述符 作为服务器格式。
对于版本 1.0 中的一些附加连接属性,我们在版本 2.0(预览版)中的
server
属性中提供替代属性或参数。 可以参考下表来升级版本 1.0 属性。版本 1.0 版本 2.0(预览版) 加密方法 协议(参数在 server
中)tnsnamesfile TNS_ADMIN(自承载集成运行时支持的环境变量) servername 服务器 enablebulkload
值:1、0enableBulkLoad
值:true、falsefetchtswtzastimestamp
值:1、0fetchTswtzAsTimestamp
值:true、false备用服务器 DESCRIPTION_LIST( server
中的参数)数组大小 fetchSize cachedcursorlimit statementCacheSize connectionretrycount RETRY_COUNT( server
中的参数)初始化字符串 initializationString loginTimeout CONNECT_TIMEOUT( server
中的参数)cryptoprotocolversion SSL_VERSION (参数位于 server
中)truststore WALLET_LOCATION( server
中的参数)例如,如果在
alternateservers
版本 1.0 中使用,则可以在版本 2.0 的服务器属性中设置DESCRIPTION_LIST
参数(预览版):使用
alternateservers
的 1.0 版链接服务:{ "name": "OracleV1", "properties": { "type": "Oracle", "typeProperties": { "connectionString": "host=oraclesample.com;port=1521;servicename=db1;alternateservers=(HostName= oraclesample2.com:PortNumber=1521:SID=db2,HostName=255.201.11.24:PortNumber=1522:ServiceName=db3)" } } }
在连接器描述符中使用
DESCRIPTION_LIST
参数的相同版本 2.0(预览版)链接服务:{ "name": "OracleV2", "properties": { "type": "Oracle", "version": "2.0", "typeProperties": { "server": "(DESCRIPTION_LIST=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oraclesample.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=db1)))(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oraclesample2.com)(PORT=1521))(CONNECT_DATA=(SID=db2)))(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=255.201.11.24)(PORT=1522))(CONNECT_DATA=(SERVICE_NAME=db3))))", "username": "<user name>", "password": "<password>", "authenticationType": "<authentication type>" } } }
Oracle 链接服务版本 2.0(预览版)的数据类型映射不同于版本 1.0 的数据类型映射。 若要了解最新的数据类型映射,请参阅 Oracle 的数据类型映射。
版本 2.0(预览版)中的其他连接属性
supportV1DataTypes
可以减少数据类型更改导致的升级困难。 设置此属性可确保true
版本 2.0(预览版)中的数据类型与版本 1.0 保持一致。
Oracle 连接器版本 2.0(预览版)提供新功能,并与版本 1.0 的大多数功能兼容。 下表显示了版本 2.0(预览版)与版本 1.0 的功能差异。
版本 2.0(预览版) | 版本 1.0 |
---|---|
以下映射用于将 Oracle 数据类型转换为服务内部使用的中间服务数据类型。 NUMBER(p,s)-> Int16、Int32、Int64、Double、Single、Decimal FLOAT(p)-> 基于其精度为 Double 或 Decimal NUMBER -> 十进制 TIMESTAMP WITH TIME ZONE -> DateTimeOffset INTERVAL YEAR TO MONTH -> Int64 INTERVAL DAY TO SECOND -> TimeSpan |
以下映射用于从 Oracle 数据类型映射到服务内部暂时使用的服务数据类型。 NUMBER (p,s) -> 基于其精度为 Decimal String FLOAT(p)-> Double NUMBER -> Double TIMESTAMP WITH TIME ZONE -> DateTime INTERVAL YEAR TO MONTH -> String INTERVAL DAY TO SECOND -> String |
当 supportV1DataTypes 设置为 true 时,支持复制源中的 convertDecimalToInteger。 |
支持复制源中的 convertDecimalToInteger。 |
? 不被支持用于脚本活动查询参数的占位符。 可以使用命名参数(如 :paramA )或位置参数(如 :1 )作为替换。 |
支持将 ? 用作脚本活动查询参数的占位符。 |