本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
您可以使用从其他 Oracle 数据库或其他支持的数据库之一将数据迁移到 Oracle 数据库目标。 AWS DMS可以使用安全套接字层 (SSL) 加密 Oracle 终端节点与复制实例之间的连接。有关在 Oracle 终端节点上使用 SSL 的更多信息,请参阅SSL与一起使用 AWS Database Migration Service。 AWS DMS 还支持使用 Oracle 透明数据加密 (TDE) 来加密目标数据库中的静态数据,因为 Oracle TDE 不需要加密密钥或密码即可写入数据库。
有关 AWS DMS 支持作为目标的 Oracle 版本的信息,请参见的目标 AWS DMS。
将 Oracle 作为目标时,我们假定数据将迁移到目标连接所使用的架构或用户。如果您要将数据迁移到其他架构,请使用架构转换来完成此操作。例如,假设您的目标终端节点连接到用户 RDSMASTER
并且您希望从用户 PERFDATA1
迁移到 PERFDATA2
。在这种情况下,请创建一个转换,如下所示。
{
"rule-type": "transformation",
"rule-id": "2",
"rule-name": "2",
"rule-action": "rename",
"rule-target": "schema",
"object-locator": {
"schema-name": "PERFDATA1"
},
"value": "PERFDATA2"
}
使用 Oracle 作为目标时,会将所有表和索 AWS DMS 引迁移到目标中的默认表和索引表空间。如果要将表和索引迁移到不同的表和索引表空间,请使用表空间转换来执行此操作。例如,假设您在 INVENTORY
架构中有一组已分配给 Oracle 源中的某些表空间的表。对于迁移,您希望将所有这些表分配给目标中的单个 INVENTORYSPACE
表空间。在这种情况下,请创建一个转换,如下所示。
{
"rule-type": "transformation",
"rule-id": "3",
"rule-name": "3",
"rule-action": "rename",
"rule-target": "table-tablespace",
"object-locator": {
"schema-name": "INVENTORY",
"table-name": "%",
"table-tablespace-name": "%"
},
"value": "INVENTORYSPACE"
}
有关转换的更多信息,请参阅 使用指定表选择和转换规则 JSON。
如果 Oracle 同时作为源和目标,则可以通过设置 Oracle 源额外连接属性 enableHomogenousTablespace=true
来保留现有的表或索引表空间分配。有关更多信息,请参阅 使用 Oracle 作为来源时的终端节点设置 AWS DMS
有关使用 Oracle 数据库作为目标的更多详细信息 AWS DMS,请参阅以下各节:
主题
将 Oracle 作为目标的局限性 AWS Database Migration Service
使用 Oracle 作为数据迁移目标的限制如下所示:
-
AWS DMS 不会在目标 Oracle 数据库上创建架构。您必须在目标 Oracle 数据库上创建任意所需的架构。Oracle 目标中很可能已存在该架构名称。源架构中的表将导入用户或架构,该用户或架构 AWS DMS 用于连接到目标实例。要迁移多个架构,可以创建多个复制任务。您也可以将数据迁移到目标上的不同架构。为此,您需要对 AWS DMS 表映射使用架构转换规则。
-
AWS DMS 不支持带有 INDEXTYPE 上下文的表的
Use direct path full load
选项。作为解决方法,您可以使用数组加载。 -
利用批量优化应用选项,加载到净更改表中时使用直接路径,这不支持 XML 类型。作为解决方法,您可以使用事务应用模式。
-
Oracle 目标可以按不同方式处理从源数据库迁移的空字符串(例如,转换为一个空格字符串)。这可能会导致 AWS DMS 验证报告不匹配。
-
您可以使用以下公式表示在批量优化应用模式下支持的每个表的总列数:
2 *
columns_in_original_table
+columns_in_primary_key
<= 999例如,如果原始表有 25 列,其主键由 5 列组成,则总列数为 55。如果表超过支持的列数,则所有更改都将在 one-by-one模式下应用。
-
AWS DMS 不支持 Oracle 云基础架构 (OCI) 上的自治数据库。
-
在事务应用模式下,Oracle 目标可以处理大小不超过 32 KB 的 DML 语句。虽然此限制足以满足许多用例,但超过 32 KB 的 DML 语句将失败,并显示错误:“ORA-01460:请求的转换未实现或不合理。” 要解决此问题,必须将
BatchApplyEnabled
任务设置设置为,从而启用批量应用功能true
。Batch apply 减少了语句的总体大小,允许您绕过 32 KB 的限制。有关更多信息,请参阅 目标元数据任务设置。
将 Oracle 作为目标所需的用户账户权限
要在 AWS Database Migration Service 任务中使用 Oracle 目标,请在 Oracle 数据库中授予以下权限。您可向 AWS DMS的 Oracle 数据库定义中指定的用户账户授予这些权限。
-
SELECT ANY TRANSACTION
-
针对 V$NLS_PARAMETERS 的 SELECT
-
针对 V$TIMEZONE_NAMES 的 SELECT
-
针对 ALL_INDEXES 的 SELECT
-
针对 ALL_OBJECTS 的 SELECT
-
针对 DBA_OBJECTS 的 SELECT
-
针对 ALL_TABLES 的 SELECT
-
针对 ALL_USERS 的 SELECT
-
针对 ALL_CATALOG 的 SELECT
-
针对 ALL_CONSTRAINTS 的 SELECT
-
针对 ALL_CONS_COLUMNS 的 SELECT
-
针对 ALL_TAB_COLS 的 SELECT
-
针对 ALL_IND_COLUMNS 的 SELECT
-
DROP ANY TABLE
-
SELECT ANY TABLE
-
INSERT ANY TABLE
-
UPDATE ANY TABLE
-
CREATE ANY VIEW
-
DROP ANY VIEW
-
CREATE ANY PROCEDURE
-
ALTER ANY PROCEDURE
-
DROP ANY PROCEDURE
-
CREATE ANY SEQUENCE
-
ALTER ANY SEQUENCE
-
DROP ANY SEQUENCE
-
DELETE ANY TABLE
对于下列要求,授予这些附加权限:
-
要使用特定表列表,请对任意复制表授予 SELECT 权限以及 ALTER 权限。
-
要允许用户在默认表空间中创建表,请授予权限 GRANT UNLIMITED TABLESPACE。
-
对于登录,请授予权限 CREATE SESSION。
-
如果您使用直接路径(完全加载时的默认路径),则
GRANT LOCK ANY TABLE to
.dms_user
; -
如果使用“DROP and CREATE”表格准备模式时架构不同,则
GRANT CREATE ANY INDEX to
.dms_user
; -
对于一些完全加载场景,您已选择“DROP and CREATE table (对表执行 DROP 或 CREATE 操作)”或“TRUNCATE before loading (加载前执行 TRUNCATE 操作)”选项,其中目标表架构与 DMS 用户的不同。在此情况下,授予 DROP ANY TABLE 权限。
-
要将更改存储在更改表或审计表(其中目标表架构与 DMS 用户的不同)中,请授予 CREATE ANY TABLE 和 CREATE ANY INDEX 权限。
目标数据库所需的 AWS Database Migration Service 读取权限
必须向 AWS DMS 用户帐户授予以下 DBA 表的读取权限:
-
针对 DBA_USERS 的 SELECT
-
针对 DBA_TAB_PRIVS 的 SELECT
-
针对 DBA_OBJECTS 的 SELECT
-
针对 DBA_SYNONYMS 的 SELECT
-
针对 DBA_SEQUENCES 的 SELECT
-
针对 DBA_TYPES 的 SELECT
-
针对 DBA_INDEXES 的 SELECT
-
针对 DBA_TABLES 的 SELECT
-
针对 DBA_TRIGGERS 的 SELECT
-
SYS.DBA_REGISTRY 上的 SELECT
如果无法将任意所需权限授予 V$xxx,则将其授予 V_$xxx。
迁移前评测
要使用Oracle 评测中列出的迁移前评测并将 Oracle 作为目标,您必须向目标数据库上的 dms_user
数据库用户添加以下权限:
GRANT SELECT ON V_$INSTANCE TO dms_user;
GRANT EXECUTE ON SYS.DBMS_XMLGEN TO dms_user;
将 Oracle 数据库配置为目标 AWS Database Migration Service
在使用 Oracle 数据库作为数据迁移目标之前,必须向提供一个 Oracle 用户帐户 AWS DMS。该用户账户必须具有 Oracle 数据库的读/写权限,如将 Oracle 作为目标所需的用户账户权限中所指定。
使用 Oracle 作为目标时的终端节点设置 AWS DMS
您可以使用端点设置来配置 Oracle 目标数据库,这与使用额外连接属性类似。您可以在使用 AWS DMS 控制台创建目标端点时指定设置,或者使用中的create-endpoint
命令和 --oracle-settings '{"
JSON 语法。AWS CLIEndpointSetting"
:
"value"
, ...
}'
下表显示了您可以将 Oracle 作为目标的端点设置。
名称 | 描述 |
---|---|
|
将此属性设置为转义字符。此转义字符允许您在表映射表达式中将单个通配符用作一个普通字符。有关更多信息,请参阅 表映射中的通配符。 默认值:Null 有效值:除通配符之外的任何字符 示例: |
|
设置为时 默认值: 有效值: 示例: |
|
如果设置为 有关指定此并行加载设置的限制是目标表不能具有任何约束或索引。有关此限制的更多信息,请参阅在并行直接路径加载后启用约束 默认值: 有效值: 示例: |
|
如果设置为 默认值: 有效值: 示例: |
|
指定字符列的长度是以字节数为单位还是以字符数为单位。要指示字符列长度以字符数为单位,请将此属性设置为 默认值:未设置为 有效值: 示例: |
|
AWS DMS 在迁移到 Oracle 目标时,会添加一个额外的空间来复制空字符串。通常,Oracle 没有表示空字符串的符号。在 varchar2 上插入空字符串时,会将空字符串加载为 NULL。如果要在 Oracle 上将数据作为 NULL 插入,请将此属性设置为 FALSE。 默认值: 有效值: 示例: |
Oracle 的目标数据类型
与一起使用的目标 Oracle 数据库 AWS DMS 支持大多数 Oracle 数据类型。下表显示了使用时支持的 Oracle 目标数据类型 AWS DMS 以及 AWS DMS 数据类型的默认映射。有关如何查看从源映射的数据类型的更多信息,请参阅有关所使用的源的部分。
AWS DMS 数据类型 |
Oracle 数据类型 |
---|---|
BOOLEAN |
NUMBER (1) |
BYTES |
RAW (length) |
DATE |
DATETIME |
TIME |
TIMESTAMP (0) |
DATETIME |
TIMESTAMP (scale) |
INT1 |
NUMBER (3) |
INT2 |
NUMBER (5) |
INT4 |
NUMBER (10) |
INT8 |
NUMBER (19) |
NUMERIC |
NUMBER (p,s) |
REAL4 |
FLOAT |
REAL8 |
FLOAT |
STRING |
带日期指示:DATE 带时间指示:TIMESTAMP 带时间戳指示:TIMESTAMP 带 timestamp_with_timezone 指示:TIMESTAMP WITH TIMEZONE 带 timestamp_with_local_timezone 指示:TIMESTAMP WITH LOCAL TIMEZONE 带 interval_year_to_month 指示:INTERVAL YEAR TO MONTH 带 interval_day_to_second 指示:INTERVAL DAY TO SECOND 如果 length > 4000:CLOB 在所有其他情况下: VARCHAR2 (长度) |
UINT1 |
NUMBER (3) |
UINT2 |
NUMBER (5) |
UINT4 |
NUMBER (10) |
UINT8 |
NUMBER (19) |
WSTRING |
如果 length > 2000:NCLOB 在所有其他情况下: NVARCHAR2 (长度) |
BLOB |
BLOB 要将此数据类型与一起使用 AWS DMS,必须 BLOBs 为特定任务启用使用。仅包含主键的表中支持 BLOB 数据类型 |
CLOB |
CLOB 要将此数据类型与一起使用 AWS DMS,必须 CLOBs 为特定任务启用使用。在更改数据捕获 (CDC) 期间,仅包含主键的表支持 CLOB 数据类型。 string 源上声明的大小大于 4000 字节的 Oracle VARCHAR2 数据类型通过 AWS DMS CLOB 映射到 Oracle 目标上的字符串。 |
NCLOB |
NCLOB 要将此数据类型与一起使用 AWS DMS,必须 NCLOBs 为特定任务启用使用。在 CDC 期间,仅包含主键的表中支持 NCLOB 数据类型。 WSTRING 源上声明的大小大于 4000 字节的 Oracle VARCHAR2 数据类型通过 AWS DMS NCLOB 映射到 Oracle 目标上的 WSTRING。 |
XMLTYPE |
XMLTYPE 目标数据类型仅与 Oracle-to-Oracle复制任务相关。 当源数据库是 Oracle 时,源数据类型将按“原样”复制到 Oracle 目标。例如,源上的 XMLTYPE 数据类型将创建为目标上的 XMLTYPE 数据类型。 |