Helvetia 成功地将本地 Oracle 数据库迁移到AWS,这不仅是因为许可证,更重要的是:更快地部署、更快地创新并使用最先进的开放式源数据库系统。 当你计划这样一个项目时,你需要知道你想要使用哪些工具以及目标架构应该是什么样子。有多种选项可供选择,但最终 Helvetia 决定使用 AWS 原生服务AWS DMS和AWS RDS for PostgreSQL。

AWS DMS让您可以选择最初从源填充目标实例,然后在逻辑上将正在进行的更改从源复制到目标。但是,在您执行此操作之前,您需要在目标中准备好架构。为了准备这个,有AWS SCT。这不是 AWS 服务,而是一个免费工具,可用于将架构从数据库系统转换为另一个。如果你想从 Oracle 转到 PostgreSQL,这个工具还会执行从 Oracle 的PL/SQL到 PostgreSQL 的PL/pgSQL的自动转换。虽然这个工具做得很好,但你必须非常小心结果,并投入大量时间进行测试。自主交易例如,在 PostgreSQL 中不存在,AWS 模式转换实用程序使用数据库链接实现了一种解决方法。如果您很少使用它(因为它需要建立新连接),这可能很好,但如果您严重依赖此功能,您最好以 PostgreSQL 原生的方式重新实现。
您需要注意的另一个领域是数据类型。PostgreSQL 附带了其中的许多。Oracle 中的数字在 PostgreSQL 中可能意味着很多事情。它可以是 PostgreSQL 中的整数或数字。根据您的目标,这会在 PostgreSQL 中对空间和性能产生影响。PostgreSQL 带有一个布尔数据类型。在 Oracle 中,这通常实现为字符或数值。你想保持这种方式还是要转换为布尔值?转换意味着您还需要调整数据库中的业务逻辑。
另一个需要相当多的时间才能解决的问题是this。附在初始电子邮件中的非常简化的测试用例显示,与 Oracle 相比,PostgreSQL 的性能大幅下降。原因是 Oracle 的 PL/SQL 是编译型语言,而 PostgreSQL 的 PL/pgSQL 是解释型的。如果您的案例或多或少与上面链接的线程中描述的内容相匹配,则需要重新编写。当您在 PL/SQL函数中有提交或回滚时,同样适用。PostgreSQL 不允许您在函数中提交或回滚。您需要为此使用程序。
这些只是迁移到 AWS RDS for PostgreSQL 时可能发生的一些提示。一旦您解决了所有这些问题,迁移就会非常顺利,并且很可能会成功。
文章来源:https://blog.dbi-services.com/helvetia-used-aws-sct-dms-to-migrate-to-aws-rds-for-postgresql/




