在复制活动中配置 Amazon RDS For Oracle

本文概述了如何使用管道中的复制活动从 Amazon RDS For Oracle 复制数据。

具体而言,此 Amazon RDS For Oracle 连接器支持:

  • Amazon RDS For Oracle 数据库的以下版本:
    • Amazon RDS For Oracle 19c 及更高版本
    • Amazon RDS For Oracle 18c 及更高版本
    • Amazon RDS For Oracle 12c 及更高版本
    • Amazon RDS For Oracle 11g 及更高版本
  • 从 Amazon RDS For Oracle 源进行并行复制。 有关详细信息,请参阅 Amazon RDS For Oracle 部分中的并行副本

注释

不支持 Amazon RDS For Oracle 代理服务器。

支持的配置

有关复制活动下每个选项卡的配置,请分别转到以下部分。

概况

请参阅 常规 设置 指南,以配置 常规 设置选项卡。

来源

在复制活动的 “源 ”选项卡下,Amazon RDS For Oracle 支持以下属性。

显示“源”选项卡和属性列表的屏幕截图。

需要以下属性:

  • 连接:从连接列表中选择 Amazon RDS For Oracle 连接。 如果不存在连接,请创建新的 Amazon RDS For Oracle 连接。

  • 使用查询:选择 查询

    • 如果选择 “表”:

      • :从下拉列表中选择该表,或 手动选择 Enter 以手动输入以读取数据。
    • 如果选择 “查询”:

      • 查询:指定要读取数据的自定义 SQL 查询。 例如: SELECT * FROM MyTable。 请注意,查询不应以分号结尾(;))。

        启用分区加载时,需要在查询中挂接任何相应的内置分区参数。 有关示例,请参阅 Amazon RDS For Oracle 部分中的并行复制

        显示查询的屏幕截图。

在“高级”下,可以指定以下字段:

  • 分区选项:指定用于从 Amazon RDS For Oracle 加载数据的数据分区选项。 允许值包括:None(默认值)、PhysicalPartitionsOfTableDynamicRange。 启用分区选项(即“无 )后,从 Amazon RDS For Oracle 数据库并发加载数据的并行度由复制活动设置选项卡中 的复制并行度 控制。

    如果选择 “无”,则选择不使用分区。

    如果选择 表的物理分区

    • 分区名称:指定需要复制的物理分区的列表。

      如果使用查询来检索源数据,请在 WHERE 子句中挂接 ?AdfTabularPartitionName。 有关示例,请参阅 Amazon RDS For Oracle 部分中的并行复制

      显示选择表的物理分区时配置的屏幕截图。

    如果选择 “动态范围

    • 分区列名称:以 整数类型 指定源列的名称,范围分区将用于并行复制。 如果未指定,系统会自动检测表的主键并将其用作分区列。

      如果使用查询来检索源数据,请在 WHERE 子句中挂接 ?AdfRangePartitionColumnName。 有关示例,请参阅 Amazon RDS For Oracle 部分中的并行复制

    • 分区上限:指定要从中复制数据的分区列的最大值。

      如果使用查询来检索源数据,请在 WHERE 子句中挂接 ?AdfRangePartitionUpbound。 有关示例,请参阅 Amazon RDS For Oracle 部分中的并行复制

    • 分区下限:指定要从中复制数据的分区列的最小值。

      如果使用查询来检索源数据,请在 WHERE 子句中挂接 ?AdfRangePartitionLowbound。 有关示例,请参阅 Amazon RDS For Oracle 部分中的并行复制

      显示选择“动态范围”时配置的屏幕截图。

  • 查询超时(分钟):指定查询命令执行的超时,默认值为 120 分钟。 如果为此属性设置了参数,则允许的值是时间跨度,例如“02:00:00”(120 分钟)。

  • NUMBER 设置:指定 NUMBER 的精度和小数位数。 这仅适用于在 Amazon RDS For Oracle 数据库中未显式定义的精度和缩放的 NUMBER 类型。

    • 精度:指定有效十进制数字的最大数目。 允许的值范围为 1 到 256。 如果未指定,则默认为 256。

    • 刻度:指定小数点后的位数。 允许的值范围为 0 到 130,并且必须小于或等于精度。 如果未指定,则默认为 130。

  • 其他列:添加其他数据列以存储源文件的相对路径或静态值。 后者支持表达式。

映射

对于“映射”选项卡配置,请转到“映射”选项卡下的“配置映射”。

Amazon RDS For Oracle 的数据类型映射

从 Amazon RDS For Oracle 复制数据时,以下映射从 Amazon RDS For Oracle 数据类型复制到服务内部使用的临时数据类型。

Amazon RDS For Oracle 数据类型 临时服务数据类型
BFILE 字节[]
BINARY_FLOAT Single
BINARY_DOUBLE Double
BLOB 字节[]
CHAR String
CLOB String
DATE 日期时间
FLOAT (P < 16) Double
FLOAT(P >= 16) Decimal
年到月间隔 Int64
时间跨度从天到秒 TimeSpan
LONG String
LONG RAW 字节[]
NCHAR String
NCLOB String
NUMBER (p,s) Int16、Int32、Int64、Double、Single、Decimal
NUMBER(没有精度和小数位数) Decimal
NVARCHAR2 String
RAW 字节[]
TIMESTAMP 日期时间
具有本地时区的时间戳 日期时间
时间戳与时区 DateTimeOffset
VARCHAR2 String
XML类型 String

注释

NUMBER (p,s) 根据精度 (p) 和小数位数 (s) 映射到适当的临时服务数据类型。

设置

有关 “设置” 选项卡配置,请参阅 “设置”选项卡下的“配置其他设置”。

从 Amazon RDS For Oracle 并行复制

复制活动中的 Amazon RDS For Oracle 连接器提供内置的数据分区来并行复制数据。 可以在复制活动的“源”表中找到数据分区选项。

启用分区复制时,复制活动针对 Amazon RDS For Oracle 源运行并行查询,按分区加载数据。 并行度由复制活动设置选项卡中 的复制并行度 控制。例如,如果将 复制并行度 设置为 4,则服务会根据指定的分区选项和设置并发生成并运行四个查询,并且每个查询从 Amazon RDS For Oracle 检索一部分数据。

建议使用数据分区启用并行复制,尤其是在从 Amazon RDS For Oracle 加载大量数据时。 下面是适用于不同方案的建议配置。 将数据复制到基于文件的数据存储中时,建议将数据作为多个文件写入文件夹(仅指定文件夹名称),在这种情况下,性能优于写入单个文件。

Scenario 建议的设置
从包含物理分区的大型表进行完整加载。 分区选项:表的物理分区。

在执行期间,该服务将自动检测物理分区并按分区复制数据。
从不包含物理分区但包含用于数据分区的整数列的大型表进行完整加载。 分区选项:动态范围。
分区列:指定用于对数据进行分区的列。 如果未指定,将使用主键列。
利用自定义查询和物理分区加载大量数据。 分区选项:表的物理分区。
查询SELECT * FROM <TABLENAME> PARTITION("?AdfTabularPartitionName") WHERE <your_additional_where_clause>.
分区名称:指定要从中复制数据的分区名称。 如果未指定,该服务会自动检测在 Amazon RDS For Oracle 数据集中指定的表的物理分区。

在执行期间,服务将替换为 ?AdfTabularPartitionName 实际的分区名称,并发送到 Amazon RDS For Oracle。
使用自定义查询加载大量数据,表中没有物理分区,但有用于数据分区的整数列。 分区选项:动态范围。
查询SELECT * FROM <TABLENAME> WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause>.
分区列:指定用于对数据进行分区的列。 可以针对整数数据类型的列进行分区。
分区上限分区下限:指定是否要根据分区列进行筛选,以便仅在下限和上限之间检索数据。

在执行期间,服务将替换为?AdfRangePartitionColumnName?AdfRangePartitionUpbound?AdfRangePartitionLowbound每个分区的实际列名称和值范围,并发送到 Amazon RDS For Oracle。
例如,如果将分区列“ID”设置为 1,上限设置为 80,并行复制设置为 4,则服务按 4 个分区检索数据。 其 ID 分别介于 [1, 20]、[21, 40]、[41, 60] 和 [61, 80] 之间。

小窍门

从非分区表复制数据时,可以使用“动态范围”分区选项针对整数列进行分区。 如果源数据没有这种类型的列,则可以利用源查询中的 ORA_HASH 函数来生成列,并将其用作分区列。

表摘要

下表包含有关 Amazon RDS For Oracle 中的复制活动的详细信息。

源信息

Name Description 价值 必选 JSON 脚本属性
连接 与源数据存储的连接。 <Amazon RDS For Oracle 连接> 是的 连接
使用查询 从 Amazon RDS For Oracle 读取数据的方式。 应用 以从指定表读取数据,或使用 查询应用查询 读取数据。
查询
/
对于
架构名称 架构的名称。 < 架构名称 > 架构
表名称 表格名称 < 表名称 >
对于 查询
查询 使用自定义 SQL 查询读取数据。 示例为 SELECT * FROM MyTable。 请注意,查询不应以分号结尾(;))。
启用分区加载时,需要在查询中挂接任何相应的内置分区参数。 有关示例,请参阅 Amazon RDS For Oracle 部分中的并行复制
< SQL 查询 > oracleReaderQuery
分区名称 需要复制的物理分区的列表。 如果使用查询来检索源数据,请在 WHERE 子句中挂接 ?AdfTabularPartitionName < 分区名称 > partitionNames (分区名称)
分区列名称 整数 类型的 源列的名称,该类型将由区域分区用于并行复制。 如果未指定,系统会自动检测表的主键并将其用作分区列。 < 分区列名称 > partitionColumnName
分区上限 要从中复制数据的分区列的最大值。如果使用查询来检索源数据,请挂钩 ?AdfRangePartitionUpbound WHERE 子句。 < 分区上限 > partitionUpperBound
分区下限 要从中复制数据的分区列的最小值。如果使用查询来检索源数据,请挂钩 ?AdfRangePartitionLowbound WHERE 子句。 < 分区下限 > partitionLowerBound 分区下限
查询超时(分钟) 查询命令执行的超时,默认值为 120 分钟。 timespan queryTimeout
精度 有效十进制数字的最大数目。 允许的值范围为 1 到 256。 如果未指定,则默认为 256。 < 精度 > 数字精度
Scale 小数点后的位数。 允许的值范围为 0 到 130,并且必须小于或等于精度。 如果未指定,则默认为 130。 < 缩放 > numberScale
其他列 添加其他数据列以存储源文件的相对路径或静态值。 后者支持表达式。 • 姓名
•价值
附加列:
•名字
•价值