将 Oracle 数据库错误代码迁移到兼容亚马逊 Aurora Postgre SQL 的数据库 - AWS Prescriptive Guidance

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将 Oracle 数据库错误代码迁移到兼容亚马逊 Aurora Postgre SQL 的数据库

由 Sai Parthasaradhi () 和 Veeranjaneyulu Grandhi (AWS) 创作 AWS

环境:PoC 或试点

源:Oracle

目标:Postgre SQL

R 类型:更换平台

工作负载:Oracle

技术:迁移;数据库

AWS服务:亚马逊 Aurora

Summary

此模式显示如何使用预定义的元数据表将 Oracle 数据库错误代码迁移到 Amazon Aurora Postgre SQL 兼容版数据库。

Oracle 数据库错误代码并不总是有相应的 Postgre SQL 错误代码。错误代码的这种差异可能使在目标 Postgre SQL 架构中配置过程或函数的处理逻辑变得困难。

您可以通过将对您的 PL/pg SQL 程序有意义的源数据库和目标数据库错误代码存储在元数据表中来简化流程。然后,将表配置为标记有效的 Oracle 数据库错误代码,并将它们映射到其 Postgre SQL 等效错误代码,然后再继续执行剩余的流程逻辑。如果元数据表中没有 Oracle 数据库错误代码,则流程将退出,但有异常。然后,如果程序需要,您可以手动查看错误详细信息并将新的错误代码添加到表中。

通过使用此配置,与 Amazon Aurora SQL Postgre 兼容的数据库可以像源 Oracle 数据库一样处理错误。

注意:配置 Postgre SQL 数据库以正确处理 Oracle 数据库错误代码通常需要更改数据库和应用程序代码。

先决条件和限制

先决条件

  • 一个活跃的AWS账户

  • 已启动并正在运行的实例和侦听器服务的 Oracle 源数据库

  • 已启动并正在运行的SQL兼容 Amazon Aurora Postgre 的集群

  • 熟悉 Oracle 数据库

  • 熟悉 Post SQL gre 数据库

架构

下图显示了用于验证和处理数据错误代码的 Amazon Aurora Postgre SQL 兼容数据库工作流程示例:

Aurora Postgre SQL 兼容数据库的数据错误代码验证和处理。

图表显示了以下工作流:

  1. 表中包含了 Oracle 数据库错误代码和分类及其等效的 Postgre SQL 错误代码和分类。该表包含 valid_error 列,用于对特定的预定义错误代码是否有效进行分类。

  2. 当 pl/pg SQL 函数 (func_processdat a) 抛出异常时,它会调用第二个 pl/pg 函数(error_validation)。SQL

  3. error_validation 函数接受 Oracle 数据库错误代码作为输入参数。然后,该函数对照表检查传入的错误代码,以查看该错误是否包含在表中。

  4. 如果表中包含 Oracle 数据库错误代码,则 error_validation 函数将返回一个TRUE值并继续处理逻辑。如果表中未包含错误代码,则该函数将返回一个FALSE值,流程逻辑将以异常退出。

  5. 当函数返回一个FALSE值时,应用程序的职能主管会手动审查错误详细信息以确定其有效性。

  6. 然后,要么手动将新的错误代码添加到表中,要么不手动添加。如果错误代码有效且已添加到表中,则 error_validation 函数将在下次发生异常时返回一个TRUE值。如果错误代码无效,并且异常发生时流程必须失效,则不会将错误代码添加到表中。

技术堆栈

  • 亚马逊 Aurora Postgre SQL

  • pgAdmin

  • 甲骨文SQL开发人员

工具

  • Amazon Aurora Postgre SQL 兼容版是一款完全托管、ACID兼容的关系数据库引擎,可帮助您设置、操作和扩展 Postgre 部署。SQL

  • pgAdmin是 Postgre SQL 的开源管理和开发工具。它提供了图形界面,可简化数据库对象的创建、维护和使用。

  • Oracle SQL 开发人员是一个免费的集成开发环境,可简化传统部署和云部署中 Oracle 数据库的开发和管理。

操作说明

任务描述所需技能

在SQL兼容 Amazon Aurora Postgre 的数据库中创建表。

运行以下 Postgre SQL CREATETABLE命令:

( source_error_code numeric NOT NULL, target_error_code character varying NOT NULL, valid_error character varying(1) NOT NULL );
Postgre SQL 开发人员,甲骨文,RDS/Aurora for Po SQL

将 Postgre SQL 错误代码及其相应的 Oracle 数据库错误代码添加到表中。

运行 Postgre SQL INSERT命令将所需的错误代码值添加到 error_codes 表中。

Postgre SQL 错误代码必须使用变化的数据类型(SQLSTATE值)字符。Oracle 错误代码必须使用数字数据类型(SQLCODE值)。

插入语句示例:

insert into error_codes values (-1817,'22007','Y'); insert into error_codes values (-1816,'22007','Y'); insert into error_codes values (-3114,'08006','N');

注意:如果您要捕获特定于 Oracle 的 Java 数据库连接 (JDBC) 异常,则必须将这些异常替换为通用的跨数据库异常或切换到 Postgre 特定的异常。SQL

Postgre SQL 开发人员,甲骨文,RDS/Aurora for Po SQL

创建 PL/pg SQL 函数来验证错误代码。

通过运行 Post SQL CREATEFUNCTIONgre 命令创建 PL/pg SQL 函数。确保该函数执行以下操作:

  • 接受程序抛出的 Oracle 错误代码。

  • 检查 error_codes 表中是否存在错误代码。

  • 返回TRUEFALSE值,取决于元数据表中是否存在错误代码。

Postgre SQL 开发人员,甲骨文,RDS/Aurora for Po SQL

手动查看 PL/pg SQL 函数记录的新错误代码。

手动查看新错误代码。

如果新的错误代码对你的用例有效,请运行 Postgre 命令将其添加到 error_codes 表中。SQL INSERT

–或者–

如果新错误代码对用例无效,请不要将其添加到表中。当错误发生时,流程逻辑将继续失效并以异常方式退出。

Postgre SQL 开发人员,甲骨文,RDS/Aurora for Po SQL

相关资源

附录 A. Postgre SQL 错误代码(Postgre 文档)SQL

数据库错误消息(Oracle 数据库文档)