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