本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将 Oracle 的 VARCHAR2 (1) 种数据类型转换为亚马逊 Aurora Postgre 的布尔数据类型 SQL
由 Naresh Damera 创作 () AWS
摘要
在从适用于 Oracle 的亚马逊关系数据库服务(亚马逊RDS)迁移到亚马逊 Aurora Postgre SQL 兼容版期间,在亚马逊网络服务 () 数据库迁移AWS服务 () 中验证迁移时,您可能会遇到数据不匹配的问题。AWS DMS为防止这种不匹配,可以将 VARCHAR2 (1) 数据类型转换为布尔数据类型。
VARCHAR2数据类型存储长度可变的文本字符串,VARCHAR2(1) 表示该字符串的长度为 1 个字符或 1 个字节。有关更多信息VARCHAR2,请参阅 Oracle 内置数据类型
在此模式中,在样本源数据表列中,VARCHAR2(1) 数据要么是 Y(表示 “是”),要么是 N(表示 “否”)。 此模式包括使用AWSDMS和 AWS Schema Conversion Tool (AWSSCT) 将此数据类型从 VARCHAR2 (1) 中的 Y 和 N 值转换为布尔值中的真值或假值的说明。
目标受众
建议那些有使用将 Oracle 数据库迁移到 Aurora Postgre SQL-Compatible 的经验的人使用这种模式。AWS DMS完成迁移后,请遵守将 Oracle 转换为 Amazon for Postgre SQL 或 Amazon A RDS urora Postgre SQL(AWSSCT文档)中的建议。
先决条件和限制
先决条件
一个活动的 AWS 账户。
确认您的环境已为 Aurora 做好准备,包括设置凭证、权限和安全组。有关更多信息,请参阅设置 Amazon Aurora 环境(Aurora 文档)。
一个源 Amazon RDS for Oracle 数据库,其中包含一个包含 VARCHAR2 (1) 个数据的表列。
目标与 Amazon Aurora Postgre SQL 兼容的数据库实例。有关更多信息,请参阅在 Aurora Postgre 数据库集群上创建数据库集群并连接SQL数据库(Aurora 文档)。
产品版本
Amazon RDS for Oracle 版本 12.1.0.2 或更高版本。
AWSDMS版本 3.1.4 或更高版本。有关更多信息,请参阅使用 Oracle 数据库作为源AWSDMS和使用 Postgre SQL 数据库作为目标 AWS DMS(AWSDMS文档)。我们建议您使用最新版本的,AWSDMS以获得最全面的版本和功能支持。
AWSSchema Conversion Tool (AWSSCT) 版本 1.0.632 或更高版本。我们建议您使用最新版本的,AWSSCT以获得最全面的版本和功能支持。
Aurora 支持兼容 Aurora Postgre SQL 的数据库引擎版本中列出的 Postgre 版本SQL(Aurora 文档)。
架构
源技术堆栈
RDS适用于 Oracle 的亚马逊数据库实例
目标技术堆栈
Amazon Aurora Postgre SQL-兼容数据库实例
源架构和目标架构
![将数据类型从 VARCHAR2 (1) 更改为布尔值](images/pattern-img/5d4dc568-20d8-4883-a942-21c81039d8e6/images/9fd82ae2-56e6-439c-b4cd-9e74fe77b480.png)
工具
AWS 服务
Amazon Aurora Postgre SQL 兼容版是一款完全托管、ACID兼容的关系数据库引擎,可帮助您设置、操作和扩展 Postgre 部署。SQL
AWSDat@@ abase Migration Service (AWSDMS) 可帮助您将数据存储迁移到AWS云端,或者在云端和本地设置的组合之间迁移。
适用于 Oracle 的 Amazon Relational Database Service(亚马逊RDS)可帮助您在AWS云中设置、操作和扩展 Oracle 关系数据库。
AWSSchema Conversion Tool (AWSSCT) 通过自动将源数据库架构和大部分自定义代码转换为与目标数据库兼容的格式来支持异构数据库迁移。
其他服务
Oracle Developer 是一个集成的SQL开发
环境,可简化传统部署和基于云的部署中 Oracle 数据库的开发和管理。在这种模式中,您可以使用此工具连接到 Amazon fo RDS r Oracle 数据库实例并查询数据。 pgAdmin
是 Postgre SQL 的开源管理工具。它提供了一个图形界面,可帮助您创建、维护和使用数据库对象。在这种示例中,您可使用此工具连接到 Aurora 数据库实例并查询数据。
操作说明
任务 | 描述 | 所需技能 |
---|---|---|
创建数据库迁移报告。 | DBA,开发者 | |
在目标数据库上禁用外键约束。 | 在 Postgre 中SQL,外键是通过使用触发器实现的。在满载阶段,每次AWSDMS加载一个表。强烈建议您在完全加载期间使用以下方法之一禁用外键约束:
如果禁用外键约束不可行,请为父表和子表特定的主数据创建AWSDMS迁移任务。 | DBA,开发者 |
禁用目标数据库的主键与唯一键。 | 使用以下命令禁用目标数据库的主键和约束。这有助于提高初始加载任务表现。
| DBA,开发者 |
创建初始加载任务。 | 在中 AWSDMS,为初始加载创建迁移任务。有关说明,请参阅创建任务。对于迁移方法,请选择迁移现有数据。此迁移方法在 | DBA,开发者 |
编辑初始加载任务设置。 | 编辑任务设置,以添加数据验证。这些验证设置必须在JSON文件中创建。有关说明和示例,请参见指定任务设置。添加以下验证:
若要验证数据迁移的其余部分,请在任务中启用数据验证。有关更多信息,请参阅数据验证任务设置。 | AWS管理员,DBA |
创建持续复制任务。 | 在中 AWSDMS,创建迁移任务,使目标数据库与源数据库保持同步。有关说明,请参阅创建任务。对于迁移方法,请选择仅复制数据更改。暂时不要启动此任务。 | DBA |
任务 | 描述 | 所需技能 |
---|---|---|
创建用于测试的样本数据。 | 在源数据库中,创建包含用于测试目的的数据的示例表。 | 开发人员 |
确认没有冲突活动。 | 使用 | AWS 管理员 |
启动AWSDMS迁移任务。 | 在AWSDMS控制台的 “控制台” 页面上,启动您在上一篇长篇故事中创建的初始加载和正在进行的复制任务。 | AWS 管理员 |
监控任务和表加载状态。 | 在迁移过程中,监控任务状态和表状态。初始加载任务完成后,在表统计选项卡上:
| AWS 管理员 |
验证迁移结果。 | 使用pgAdmin查询目标数据库上的表。 查询成功表示数据已成功迁移。 | 开发人员 |
在目标数据库添加主键和外键。 | 在目标数据库创建主键和外键。欲了解更多信息,请参阅 ALTERTABLE | DBA |
清理测试数据。 | 在源数据库和目标数据库,清理为单元测试创建的数据。 | 开发人员 |
任务 | 描述 | 所需技能 |
---|---|---|
完成迁移。 | 重复前面的操作说明,使用真实的源数据测试迁移任务。将数据从源数据库迁移至目标数据库。 | 开发人员 |
验证源数据库和目标数据库是否同步。 | 验证源数据库和目标数据库是否同步。有关更多信息和说明,请参阅AWSDMS数据验证。 | 开发人员 |
停止源数据库。 | 停止 Amazon f RDS or Oracle 数据库。有关说明,请参阅暂时停止 Amazon RDS 数据库实例。停止源数据库后,中的AWSDMS初始加载和正在进行的复制任务将自动停止。无需执行其他操作即可停止上述任务。 | 开发人员 |
相关资源
AWS参考文献
SQL使用AWSDMS和 AWSSCT(AWS规范性指导)将 Oracle 数据库迁移到 Aurora Postg re
在 Postgr@@ e SQL 或亚马逊 A RDS urora Postgre 上将 Oracle 转换为亚马逊SQL(文档)AWSSCT
AWSDMS工作原理(AWSDMS文档)
其他参考资料
布尔数据类型
(Postgre SQL 文档) Oracle 内置数据类型
(Oracle文档) pgAdmin
(pgAdmin 网站) SQL开发人员
(甲骨文网站)
教程和视频
其他信息
数据验证脚本
以下数据验证脚本将 1 转换为 Y,将 0 转换为 N。 这有助于AWSDMS任务成功完成并通过表验证。
{ "rule-type": "validation", "rule-id": "5", "rule-name": "5", "rule-target": "column", "object-locator": { "schema-name": "ADMIN", "table-name": "TEMP_CHRA_BOOL", "column-name": "GRADE" }, "rule-action": "override-validation-function", "target-function": "case grade when '1' then 'Y' else 'N' end" }
脚本中的 case
语句执行验证。如果验证失败,则在目标数据库实例上的 public.awsdms_validation_failures_v1 表中AWSDMS插入一条记录。此记录包含表名、错误时间,以及源表和目标表中不匹配值的详细信息。
如果您没有将此数据验证脚本添加到AWSDMS任务中,并且数据已插入目标表中,则该AWSDMS任务会将验证状态显示为 “不匹配的记录”。
在AWSSCT转换过程中,AWSDMS迁移任务将 VARCHAR2 (1) 数据类型的数据类型更改为布尔值,并在"NO"
列上添加主键约束。