本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Oracle 到 PostgreSQL 的转换设置
在 DMS 架构转换中,Oracle 到 PostgreSQL 的转换设置包括以下内容:
-
Amazon DMS 可以在 PostgreSQL 上将 Oracle 实例化视图转换为表或实例化视图。对于实例化视图,请选择如何转换源实例化视图。
-
源 Oracle 数据库可以使用
ROWID
伪列。PostgreSQL 不支持类似功能。DMS 架构转换可以使用bigint
或character varying
数据类型,在转换后的代码中模拟ROWID
伪列。为此,对于行 ID,请选择使用 bigint 数据类型模拟 ROWID 伪列或使用可变字符数据类型模拟 ROWID 伪列。如果源 Oracle 代码不使用
ROWID
伪列,请选择不生成。这种情况下,转换后的代码运行更快。 -
源 Oracle 代码可以包含
TO_CHAR
、TO_DATE
和TO_NUMBER
函数以及 PostgreSQL 不支持的参数。默认情况下,DMS 架构转换会在转换后的代码中模拟这些参数的用法。当源 Oracle 代码缺少 PostgreSQL 不支持的参数时,您可以使用本机 PostgreSQL
TO_CHAR
、TO_DATE
和TO_NUMBER
函数。这种情况下,转换后的代码运行更快。为此,可选择以下值:使用本机 PostgreSQL TO_CHAR 函数
使用本机 PostgreSQL TO_DATE 函数
使用本机 PostgreSQL TO_NUMBER 函数
-
数据库和应用程序可以运行于不同时区内。默认情况下,DMS 架构转换在转换后的代码中模拟时区。但是,当数据库和应用程序使用相同时区时,您不需要这种模拟。在这种情况下,请选择在数据库和应用程序使用相同时区的情况下提高转换后的代码的性能。
-
要在转换后的代码中继续使用序列,可选择使用源端生成的最后一个值填充转换后的序列。
-
在某些情况下,源 Oracle 数据库在
NUMBER
数据类型的主键列或外键列中,可能只存储整数值。在这些情况下, Amazon DMS 可以将这些列转换为BIGINT
数据类型。这种方法可提高转换后的代码的性能。为此,可选择将 NUMBER 数据类型的主键列和外键列转换为 BIGINT 数据类型。请确保源代码的这些列中不包含浮点值,以避免数据丢失。 -
要跳过源代码中已停用的触发器和约束,可选择仅转换活动触发器和约束。
-
可以使用 DMS 架构转换,转换被称为动态 SQL 的字符串变量。数据库代码可以更改这些字符串变量的值。要确保 Amazon DMS 始终转换此字符串变量的最新值,请选择 “转换在调用例程中创建的动态 SQL 代码”。
-
PostgreSQL 版本 10 及更早版本不支持过程。如果你不熟悉在 PostgreSQL 中使用过程,可以将 Oracle 过程转换为 PostgreSQL Amazon DMS 函数。为此,可选择将过程转换为函数。
-
要查看有关已发生操作项的其他信息,您可以向扩展包中添加特定函数。为此,可选择添加引发用户定义的异常的扩展包函数。然后,选择引发用户定义的异常的严重性级别。请务必在转换源数据库对象后,应用扩展包架构。有关扩展包的更多信息,请参阅使用扩展包。
-
源 Oracle 数据库可以包含具自动生成的名称的约束。如果源代码使用这些名称,请确保选择保留系统生成的约束的名称。如果源代码使用了这些约束,但未使用其名称,请清除此选项以提高转换速度。
-
如果源数据库和目标数据库运行于不同时区内,那么模拟
SYSDATE
内置 Oracle 函数的函数返回的值会与源函数有所不同。要确保源函数和目标函数返回相同的值,请选择设置源数据库的时区。 -
您可以在转换后的代码中使用 orafce 扩展中的函数。为此,对于 Orafce 内置例程,请选择要使用的函数。有关 orace 的更多信息,请参阅 or
ace on。 GitHub