AWS Database Migration Service
用户指南 (版本 API Version 2016-01-01)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

将 Oracle 数据库作为 AWS DMS 源

您可以使用 AWS DMS 从一个或多个 Oracle 数据库中迁移数据。通过将 Oracle 数据库作为源,您可以将数据迁移到 AWS DMS 支持的任一目标。

对于自管理 Oracle 数据库,AWS DMS 支持版本 10.2 及更高版本、11g 直至 12.2 版本的所有 Oracle 数据库版本将自管理数据库作为源。对于由 Amazon RDS 提供的 Amazon 托管 Oracle 数据库,AWS DMS 支持用于版本 11g(版本 11.2.0.3.v1 及更高版本)直至 12.2 版本的所有 Oracle 数据库版本。

可以使用 SSL 加密 Oracle 终端节点与复制实例之间的连接。有关将 SSL 用于 Oracle 终端节点的更多信息,请参阅 将 SSL 与 AWS Database Migration Service 配合使用

将 Oracle 数据库配置为 AWS DMS 源的源的步骤如下所示:

  1. 如果要创建仅限 CDC 的任务或完全加载加上 CDC 的任务,则必须选择 Oracle LogMiner 或 Oracle Binary Reader 来捕获数据更改。选择 LogMiner 或 Binary Reader 可确定某些后续权限和配置任务。有关 LogMiner 和 Binary Reader 的比较,请参阅下一节。

  2. 创建具有对 AWS DMS 的适当权限的 Oracle 用户。如果您要创建仅限完全加载的任务,则不需要进一步配置。

  3. 如果您要创建一个完全加载加上 CDC 的任务或者创建一个仅包含 CDC 任务,请配置 Oracle for LogMiner 或 Binary Reader。

  4. 创建符合所选配置的 DMS 终端节点。

有关使用 Oracle 数据库和 AWS DMS 的其他详细信息,请参阅以下章节。

将 Oracle LogMiner 或 Oracle Binary Reader 用于更改数据捕获 (CDC)

Oracle 提供了两种方法在进行更改处理时读取重做日志:Oracle LogMiner 和 Oracle Binary Reader。Oracle LogMiner 提供了到 Oracle 的在线和已存档重做日志文件的 SQL 接口。Binary Reader 是一个 AWS DMS 功能,用于直接读取和分析原始重做日志文件。

默认情况下,AWS DMS 将 Oracle LogMiner 用于更改数据捕获 (CDC)。将 LogMiner 与 AWS DMS 一起使用的好处包括:

  • LogMiner 支持大部分 Oracle 选项,例如加密选项和压缩选项。Binary Reader 不支持所有 Oracle 选项,特别是用于加密和压缩的选项。

  • LogMiner 提供了更简单的配置,特别是与 Oracle Binary Reader 的直接访问设置或者 Automatic Storage Management (ASM) 上的重做日志相比。

  • LogMiner 完全支持大多数 Oracle 加密选项,包括 Oracle 透明数据加密 (TDE)。

  • 对于完全加载和持续复制 (CDC),LogMiner 支持以下 HCC 压缩类型:

    • QUERY HIGH

    • ARCHIVE HIGH

    • ARCHIVE LOW

    • QUERY LOW

    Binary Reader 仅对完全加载复制支持 QUERY LOW 压缩,而不对持续 (CDC) 复制支持 QUERY LOW 压缩。

  • LogMiner 支持 AWS DMS 使用表集群。Binary Reader 没有这种支持。

将 Binary Reader 与 AWS DMS 一起使用(而不是 LogMiner)的优点包括:

  • 对于更改量较大的迁移,LogMiner 可能会对托管 Oracle 源数据库的计算机造成一些 I/O 或 CPU 影响。Binary Reader 对 I/O 或 CPU 造成影响的几率更小,因为存档日志会被复制到复制实例并在该处看管。

  • 对于更改量较大的迁移,与使用 Oracle LogMiner 相比,使用 Binary Reader 时 CDC 性能通常会好得多。

  • Binary Reader 支持对 Oracle 版本 12c 中 LOB 的 CDC。LogMiner 则不支持。

  • Binary Reader 在完全加载和连续复制 (CDC) 中支持以下 HCC 压缩类型:

    • QUERY HIGH

    • ARCHIVE HIGH

    • ARCHIVE LOW

      完全加载迁移仅支持 QUERY LOW 压缩类型。

一般而言,除非遇到以下情况,否则请使用 Oracle LogMiner 迁移您的 Oracle 数据库:

  • 需要在源 Oracle 数据库上运行多个迁移任务。

  • 源 Oracle 数据库上的更改量或重做日志量很大。

  • 您要将 LOB 从 Oracle 12.2 或更高版本源端点迁移。

  • 如果您的工作负载包含仅更新 LOB 列的 UPDATE 语句,则必须使用 Binary Reader。Oracle LogMiner 不支持这些更新语句。

  • 如果您的源是 Oracle 版本 11 并且您对 XMLTYPE 和 LOB 列执行了 UPDATE 语句,则必须使用 Binary Reader。Oracle LogMiner 不支持这些语句。

  • 在 Oracle 12c 中,LogMiner 不支持 LOB 列。如果要从 Oracle 12c 迁移 LOB 列,您必须使用 Binary Reader。

Oracle 源数据库上的更改数据捕获 (CDC) 的配置

当您使用 Oracle 作为完全加载和更改数据捕获 (CDC) 的源终端节点或仅作为 CDC 的源终端节点时,您必须设置一个额外的连接属性。此属性指定是使用 LogMiner 还是 Binary Reader 来访问事务日志。您在创建源终端节点时指定了一个额外的连接属性。应将多个额外连接属性设置用分号隔开。

默认情况下将使用 LogMiner,因此您不必显式指定使用它。要启用 Binary Reader 以访问事务日志,请添加以下额外连接属性。

useLogMinerReader=N; useBfile=Y

如果 Oracle 源数据库使用 Oracle Automatic Storage Management (ASM),则额外连接属性需要包含 ASM 用户名和 ASM 服务器地址。当您创建源终端节点时,密码字段需要具有两个密码:源用户密码和 ASM 密码。

例如,以下额外连接属性格式用于访问使用 Oracle ASM 的服务器。

useLogMinerReader=N;asm_user=<asm_username>;asm_server=<first_RAC_server_ip_address>:<port_number>/+ASM

如果 Oracle 源数据库使用 Oracle ASM,则源终端节点密码字段必须具有 Oracle 用户密码和 ASM 密码 (以逗号分隔)。例如,以下代码段适用于密码字段。

<oracle_user_password>,<asm_user_password>

Oracle 源数据库上的 CDC 的限制

将 Oracle 数据库作为 AWS DMS 更改数据捕获源时,存在以下限制:

  • AWS DMS 不捕获 Oracle DBMS_REDEFINITION 包进行的更改,例如,对表元数据和 OBJECT_ID 值的更改。

  • 在使用 BFILE 时,AWS DMS 在 CDC 模式下不支持具有溢出段且按索引组织的表。例如,在未使用 LogMiner 访问重做日志时。

将自管理 Oracle 数据库用作 AWS DMS 的源

自管理数据库是您配置和控制的数据库,它是本地数据库实例或 Amazon EC2 上的数据库。接下来,您可以了解在将自管理 Oracle 数据库与 AWS DMS 一起使用时需要设置的权限和配置。

AWS DMS 的自管理 Oracle 源上所需的用户账户权限

要将 Oracle 数据库作为 AWS DMS 任务中的源,必须在 Oracle 数据库中为 AWS DMS Oracle 数据库定义中指定的用户授予以下权限。授予权限时,使用对象的实际名称 (例如,包括下划线的 V_$OBJECT),而不是对象的同义词 (例如,不带下划线的 V$OBJECT)。

GRANT SELECT ANY TRANSACTION to <dms_user> GRANT SELECT on V_$ARCHIVED_LOG to <dms_user> GRANT SELECT on V_$LOG to <dms_user> GRANT SELECT on V_$LOGFILE to <dms_user> GRANT SELECT on V_$DATABASE to <dms_user> GRANT SELECT on V_$THREAD to <dms_user> GRANT SELECT on V_$PARAMETER to <dms_user> GRANT SELECT on V_$NLS_PARAMETERS to <dms_user> GRANT SELECT on V_$TIMEZONE_NAMES to <dms_user> GRANT SELECT on V_$TRANSACTION to <dms_user> GRANT SELECT on ALL_INDEXES to <dms_user> GRANT SELECT on ALL_OBJECTS to <dms_user> GRANT SELECT on DBA_OBJECTS to <dms_user> (required if the Oracle version is earlier than 11.2.0.3) GRANT SELECT on ALL_TABLES to <dms_user> GRANT SELECT on ALL_USERS to <dms_user> GRANT SELECT on ALL_CATALOG to <dms_user> GRANT SELECT on ALL_CONSTRAINTS to <dms_user> GRANT SELECT on ALL_CONS_COLUMNS to <dms_user> GRANT SELECT on ALL_TAB_COLS to <dms_user> GRANT SELECT on ALL_IND_COLUMNS to <dms_user> GRANT SELECT on ALL_LOG_GROUPS to <dms_user> GRANT SELECT on SYS.DBA_REGISTRY to <dms_user> GRANT SELECT on SYS.OBJ$ to <dms_user> GRANT SELECT on DBA_TABLESPACES to <dms_user> GRANT SELECT on ALL_TAB_PARTITIONS to <dms_user> GRANT SELECT on ALL_ENCRYPTED_COLUMNS to <dms_user> GRANT SELECT on V_$LOGMNR_LOGS to <dms_user> GRANT SELECT on V_$LOGMNR_CONTENTS to <dms_user>

在使用持续复制 (CDC) 时,您需要这些其他权限。

  • 在使用 CDC 时需要以下权限,以便 AWS DMS 可添加到 11g 和 12c 的 Oracle LogMiner 重做日志中。

    Grant EXECUTE ON dbms_logmnr TO <dms_user>;
  • 在使用 CDC 时需要以下权限,以便 AWS DMS 只能添加到 12c 的 Oracle LogMiner 重做日志中。

    Grant LOGMINING TO <dms_user>;

如果您使用了下面提到的任一额外功能,则需要给定的额外权限:

  • 如果视图公开,则向 <dms_user> 授予针对 ALL_VIEWS 的 SELECT。

  • 如果您使用模式来匹配复制任务中的表名称,请授予 SELECT ANY TABLE。

  • 如果您在复制任务中指定了一个表列表,请授予针对该列表中的每个表的 SELECT。

  • 如果您添加了补充日志记录,请授予 ALTER ANY TABLE。

  • 如果您添加了补充日志记录并使用了特定表列表,请为该列表中的每个表授予 ALTER。

  • 如果您要从 Oracle RAC 迁移,请授予针对前缀为 g_$ 和 v_$ 的具体化视图的 SELECT 权限。

配置 AWS DMS 的自管理 Oracle 源

在将自管理 Oracle 数据库用作 AWS DMS 的源之前,需要执行几项任务:

  • 提供 Oracle 账户访问权限 - 您必须为 AWS DMS 提供一个 Oracle 用户账户。该用户账户必须具有对 Oracle 数据库的读/写权限,如上一节中所指定。

  • 确保启用 ARCHIVELOG 模式 - Oracle 可以使用两种不同模式运行:ARCHIVELOG 模式和 NOARCHIVELOG 模式。要将 Oracle 与 AWS DMS 一起使用,源数据库必须处于 ARCHIVELOG 模式。

  • 设置补充日志记录 - 如果您计划在 CDC 任务或完整加载加上 CDC 任务中使用该源,则需要设置补充日志记录以便为复制捕获更改。

为 Oracle 启用补充日志记录有两个步骤。首先,您需要启用数据库级别补充日志记录。这样做可确保 LogMiner 具有最少的信息来支持各种表结构 (如群集表和按索引组织的表)。其次,您需要为要迁移的每个表启用表级别补充日志记录。

启用数据库级别补充日志记录

  1. 运行以下查询以确定是否已启用数据库级别补充日志记录。返回的结果应来自 GE to 9.0.0

    SELECT name, value, description FROM v$parameter WHERE name = 'compatible';
  2. 运行以下查询。返回的结果应为 YESIMPLICIT

    SELECT supplemental_log_data_min FROM v$database;
  3. 运行以下查询以启用数据库级别补充日志记录。

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

启用表级别补充日志记录有两种方法。在第一种方法中,如果您的数据库用户账户具有对要迁移的所有表的 ALTER TABLE 权限,您可以使用额外的连接参数 addSupplementalLogging,如下所述。否则,您可以对该迁移中的每个表使用以下步骤。

启用表级别补充日志记录

  1. 如果表具有主键,请通过运行以下命令为表添加 PRIMARY KEY 补充日志记录。

    ALTER TABLE <table_name> ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
  2. 如果没有主键并且表具有多个唯一索引,则 AWS DMS 使用按索引名称的字母顺序排列的第一个唯一索引。

    按前面所示在该索引的列上创建一个补充日志组。

  3. 如果没有主键,也没有唯一索引,则必须在所有列上添加补充日志记录。运行以下查询以向所有列添加补充日志记录。

    ALTER TABLE <table_name> ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

在某些情况下,目标表主键或唯一索引不同于源表主键或唯一索引。在这些情况下,请在构成目标表主键或唯一索引的源表列上添加补充日志记录。如果您更改目标表主键,则应在所选索引的列上添加补充日志记录,而不是原始主键或唯一索引的列。

必要时添加额外的日志记录,例如,如果为表定义了筛选条件。如果表具有唯一索引或主键,对于筛选条件中涉及到的各列,如果这些列不同于主键或唯一索引列,则需要在这些列上添加补充日志记录。但是,如果 ALL COLUMNS 补充日志记录已添加到表上,您无需添加任何额外的日志记录。

ALTER TABLE <table_name> ADD SUPPLEMENTAL LOG GROUP <group_name> (<column_list>) ALWAYS;

使用 Amazon 托管 Oracle 数据库作为 AWS DMS 的源

Amazon 托管数据库是位于 Amazon 数据库服务(如 Amazon RDS、Amazon Aurora 或 Amazon S3)上的数据库。接下来,您可以了解在将 Amazon 托管 Oracle 数据库与 AWS DMS 一起使用时需要设置的权限和配置。

AWS DMS 的 Amazon 托管 Oracle 源上所需的用户账户权限

要授予 Amazon RDS 上 Oracle 数据库的权限,请使用存储过程 rdsadmin.rdsadmin_util.grant_sys_object。有关更多信息,请参阅向 SYS 对象授予 SELECT 或 EXECUTE 权限

向用于访问源 Oracle 终端节点的 AWS DMS 用户账户授予以下权限。

  • GRANT SELECT ANY TABLE to <dms_user>;

  • GRANT SELECT on ALL_VIEWS to <dms_user>;

  • GRANT SELECT ANY TRANSACTION to <dms_user>;

  • 运行以下命令:exec rdsadmin.rdsadmin_util.grant_sys_object('V_$ARCHIVED_LOG','<dms_user>','SELECT');

  • 运行以下命令:exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOG','<dms_user>','SELECT');

  • 运行以下命令:exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGFILE','<dms_user>','SELECT');

  • 运行以下命令:exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE','<dms_user>','SELECT');

  • 运行以下命令:exec rdsadmin.rdsadmin_util.grant_sys_object('V_$THREAD','<dms_user>','SELECT');

  • 运行以下命令:exec rdsadmin.rdsadmin_util.grant_sys_object('V_$PARAMETER','<dms_user>','SELECT');

  • 运行以下命令:exec rdsadmin.rdsadmin_util.grant_sys_object('V_$NLS_PARAMETERS','<dms_user>','SELECT');

  • 运行以下命令:exec rdsadmin.rdsadmin_util.grant_sys_object('V_$TIMEZONE_NAMES','<dms_user>','SELECT');

  • 运行以下命令:exec rdsadmin.rdsadmin_util.grant_sys_object('V_$TRANSACTION','<dms_user>','SELECT');

  • 运行以下命令:

    GRANT SELECT on ALL_INDEXES to <dms_user>; GRANT SELECT on ALL_OBJECTS to <dms_user>; GRANT SELECT on ALL_TABLES to <dms_user>; GRANT SELECT on ALL_USERS to <dms_user>; GRANT SELECT on ALL_CATALOG to <dms_user>; GRANT SELECT on ALL_CONSTRAINTS to <dms_user>; GRANT SELECT on ALL_CONS_COLUMNS to <dms_user>; GRANT SELECT on ALL_TAB_COLS to <dms_user>; GRANT SELECT on ALL_IND_COLUMNS to <dms_user>; GRANT SELECT on ALL_LOG_GROUPS to <dms_user>;
  • 运行以下命令:exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_REGISTRY','<dms_user>','SELECT');

  • 运行以下命令:exec rdsadmin.rdsadmin_util.grant_sys_object('OBJ$','<dms_user>','SELECT');

  • GRANT SELECT on DBA_TABLESPACES to <dms_user>;

  • GRANT SELECT on ALL_TAB_PARTITIONS to <dms_user>;

  • GRANT LOGMINING TO <dms_user>;

  • 运行以下命令:exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_ENCRYPTED_COLUMNS','<dms_user>','SELECT');

  • 运行以下命令:exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_LOGS','<dms_user>','SELECT');

  • 运行以下命令:exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_CONTENTS','<dms_user>','SELECT');

  • 运行以下命令:exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR','<dms_user>','EXECUTE');

对 Amazon 托管 Oracle 进行 AWS DMS 配置

在使用 Amazon 托管 Oracle 数据库作为 AWS DMS 的源之前,需要执行几项任务:

  • 提供 Oracle 账户访问权限 - 您必须为 AWS DMS 提供一个 Oracle 用户账户。该用户账户必须具有对 Oracle 数据库的读/写权限,如上一节中所指定。

  • 将 Amazon RDS 数据库的备份保留期设置为 1 天或更长时间 - 设置备份保留期可确保数据库在 ARCHIVELOG 模式下运行。有关设置备份保留期的更多信息,请参阅 Amazon RDS 用户指南 中的使用自动备份

  • 设置存档保留 - 运行以下命令以保留 Oracle 数据库实例的已存档重做日志。运行此命令可让 AWS DMS 使用 LogMiner 检索日志信息。确保您具有足够的存储空间,可以在迁移期间容纳已存档重做日志。

    在以下示例中,日志将保留 24 小时。

    exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',24);
  • 设置补充日志记录 - 如果您计划在 CDC 任务或完整加载加上 CDC 任务中使用该源,则设置补充日志记录以便为复制捕获更改。

    为 Oracle 启用补充日志记录有两个步骤。首先,您需要启用数据库级别补充日志记录。这样做可确保 LogMiner 具有最少的信息来支持各种表结构 (如群集表和按索引组织的表)。其次,您需要为要迁移的每个表启用表级别补充日志记录。

    启用数据库级别补充日志记录

    • 运行以下查询以启用数据库级别补充日志记录。

      exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');

    启用表级别补充日志记录

    • 运行以下命令以为具有主键的表启用 PRIMARY KEY 日志记录。

      exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD','PRIMARY KEY');

    对于具有主键的表,请使用以下命令添加补充日志记录。

    alter table <table_name> add supplemental log data (ALL) columns;

    如果您创建了具有主键的表,则应在创建语句中包含补充日志记录子句,或者修改表以添加补充日志记录。以下命令创建一个表并添加补充日志记录。

    create table <table_name> (<column_list>, supplemental log data (ALL) columns);

    如果您创建了一个表并随后添加了主键,您需要向表添加补充日志记录。使用以下命令将补充日志记录添加到表。

    alter table <table_name> add supplemental log data (PRIMARY KEY) columns;

为用于 AWS DMS 的 Amazon RDS for Oracle 源配置更改数据捕获 (CDC)

您可以对 AWS DMS 进行配置,以使用 Amazon RDS for Oracle 实例作为 CDC 的源。您可以将 Oracle Binary Reader 与 Amazon RDS for Oracle 源结合使用 (Oracle 版本 11.2.0.4.v11 及更高版本、12.1.0.2.v7 及更高版本)。

在创建 Amazon RDS for Oracle 源终端节点时,应在连接信息中包含以下附加的连接属性:

useLogminerReader=N;useBfile=Y;accessAlternateDirectly=false; useAlternateFolderForOnline=true; oraclePathPrefix=/rdsdbdata/db/ORCL_A/;usePathPrefix=/rdsdbdata/log/; replacePathPrefix=true

将 Oracle 作为 AWS DMS 源的限制

将 Oracle 数据库作为 AWS DMS 源时,存在以下限制:

  • 在与 Oracle LogMiner 一起使用时,AWS DMS 支持 Oracle 透明数据加密 (TDE) 表空间加密和 AWS Key Management Service (AWS KMS) 加密。所有其他形式的加密均不支持。

  • 包含 LOB 的表必须具有主键才能使用 CDC。

  • AWS DMS 在 Oracle 11 和更高版本中支持 rename table <table name> to <new table name> 语法。

  • 使用显式 CHAR 语义创建的 Oracle 源数据库列传输到使用 BYTE 语义的目标 Oracle 数据库。在迁移之前,您必须在目标 Oracle 数据库上创建包含此类型的列的表。

  • AWS DMS 不会复制由分区或子分区操作(数据定义语言 (DDL) 操作,例如 ADD、DROP、EXCHANGE 或 TRUNCATE)导致的数据更改。要复制此类更改,必须重新加载所复制的表。AWS DMS 会将任何将来的数据更改复制到新添加的分区,您无需重新加载表。但是,对分区中的旧数据记录的 UPDATE 操作将失败,并且会生成 0 rows affected 警告。

  • DDL 语句 ALTER TABLE ADD <column> <data_type> DEFAULT <> 不会将默认值复制到目标。目标中的新列将设置为 NULL。如果新列可为空,Oracle 首先更新所有表行,然后再记录 DDL 本身。因此,AWS DMS 捕获对计数器的更改,但不更新目标。由于新列设置为 NULL,如果目标表没有主键或唯一索引,接下来的更新会生成 0 rows affected 警告。

  • 不支持由 CREATE TABLE AS 语句进行的数据更改。但是,在目标上会创建新表。

  • 如果启用了限制大小 LOB 模式,则 AWS DMS 复制 Oracle 源中的空 LOB 以作为目标中的 NULL 值。

  • 在 AWS DMS 开始 CDC 时,它将时间戳映射到 Oracle 系统更改号 (SCN)。默认情况下,Oracle 仅将时间戳与 SCN 的映射保留五天。如果指定的时间戳太早 (超过了 5 天的保留期),Oracle 将生成错误。有关更多信息,请参阅 Oracle 文档

  • AWS DMS 不支持使用 ASM 代理连接到 Oracle 源。

  • AWS DMS 不支持虚拟列。

将 Oracle 作为 AWS DMS 源时的额外连接属性

您可以使用额外的连接属性配置 Oracle 源。在创建源终端节点时,您可以指定这些设置。对于多个额外连接属性设置,应该用分号将它们彼此隔开。

下表列出了可用于将 Oracle 数据库配置为 AWS DMS 源的额外连接属性。

名称 说明

addSupplementalLogging

设置此属性可设置 Oracle 数据库的表级别补充日志记录。此属性将对为迁移任务选择的所有表启用 PRIMARY KEY 补充日志记录。

默认值:N

有效值:Y/N

示例:addSupplementalLogging=Y

注意

如果您使用此选项,则仍需启用前面讨论过的数据库级别补充日志记录。

additionalArchivedLogDestId

在主/备用设置中将此属性与 archivedLogDestId 一起设置。当发生故障转移时,此属性很有用。在这种情况下,AWS DMS 需要知道从哪个目标中获取存档重做日志以读取更改,因为在故障转移后以前的主实例现在是备用实例。

useLogminerReader

将此属性设置为 Y 可使用 LogMiner 实用工具 (默认) 捕获更改数据。如果希望 AWS DMS 将重做日志作为二进制文件进行访问,请将此选项设置为 N。如果设置为 N,您还必须添加设置 useBfile=Y。有关更多信息,请参阅将 Oracle LogMiner 或 Oracle Binary Reader 用于更改数据捕获 (CDC)

默认值:Y

有效值:Y/N

示例:useLogminerReader=N; useBfile=Y

如果 Oracle 源数据库使用的是 Oracle Automatic Storage Management (ASM),则额外连接参数需要包含 ASM 用户名和 ASM 服务器地址。密码字段还需要具有两个密码:源用户密码和 ASM 密码 (彼此以逗号分隔)。

示例:useLogminerReader=N;asm_user=<asm_username>; asm_server=<first_RAC_server_ip_address>:<port_number>/+ASM

retryInterval

指定系统在重新发送查询之前等待的秒数。

默认值:5

有效值:从 1 开始的数字

示例:retryInterval=6

archivedLogDestId

指定已存档重做日志的目标。该值应与 $archived_log 表中的 DEST_ID 数相同。在使用多个日志目标 (DEST_ID) 时,建议您指定已存档重做日志位置标识符。这样做将确保从一开始便访问正确的日志,从而提高性能。

默认值:0

有效值:数字

示例:archivedLogDestId=1

archivedLogsOnly

在此字段设置为 Y 时,AWS DMS 仅访问已存档重做日志。如果已存档重做日志仅存储在 Oracle ASM 上,则 AWS DMS 用户账户需要获得 ASM 权限。

默认值:N

有效值:Y/N

示例:archivedLogsOnly=Y

numberDataTypeScale

指定数字的小数位数。可以选择最大为 38 的小数位数,也可以选择 FLOAT。默认情况下,NUMBER 数据类型将转换为精度 38,小数位数 10。

调整渲染效果的缩放。

有效值:-1 到 38 (对于 FLOAT,为 -1)

示例:numberDataTypeScale =12

afterConnectScript

指定脚本在 AWS DMS 连接到终端节点后立即运行。

有效值:用分号分隔的 SQL 语句。并非所有 SQL 语句都受支持。

示例:afterConnectScript=ALTER SESSION SET CURRENT_SCHEMA = system;

failTasksOnLobTruncation

当设置为 true 时,如果 LOB 列的实际大小大于指定的 LobMaxSize,此属性将导致任务失败。

如果任务设置为受限 LOB 模式并且此选项设置为 true,任务将失败,而不是截断 LOB 数据。

默认值:false

有效值:布尔值

示例:failTasksOnLobTruncation=true

readTableSpaceName

当设置为 true 时,此属性支持表空间复制。

默认值:false

有效值:布尔值

示例:readTableSpaceName =true

standbyDelayTime

使用此属性指定备用同步延迟时间 (以分钟为单位)。

利用 AWS DMS 版本 2.3.0 及更高版本,您可以创建一个 Oracle 持续复制 (CDC) 任务,该任务使用 Oracle 活动 Data Guard 备用实例作为源以将持续更改复制到支持的目标中。这样一来,便无需连接到可能处于生产状态的活动数据库。

默认值:0

有效值:数字

示例:standbyDelayTime=1

Oracle 的源数据类型

AWS DMS 的 Oracle 终端节点支持大多数 Oracle 数据类型。下表列出了使用 AWS DMS 时支持的 Oracle 源数据类型以及与 AWS DMS 数据类型的默认映射。

有关如何查看目标中映射的数据类型的信息,请参阅有关所使用的目标终端节点的部分。

有关 AWS DMS 数据类型的其他信息,请参阅AWS Database Migration Service 的数据类型

Oracle 数据类型

AWS DMS 数据类型

BINARY_FLOAT

REAL4

BINARY_DOUBLE

REAL8

BINARY

BYTES

FLOAT (P)

如果精度小于或等于 24,请使用 REAL4。

如果精度大于 24,请使用 REAL8。

NUMBER (P,S)

当小数位数小于 0 时,请使用 REAL8

NUMBER 取决于 Oracle 源数据库设置中的“Expose number as”属性。

当小数位数为 0 时:

  • 如果精度为 0,请使用 REAL8。

  • 如果精度大于或等于 2,请使用 INT1。

  • 如果精度大于 2 且小于或等于 4,请使用 INT2。

  • 如果精度大于 4 且小于或等于 9,请使用 INT4。

  • 如果精度大于 9,请使用 NUMERIC。

  • 如果精度大于或等于小数位数,请使用 NUMERIC。

在所有其他情况下,请使用 REAL8。

DATE

DATETIME

INTERVAL_YEAR TO MONTH

STRING (带 interval year_to_month 指示)

INTERVAL_DAY TO SECOND

STRING (带 interval day_to_second 指示)

TIME

DATETIME

TIMESTAMP

DATETIME

TIMESTAMP(有时区)

STRING (带 timestamp_with_timezone 指示)

带本地时区的 TIMESTAMP

STRING (带 timestamp_with_local_ timezone 指示)

CHAR

STRING

VARCHAR2

STRING

NCHAR

WSTRING

NVARCHAR2

WSTRING

RAW

BYTES

REAL

REAL8

BLOB

BLOB

要将此数据类型用于 AWS DMS,必须允许对特定任务使用 BLOB 数据类型。AWS DMS 仅在包含主键的表中支持 BLOB 数据类型。

CLOB

CLOB

要将此数据类型用于 AWS DMS,必须允许对特定任务使用 CLOB 数据类型。在更改数据捕获 (CDC) 期间,AWS DMS 仅在包含主键的表中支持 CLOB 数据类型。

NCLOB

NCLOB

要将此数据类型用于 AWS DMS,必须允许对特定任务使用 NCLOB 数据类型。在 CDC 期间,AWS DMS 仅在包含主键的表中支持 NCLOB 数据类型。

LONG

CLOB

LONG 数据类型在批处理优化的应用模式 (TurboStream CDC 模式) 中不受支持。要将此数据类型用于 AWS DMS,必须允许对特定任务使用 LOB。在 CDC 期间,AWS DMS 仅在包含主键的表中支持 LOB 数据类型。

LONG RAW

BLOB

LONG RAW 数据类型在批处理优化的应用模式 (TurboStream CDC 模式) 中不受支持。要将此数据类型用于 AWS DMS,必须允许对特定任务使用 LOB。在 CDC 期间,AWS DMS 仅在包含主键的表中支持 LOB 数据类型。

XMLTYPE

CLOB

需要完整 Oracle 客户端才能支持 XMLTYPE 数据类型 (与 Oracle Instant Client 相对)。当目标列是 CLOB 时,同时支持完整 LOB 模式和受限 LOB 模式 (取决于目标)。

作为源的 Oracle 表,带不受支持且无法复制的以下数据类型的列。复制带这些数据类型的列会生成空列。

  • BFILE

  • ROWID

  • REF

  • UROWID

  • 嵌套表

  • 用户定义的数据类型

  • ANYDATA

注意

不支持虚拟列。