本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用将 Oracle 分区表迁移到 Postgre SQL AWS DMS
由 Saurav Mishra (AWS) 和 Eduardo Valentim () 创作 AWS
摘要
此模式描述了如何使用不支持本机分区的AWS数据库迁移服务 (AWSDMS) 加快将SQL分区表从 Oracle 加载到 Postgre 的速度。目标 Postgre SQL 数据库可以安装在亚马逊弹性计算云(亚马逊EC2)上,也可以是适用于 Postgre 的亚马逊关系数据库服务(亚马逊RDS)SQL或亚马逊 Aurora Postgre SQL 兼容版数据库实例。
分区表上传包括以下步骤:
创建类似于 Oracle 分区表的父表,但不包含任何分区。
创建将从步骤 1 中创建的父表继承的子表。
创建过程函数和触发器以处理父表中的插入。
但是,由于每次插入都会触发触发器,因此使用的初始加载AWSDMS可能会非常慢。
为了加快从 Oracle 到 Postgre SQL 9.0 的初始加载速度,此模式为每个分区创建一个单独的AWSDMS任务并加载相应的子表。然后,您可以在割接期间创建触发器。
Postgre SQL 版本 10 支持本机分区。但是,在某些情况下,您可能会决定使用继承分区。有关更多信息,请参阅其他信息部分。
先决条件和限制
先决条件
一个活跃的AWS账户
具有分区表的源 Oracle 数据库
开启的 Postgre SQL 数据库 AWS
产品版本
Postgre 9.0 SQL
架构
源技术堆栈
Oracle 中的分区表
目标技术堆栈
Postgre 中的分区表SQL(亚马逊、EC2亚马RDS逊 Postgre SQL 或 Aurora Postgre)中的分区表 SQL
目标架构
工具
AWSDat@@ abase Migration Service (AWSDMS) 可帮助您将数据存储迁移到AWS云端,或者在云端和本地设置的组合之间迁移。
操作说明
任务 | 描述 | 所需技能 |
---|---|---|
在 Postgre SQL 中创建表格。 | 使用所需的分区检查条件在 Postgr SQL e 中创建父表和相应的子表。 | DBA |
为每个分区创建AWSDMS任务。 | 在AWSDMS任务中包括分区的筛选条件。将分区映射到相应的 Postgre SQL 子表。 | DBA |
使用满载运行AWSDMS任务并更改数据捕获 (CDC)。 | 确保将 | DBA |
任务 | 描述 | 所需技能 |
---|---|---|
停止复制任务。 | 在停止任务之前,请确认源和目标是否同步。 | DBA |
在父表创建触发器。 | 由于父表将接收所有插入和更新命令,因此创建一个触发器,根据分区条件将这些命令路由到相应的子表。 | DBA |
相关资源
其他信息
尽管 Postgre SQL 版本 10 支持本机分区,但对于以下用例,您可能会决定使用继承的分区:
分区强制执行一条规则,即所有分区必须具有与父分区相同的列集,但表继承支持子分区具有额外的列。
表继承支持多重继承。
声明式分区仅支持列表与范围分区。通过表继承,您可按需要划分数据。但是,如果约束排除不能有效地修剪分区,查询性能将会受到影响。
使用声明性分区时,某些运算需要比使用表继承时更强的锁。例如,在分区表中添加分区或从分区表中删除分区需要
ACCESS EXCLUSIVE
锁定父表,而SHARE UPDATE EXCLUSIVE
锁足以进行常规继承。
使用单独的作业分区时,如果存在任何AWSDMS验证问题,也可以重新加载分区。为了获得更好的性能和复制控制,请在单独的复制实例上运行任务。