将 SAP ASE 数据库作为 Amazon DMS 源
您可以使用 Amazon DMS 从 SAP Adaptive Server Enterprise(ASE)数据库(以前称为 Sybase)中迁移数据。使用 SAP ASE 数据库作为源,您可以将数据迁移到其他受支持的任何 Amazon DMS 目标数据库。
有关 Amazon DMS 支持作为源的 SAP ASE 版本的信息,请参阅 Amazon DMS 的源。
有关使用 SAP ASE 数据库和 Amazon DMS 的其他详细信息,请参阅以下章节。
主题
将 SAP ASE 数据库作为 Amazon DMS 源的先决条件
要将 SAP ASE 数据库作为 Amazon DMS 源,请执行以下操作:
-
使用
sp_setreptable命令为表启用 SAP ASE 复制。有关更多信息,请参阅 Sybase Infocenter 存档。 -
在 SAP ASE 数据库上禁用
RepAgent。有关更多信息,请参阅在主数据库中停止和禁用 RepAgent 线程。 -
要复制到为非拉丁字符(例如,中文)配置的 Windows EC2 实例中的 SAP ASE 15.7 版本,请在目标计算机上安装 SAP ASE 15.7 SP121。
注意
对于持续的更改数据捕获(CDC)复制,DMS 会运行 dbcc
logtransfer 和 dbcc log,以从事务日志中读取数据。
将 SAP ASE 作为 Amazon DMS 源的限制
将 SAP ASE 数据库作为 Amazon DMS 源时,存在以下限制:
-
对于每个 SAP ASE 数据库,您只能运行一个带有持续复制或 CDC 的 Amazon DMS 任务。您可以并行运行多个仅完全加载的任务。
-
您不能重命名表。例如,下面的命令将失败。
sp_rename 'Sales.SalesRegion', 'SalesReg; -
您不能重命名列。例如,下面的命令将失败。
sp_rename 'Sales.Sales.Region', 'RegID', 'COLUMN'; -
在复制到目标数据库时,将截断位于二进制数据类型字符串末尾的零值。例如,源表中的
0x0000000000000000000000000100000100000000在目标表中变为0x00000000000000000000000001000001。 -
如果数据库默认设置为不允许 NULL 值,则 Amazon DMS 使用不允许 NULL 值的列创建目标表。因此,如果完整加载或 CDC 复制任务包含空值,则 Amazon DMS 将引发错误。您可以执行以下命令以允许在源数据库中包含 NULL 值,从而防止出现这些错误。
sp_dboptiondatabase_name, 'allow nulls by default', 'true' go usedatabase_nameCHECKPOINT go -
不支持
reorg rebuild索引命令。 -
Amazon DMS 不支持集群或使用 MSA(多站点可用性)/温备用作为源。
-
在映射规则中使用
AR_H_TIMESTAMP转换标头表达式时,不会捕获已添加列的毫秒数。 -
在 CDC 期间运行合并操作将导致不可恢复的错误。要使目标恢复同步,请运行完全加载。
-
使用数据行锁定方案的表不支持回滚触发器事件。
-
从源 SAP 数据库中删除任务范围内的表后,Amazon DMS 无法恢复复制任务。如果 DMS 复制任务已停止并执行了任何 DML 操作(INSERT、UPDATE、DELETE),然后删除了表,则必须重新启动复制任务。
将 SAP ASE 作为 Amazon DMS 源所需的权限
要在 Amazon DMS 任务中使用 SAP ASE 数据库作为源,您需要授予权限。为 Amazon DMS 数据库定义中指定的用户帐户授予 SAP ASE 数据库中的以下权限:
-
sa_role
-
replication_role
-
sybase_ts_role
-
默认情况下,如果需要拥有运行
sp_setreptable存储过程的权限,Amazon DMS 会启用 SAP ASE 复制选项。如果要直接从数据库端点而不是通过 Amazon DMS 自身在表上运行sp_setreptable,则可以使用enableReplication额外连接属性。有关更多信息,请参阅 使用 SAP ASE 作为 Amazon DMS 源时的端点设置。
删除截断点
当任务开始后,Amazon DMS 在 $replication_truncation_point 系统视图中建立 syslogshold 条目,指示复制过程正在进行。在 Amazon DMS 工作的同时,它会根据已经复制到目标的数据量,按固定间隔放置复制截断点。
建立 $replication_truncation_point 条目之后,Amazon DMS 使任务保持运行状态,以防止数据库日志变得过大。如果要永久停止 Amazon DMS 任务,请通过发布以下命令来删除复制截断点:
dbcc settrunc('ltm','ignore')
删除截断点之后,将无法继续 Amazon DMS 任务。日志将继续在检查点自动截断 (在设置了自动截断时)。
使用 SAP ASE 作为 Amazon DMS 源时的端点设置
您可以使用端点设置来配置 SAP ASE 源数据库,这与使用额外连接属性类似。您可以在使用 Amazon DMS 控制台创建源端点时指定端点设置,或者在 Amazon CLI 中使用符合 --sybase-settings '{" JSON 语法的 EndpointSetting":
"value", ...}'create-endpoint 命令指定端点设置。
下表显示了将 SAP ASE 用作源时您可以使用的端点设置。
| 名称 | 描述 |
|---|---|
Charset |
将此属性设置为与国际字符集相对应的 SAP ASE 名称。某些字符集需要将端点设置 默认值: 示例: 有效值:
有关 SAP ASE 数据库中支持的字符集的任何其他问题,请参阅 Adaptive Server Enterprise:支持的字符集 |
EnableReplication |
如果要从数据库端而不是通过 Amazon DMS 在表上启用 默认值: 有效值: 示例: |
EncryptPassword |
如果您在源数据库中启用了 默认值: 有效值: 示例: 有关这些参数值的更多信息,请参阅 Adaptive Server Enterprise:使用 EncryptPassword 连接字符串属性 |
Provider |
如果要为 ASE 15.7 及更高版本使用传输层安全性协议(TLS)1.2,请设置此属性。请注意,Amazon 需要 TLS 1.2 或更高版本,建议使用 1.3 版本。 默认值: 有效值: 示例: |
SAP ASE 的源数据类型
有关使用 Amazon DMS 时支持的 SAP ASE 源数据类型以及来自 Amazon DMS 数据类型的默认映射的列表,请参阅下表。Amazon DMS 不支持具有用户定义的类型 (UDT) 数据类型的列的 SAP ASE 源表。具有此数据类型的复制列将创建为 NULL。
有关如何查看目标中映射的数据类型的信息,请参阅数据迁移的目标有关您的目标终端节点的部分。
有关 Amazon DMS 数据类型的其他信息,请参阅Amazon Database Migration Service 的数据类型。
|
SAP ASE 数据类型 |
Amazon DMS 数据类型 |
|---|---|
BIGINT |
INT8 |
UNSIGNED BIGINT |
UINT8 |
INT |
INT4 |
UNSIGNED INT |
UINT4 |
SMALLINT |
INT2 |
UNSIGNED SMALLINT |
UINT2 |
TINYINT |
UINT1 |
DECIMAL |
NUMERIC |
NUMERIC |
NUMERIC |
FLOAT |
REAL8 |
DOUBLE |
REAL8 |
REAL |
REAL4 |
MONEY |
NUMERIC |
SMALLMONEY |
NUMERIC |
DATETIME |
DATETIME |
BIGDATETIME |
DATETIME(6) |
SMALLDATETIME |
DATETIME |
DATE |
DATE |
TIME |
TIME |
BIGTIME |
TIME |
CHAR |
STRING |
UNICHAR |
WSTRING |
NCHAR |
WSTRING |
VARCHAR |
STRING |
UNIVARCHAR |
WSTRING |
NVARCHAR |
WSTRING |
BINARY |
BYTES |
VARBINARY |
BYTES |
BIT |
BOOLEAN |
TEXT |
CLOB |
UNITEXT |
NCLOB |
IMAGE |
BLOB |