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

将 Oracle 数据库作为 AWS DMS 源

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

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

注意

AWS DMS 版本 3.3.0 和更高版本中支持将 Oracle 版本 18c 作为源。

可以使用安全套接字层 (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. 创建符合所选配置的 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 的直接访问设置或者 Oracle 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 不支持这些 UPDATE 语句。

  • 您的源为 Oracle 版本 11,并且您对 XMLTYPE 和 LOB 列执行 UPDATE 语句。在此情况下,您必须使用 Binary Reader。Oracle LogMiner 不支持这些语句。

  • 您正在从 Oracle 12c 迁移 LOB 列。对于 Oracle 12c,LogMiner 不支持 LOB 列,因此,在此情况下,使用 Binary Reader。

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

当您使用 Oracle 作为完全加载和更改数据捕获 (CDC) 的源终端节点或仅作为 CDC 的源终端节点时,可以设置额外的连接属性。这些属性指定是使用 LogMiner 还是 Binary Reader 来访问事务日志。您在创建源终端节点时指定了额外的连接属性。如果您具有多个连接属性设置,请用分号将它们彼此分开,并且不需要额外的空格。

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

useLogMinerReader=N;useBfile=Y;

在 AWS DMS 版本 3.3.0 或更高版本中,如果 Oracle 源数据库使用的是 Oracle Automatic Storage Management (ASM),则请您使用 Binary Reader。此外,请确保额外的连接属性包括针对并行线程数 (parallelASMThreads) 和预读缓冲区数 (readAheadBlocks) 的有效设置。设置这些属性可以显著提高使用 Oracle ASM 的 CDC 负载的性能。以下示例中显示的设置为大多数 Oracle ASM 配置提供良好的结果:

useLogMinerReader=N;useBfile=Y;parallelASMThreads=6;readAheadBlocks=150000;

有关这些额外连接属性所支持值的完整范围的更多信息,请参阅将 Oracle 作为 AWS DMS 源时的额外连接属性中对各个属性的描述。

在早于 3.3.0 的 AWS DMS 版本中,如果 Oracle 源数据库使用的是 Oracle Automatic Storage Management (ASM),则请您使用 Binary Reader。此外,请确保额外连接属性包括 ASM 用户名和 ASM 服务器地址的设置。在您创建源终端节点时,Password 请求参数必须指定两个密码:Oracle 源终端节点密码和 Oracle ASM 密码。

为额外连接属性使用以下格式来访问使用 Oracle ASM 的服务器。

useLogMinerReader=N;useBfile=Y;asm_user=asm_username;asm_server=first_RAC_server_ip_address:port_number/+ASM;

如下所示将源终端节点 Password 请求参数设置为 Oracle 用户密码和 ASM 密码,以逗号分隔。

oracle_user_password,asm_user_password

此外,使用 Oracle ASM 的 CDC 负载的性能取决于您选择的其他设置。这些设置包括您的 DMS 额外连接属性和 SQL 设置,用于配置 Oracle 源。有关将 Oracle ASM 与 Oracle 源终端节点配合使用的更多信息,请参阅如何使用 AWS DMS 从 Oracle ASM 迁移到 AWS

注意

如果您使用 AWS DMS 版本 3.3.0 或更高版本,则不需要执行上文针对较早版本所述的任何附加设置。

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>; GRANT SELECT on DBA_TABLESPACES to <dms_user>; GRANT SELECT on ALL_TAB_PARTITIONS to <dms_user>; 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>; GRANT LOGMINING 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'); exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_REGISTRY','<dms_user>','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('OBJ$','<dms_user>','SELECT'); 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> 语法。

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

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

  • AWS DMS 支持通过对源运行 CREATE TABLE AS 语句而对目标进行的所有数据更改。

    注意

    AWS DMS 版本 3.1.3 及更高版本支持通过对源运行 CREATE TABLE AS 语句而对目标进行的所有数据更改。在早期版本中,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 不支持虚拟列。

  • 在多租户环境中,AWS DMS 可以连接到一个容器 (CDB) 内的可插拔数据库 (PDB)。在此配置中,您必须使用 Binary Reader 进行更改数据捕获 (CDC)。PDB 不支持 LogMiner。

将 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 Automatic Storage Management (ASM) 的更多信息,请参阅将 Oracle LogMiner 或 Oracle Binary Reader 用于更改数据捕获 (CDC)

默认值:Y

有效值:Y/N

示例:useLogminerReader=N;useBfile=Y;

useBfile

将此属性设置为 Y,以便使用 Binary Reader 实用程序捕获更改数据。将 useLogminerReader 设置为 N 可将此属性设置为 Y。要在将 Amazon RDS for Oracle 作为源时使用 Binary Reader,请设置其他属性。有关此设置以及使用 Oracle Automatic Storage Management (ASM) 的更多信息,请参阅将 Oracle LogMiner 或 Oracle Binary Reader 用于更改数据捕获 (CDC)

默认值:N

有效值:Y/N

示例:useLogminerReader=N;useBfile=Y;

parallelASMThreads

设置此属性可更改 DMS 配置通过 Oracle Automatic Storage Management (ASM) 执行更改数据捕获 (CDC) 负载所用的线程数。您可以指定一个介于 2(默认值)和 8(最大值)之间的整数值。将此属性与 readAheadBlocks 属性一起使用。有关更多信息,请参阅 为用于 AWS DMS 的 Amazon RDS for Oracle 源配置更改数据捕获 (CDC)

设置对象尾部效果的半径 (单位为米)。

有效值:从 2 到 8 的整数

示例:parallelASMThreads=6;readAheadBlocks=150000;

readAheadBlocks

设置此属性可更改 DMS 配置通过 Oracle Automatic Storage Management (ASM) 执行更改数据捕获 (CDC) 负载所用的预读数据块数。您可以指定一个介于 1000(默认值)和 200000(最大值)之间的整数值。将此属性与 readAheadBlocks 属性一起使用。有关更多信息,请参阅 为用于 AWS DMS 的 Amazon RDS for Oracle 源配置更改数据捕获 (CDC)

默认值:1000

有效值:从 1000 到 200000 的整数

示例:parallelASMThreads=6;readAheadBlocks=150000;

accessAlternateDirectly

将此属性设置为 false,以便使用 Binary Reader 捕获作为源的 Amazon RDS for Oracle 的更改数据。这将指示 DMS 实例不要使用直接文件访问通过任何指定的路径前缀替换来访问重做日志。有关更多信息,请参阅 为用于 AWS DMS 的 Amazon RDS for Oracle 源配置更改数据捕获 (CDC)

默认值:true

有效值:true/false

示例:useLogminerReader=N;useBfile=Y;accessAlternateDirectly=false;

useAlternateFolderForOnline 将此属性设置为 true,以便使用 Binary Reader 捕获作为源的 Amazon RDS for Oracle 的更改数据。这将指示 DMS 实例使用任何指定的前缀替换来访问所有在线重做日志。有关更多信息,请参阅 为用于 AWS DMS 的 Amazon RDS for Oracle 源配置更改数据捕获 (CDC)

默认值:false

有效值:true/false

示例:useLogminerReader=N;useBfile=Y;accessAlternateDirectly=false; useAlternateFolderForOnline=true;

oraclePathPrefix 将此字符串属性设置为必需值,以便使用 Binary Reader 捕获作为源的 Amazon RDS for Oracle 的更改数据。此值指定用于访问重做日志的默认 Oracle root。有关更多信息,请参阅 为用于 AWS DMS 的 Amazon RDS for Oracle 源配置更改数据捕获 (CDC)

默认值:none

有效值:/rdsdbdata/db/ORCL_A/

示例:useLogminerReader=N;useBfile=Y;accessAlternateDirectly=false; useAlternateFolderForOnline=true;oraclePathPrefix=/rdsdbdata/db/ORCL_A/;

usePathPrefix 将此字符串属性设置为必需值,以便使用 Binary Reader 捕获作为源的 Amazon RDS for Oracle 的更改数据。此值指定用于替换访问重做日志的默认 Oracle root 的路径前缀。有关更多信息,请参阅 为用于 AWS DMS 的 Amazon RDS for Oracle 源配置更改数据捕获 (CDC)

默认值:none

有效值:/rdsdbdata/log/

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

replacePathPrefix 将此属性设置为 true,以便使用 Binary Reader 捕获作为源的 Amazon RDS for Oracle 的更改数据。此设置指示 DMS 实例使用指定的 usePathPrefix 设置替换默认的 Oracle root,以访问重做日志。有关更多信息,请参阅 为用于 AWS DMS 的 Amazon RDS for Oracle 源配置更改数据捕获 (CDC)

默认值:false

有效值:true/false

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

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 任务,此任务使用 Active 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 表。复制带这些数据类型的列会生成 null 列。

  • BFILE

  • ROWID

  • REF

  • UROWID

  • 嵌套表

  • 用户定义的数据类型

  • ANYDATA

注意

不支持虚拟列。