更新时间:2022-11-15 GMT+08:00
分享

Oracle -> RDS for PostgreSQL

配置参数

参数名称

参数说明

影响对象

参数值

值描述

备注

long_support

long数据类型

适用于包含LONG列的表。Oracle中,LONG数据类型的最大长度为2GB。PostgreSQL中,TEXT数据类型最大可存储1GB数据。

表,函数,存储过程,触发器,用户定义类型

IGNORE

不转换LONG数据类型。(默认值)

PostgreSQL不支持LONG数据类型,该数据类型保持不变。PostgreSQL迁移脚本编译失败,用户需要手动修改。

TEXT

将LONG类型转换为TEXT数据类型。

Oracle中, LONG最大可存储2GB数据,但PostgreSQL中,TEXT最大可存储1GB数据。在PostgreSQL中没有等价的LONG数据类型。如果表列数据超出限制,数据更改操作(INSERT/UPDATE)将失败并引发错误。

longraw_support

long raw数据类型

适用于包含LONG RAW列的表。Oracle中, LONG RAW数据类型的最大长度为2GB。PostgreSQL中,BYTEA数据类型最大可存储1GB数据。

表,函数,存储过程,触发器,用户定义类型

IGNORE

不转换LONG RAW类型。(默认值)

PostgreSQL不支持LONG RAW数据类型,该数据类型保持不变。PostgreSQL迁移脚本编译失败,用户需要手动修改。

BYTEA

将LONG RAW转换为BYTEA数据类型。

Oracle中, LONG RAW最大可存储2GB数据,但PostgreSQL中,BYTEA最大可存储1GB数据。在PostgreSQL中没有等价的LONG RAW数据类型。如果表列数据超出限制,数据更改操作(INSERT/UPDATE)将失败并引发错误。

clob_support

clob数据类型

适用于包含CLOB列的表。Oracle中,CLOB数据类型最大可存储4GB数据。PostgreSQL中,TEXT数据类型最大可存储1GB数据。

表,函数,存储过程,触发器,用户定义类型

IGNORE

不转换CLOB数据类型。

Oracle中,CLOB数据类型最大可存储4GB数据。PostgreSQL不支持CLOB数据类型,PostgreSQL迁移脚本编译失败,用户需要手动修改。

TEXT

将CLOB类型转换为TEXT数据类型。

PostgreSQL中,TEXT数据类型最大可存储1GB数据。如果表列的数据超过限制,数据更改操作(INSERT/UPDATE)将失败并引发错误。

nclob_support

nclob数据类型

适用于包含NCLOB列的表。Oracle中,NCLOB数据类型最大可存储4GB数据。PostgreSQL中,TEXT数据类型最大可存储1GB数据。

表,函数,存储过程,触发器,用户定义类型

IGNORE

不转换NCLOB类型。(默认值)

PostgreSQL不支持NCLOB数据类型,该数据类型保持不变。PostgreSQL迁移脚本编译失败,用户需要手动修改。

TEXT

将NCLOB转换为TEXT数据类型。

Oracle中,NCLOB数据类型最大可存储4GB数据。PostgreSQL中,TEXT数据类型最大可存储1GB数据。如果表列的数据超过限制,数据更改操作(INSERT/UPDATE)将失败并引发错误。

blob_support

blob数据类型

适用于包含BLOB列的表。Oracle中,BLOB数据类型最大可存储4GB数据。PostgreSQL中,BYTEA数据类型最大可存储1GB数据。

表,函数,存储过程,触发器,用户定义类型

IGNORE

不转换BLOB数据类型。(默认值)

Oracle中,BLOB数据类型最大可存储4GB数据。PostgreSQL不支持BLOB数据类型,PostgreSQL迁移脚本编译失败,用户需要手动修改。

BYTEA

将BLOB类型转换为BYTEA数据类型。

PostgreSQL中,BYTEA数据类型最大可存储1GB数据。如果表列的数据超过限制,数据更改操作(INSERT/UPDATE)将失败并引发错误。

float_support

float数据类型

适用于包含FLOAT列的表,且FLOAT指定为FLOAT/FLOAT(n),其中n > 53。如果n未被指定,默认值为126。

表,函数,存储过程,触发器,用户定义类型

IGNORE

不转换FLOAT数据类型。(默认值)

PostgreSQL支持FLOAT数据类型,该数据类型将被隐式转换为“DOUBLE PRECISION”。在Oracle中,FLOAT默认精度(最大精度)为126。在PostgreSQL中,FLOAT精度高于53将引发错误,语句执行失败。

NUMERIC

将FLOAT/FLOAT(n)转换为NUMERIC。

PostgreSQL中,如果没有指定精度,Numeric数据类型在小数点前的最大位数为131072位,在小数点后的最大位数为16383位。存储的数值更准确。

DOUBLE PRECISION

将FLOAT/FLOAT(n)转换为DOUBLE PRECISION。

DOUBLE PRECISION 范围为1E-307到1E+308。存储的数值可能会有近似差异。如果有小数部分,且小数位数>15,则小数点后剩余的位数将被四舍五入。

number_with_zero_scale

小数位数为零的数字数据类型

适用于包含小数位数为零或无小数位数的数字数据类型的表。

表,函数,存储过程,触发器,用户定义类型

0

将NUMBER转换为NUMERIC。(默认值)

PostgreSQL支持NUMERIC。该选项中,迁移精度很精确。

1

如果NUMBER精度介于1和4之间,则被转换为SMALLINT类型。

如果NUMBER精度介于5和9之间,则被转换为INT类型。

如果NUMBER精度介于10和18之间,则被转换为BIGINT类型。

如果输入的是整数,INTEGER是更好的选择以提高性能。在该选项中,迁移精度不是很精确。

SDO_GEOMETRY

SDO_GEOMETRY对象类型

适用于包含SDO_GEOMETRY对象类型的表。PostgreSQL没有等价的数据类型。

表,函数,存储过程,触发器,用户定义类型

IGNORE

不转换SDO_GEOMETRY对象类型。(默认值)

PostgreSQL不支持SDO_GEOMETRY数据类型,该数据类型保持不变。PostgreSQL迁移脚本编译失败,用户需要手动修改。

TEXT

将SDO_GEOMETRY对象类型转换为TEXT数据类型。

PostgreSQL中,SDO_GEOMETRY的等价数据类型不可用。更正DML语句,存储TEXT格式的数据,并将数据提取到不同的对象属性中。

MBRCOORDLIST

MDSYS.MBRCOORDLIST对象类型

适用于包含MBRCOORDLIST对象类型的表脚本。PostgreSQL没有等价的数据类型。

表,函数,存储过程,触发器,用户定义类型

IGNORE

不转换MBRCOORDLIST对象类型。(默认值)

PostgreSQL不支持MBRCOORDLIST数据类型,该数据类型保持不变。PostgreSQL迁移脚本编译失败,用户需要手动修改。

TEXT

将MBRCOORDLIST对象类型转换为TEXT数据类型。

PostgreSQL中没有MBRCOORDLIST的等价数据类型。更正DML语句,以TEXT格式存储数据,并将数据提取到不同的对象属性中。

GEOMETRY

GEOMETRY对象类型

适用于包含GEOMETRY对象类型的表脚本。PostgreSQL没有等价的数据类型。

表,函数,存储过程,触发器,用户定义类型

IGNORE

不转换GEOMETRY对象类型。(默认值)

PostgreSQL不支持GEOMETRY数据类型,该数据类型保持不变。PostgreSQL迁移脚本编译失败,用户需要手动修改。

TEXT

将GEOMETRY类型转换为TEXT数据类型。

PostgreSQL中没有GEOMETRY的等价数据类型。更正DML语句,以TEXT格式存储数据,并将数据提取到不同的对象属性中。

partition_columns_with_unique_constraint

唯一约束的表列分区

适用于包含分区语法以及主键或唯一键的表脚本。

表,索引

0

忽略迁移。(默认值)

此选项忽略迁移,PostgreSQL迁移脚本编译失败,用户需要手动修改。

1

注释分区语法。

通过提高性能、可管理性和可用性,分区可以为应用程序提供许多优势。由于此选项注释掉了分区语法,因此该表将成为普通表(而不是分区表),并且客户将无法获得上面指定的分区优势。

2

注释唯一约束(主键和唯一键)。

唯一约束有助于:

  • 避免在表中创建重复记录;
  • 允许创建参照完整性约束;
  • 索引基于唯一键创建,加快搜索记录等数据库操作。

此选项注释掉了唯一约束(主键和唯一键),客户将无法获得上述提到的优势。

3

将分区键添加到唯一约束(主键和唯一键)中。

此选项将分区列添加到唯一约束(主键和唯一键)中,因此可能在表中创建重复记录。

mig_interval_partition

表间隔分区

适用于包含INTERVAL分区语法的表脚本。

IGNORE

不转换INTERVAL分区语法。(默认值)

PostgreSQL不支持INTERVAL分区语法,该语法保持不变。PostgreSQL迁移脚本编译失败,用户需要手动修改。

COMMENT

注释INTERVAL分区语法。

INTERVAL分区语法将被注释掉,客户将无法获得分区在性能、可管理性和可用性等方面的优势。

on_null_support

DEFAULT ON NULL子句

适用于包含DEFAULT ON NULL关键字的表脚本。DEFAULT ON NULL子句强制将列设置为默认值,即使INSERT语句中显式包含空值。PostgreSQL中没有等价的子句。

IGNORE

不转换DEFAULT ON NULL关键字。(默认值)

PostgreSQL不支持DEFAULT ON NULL子句,该子句保持不变。PostgreSQL迁移脚本编译失败,用户需要手动修改。

COMMENT

注释DEFAULT ON NULL关键字。

PostgreSQL不支持DEFAULT ON NULL子句,该子句被注释掉。如果NULL是显示,则应更改DML以存储适当的值。

generated_identity_support

IDENTITY列

适用于包含IDENTITY列,且该列使用GENERATED AS IDENTITY的表脚本。

表,索引

IGNORE

不转换IDENTITY列。(默认值)

PostgreSQL不支持GNERATED AS IDENTITY语法,该语法保持不变。PostgreSQL迁移脚本编译失败,用户需要手动修改。

SERIAL

将Oracle的IDENTITY列转换为序列号类型

序列号数据类型为四字节自增整数。取值范围为1至2147483647。超过这个上限,PostgreSQL将报错,DML语句执行失败。

SMALL SERIAL

将Oracle的IDENTITY列转换为小序列号类型。

小序列号数据类型是两个字节的自增整数。取值范围为1至32767。超过这个上限,PostgreSQL将报错,DML语句执行失败。

BIG SERIAL

将Oracle的IDENTITY列转换为大序列号类型。

大序列号数据类型是8字节自增整数,取值范围是1至9223372036854775807。超过这个上限,PostgreSQL将报错,DML语句执行失败。

DEFAULT_SEQ

创建序列,并将其作为默认值。

支持的最大值和最小值为 263-1 and -263-1。超出限制, PostgreSQL将报错,DML语句执行失败。

read_only_table

表的只读关键字

适用于包含“read only”关键字的表脚本。Oracle中,执行ALTER TABLE命令将表标记为只读。当表处于只读模式,不允许执行任何试图修改表数据的操作。

IGNORE

不转换READ ONLY关键字。

PostgreSQL不支持READ ONLY关键字,该关键字保持不变。PostgreSQL迁移脚本编译失败,用户需要手动修改。

COMMENT

注释alter table语句中的READ ONLY关键字。(默认值)

PostgreSQL不支持READ ONLY关键字,该关键字被注释掉。此语句一般不会在应用程序脚本中使用,而会在数据库维护中会使用。创建触发器处理READ ONLY。

TRIGGER

创建触发器,支持READ ONLY模式。

如果参数值为TRIGGER,创建触发器支持READ ONLY模式。

global_temp_table_support

全局临时表

适用于包含GLOBAL TEMPORARY关键字的表脚本。全局临时表是一个永久的数据库对象,即使会话断开,表结构也会保留在数据库中。本地临时表仅仅对当前会话可用,一旦会话断开,该表就会被删除。PostgreSQL只支持本地临时表。

0

不转换GLOBAL关键字。(默认值)

无论指定创建全球临时表还是本地临时表,PostgreSQL都只会创建本地临时表。如果临时表不存在,则应手动创建该表。

1

创建本地临时表。

将全局临时表转换为本地临时表,即创建本地临时表,而不是全局临时表。如果临时表不存在,应该手动创建该表。

bitmap_index

bitmap索引

适用于包含BITMAP关键字的create index语句。

索引

0

不转换BITMAP索引关键字。(默认值)

PostgreSQL不支持BITMAP索引,该索引保持不变。PostgreSQL迁移脚本编译失败,用户需要手动修改。

1

注释BITMAP索引。

PostgreSQL不支持BITMAP索引,该索引被注释掉。在搜索条件中使用索引列时,可能会引起性能问题。因此,用户应该创建合适的索引。

2

创建BTREE索引,而不是BITMAP索引。

BITMAP索引通常用于具有大量重复值(低基数)的列,而BTREE索引适合于高基数列。PostgreSQL中没有与BITMAP索引完全相符的等价索引,因此可以使用BTREE索引继续操作。

3

创建HASH索引,而不是BITMAP索引。

PostgreSQL中没有与BITMAP索引完全相符的等价索引。如果索引列仅在使用 = operator比较时使用,可以使用HASH索引。

reverse_support

索引语句中使用REVERSE关键字

适用于包含REVERSE关键字的create index语句。

索引

IGNORE

不转换REVERSE关键字。(默认值)

PostgreSQL不支持REVERSE索引,该索引保持不变。PostgreSQL迁移脚本编译失败,用户需要手动修改。

COMMENT

注释REVERSE关键字。

PostgreSQL不支持REVERSE索引。该索引关键词被注释掉,转换为PostgreSQL支持的普通索引。PostgreSQL中没有与REVERSE索引完全相符的等价索引,可以使用正常的BETREE树索引进行操作。

viewEditioning

编辑视图

适用于包含EDITIONING关键字的视图脚本。Oracle允许在编辑视图中创建DML触发器。

视图

0

不转换EDITIONING关键字。(默认值)

PostgreSQL不支持EDITIONING关键字,该关键字保持不变。PostgreSQL迁移脚本编译失败,用户需要手动修改。如果在视图中创建了DML触发器,应该在不影响业务逻辑的基础上,在基表中重写该触发器。

1

注释视图语句中的EDITIONING关键字。

PostgreSQL不支持EDITIONING关键字,该关键词被注释掉。如果在视图中创建了DML触发器,应该在不影响业务逻辑的基础上,在基表中重写该触发器。

seq_max_min_value

序列值超出限制

适用于包含MAXVALUE/ MINVALUE的序列脚本,且该序列值超出PostgreSQL支持的序列值。

表,序列

0

不改变MINVALUE / MAXVALUE值,即使该值超出下限/上限(-9223372036854775808至9223372036854775807)。(默认值)

Oracle支持的MAXVALUE和MINVALUE分别最大为1027和-1026。如果输入的序列的MINVALUE / MAXVALUE超出范围(-9223372036854775808至9223372036854775807) ,会导致PostgreSQL迁移脚本编译失败,用户需要手动修改。

1

如果序列的MINVALUE / MAXVALUE超出了限制范围(-9223372036854775808至9223372036854775807),替换为边界值。

如果输入的序列的MINVALUE / MAXVALUE超出范围(-9223372036854775808至9223372036854775807),替换为边界值。生成的序列值不会超出PostgreSQL的序列范围。

otherthan_gregorian

GREGORIAN以外的日历类型

适用于包含除GREGORIAN外日历类型的TO_DATE函数。

0

如果指定了除GREGORIAN日历外的第三个参数,不注释GREGORIAN日历。(默认值)

PostgreSQL只支持GREGORIAN日历,和TO_DATE和TO_TIMESTAMP中两个参数。Oracle中,如果 TO_DATE函数中指定了除GREGORIAN日历外的第三个参数,则GREGORIAN日历不会被注释。PostgreSQL迁移脚本编译失败,用户需要手动修改。

1

如果指定了除GREGORIAN日历外的第三个参数,注释GREGORIAN日历。

Oracle中,如果 TO_DATE函数中指定了除GREGORIAN日历的第三个参数,GREGORIAN日历被注释掉。PostgreSQL迁移脚本编译成功。

object_name_combiner

设置对象名组合器

适用于包含schema名称的创建索引脚本,或者包含分区语法的创建表脚本。

表,索引

$

用户应设置此参数,其用于合并:

- 创建索引中的模式名和索引名;

- 创建分区表中的表名和区名。

示例分隔符为:$,#或_

分隔符字符串最多可为4个字符。object_name_combiner不允许使用DOT(.)和任何其他特殊字符。

default_schema

设置默认模式名称

适用于创建数据库对象时,没有给定模式名称的情况。

模式

-

将未指定模式名称的数据库对象设置为默认模式。

由用户设置为默认模式。模式名称不应为空。

plsql_delimiter

设置PL/SQL分隔符

适用于包含PL/SQL对象块(存储过程,函数和包)的脚本。

函数,存储过程,触发器

$$

$$是PL/SQL的默认分隔符,用户可修改。

该分隔符将存储过程、函数和触发器作为一个单元执行。因此,该分隔符不应该出现在任何PL/SQL脚本(过程,函数,触发器)中。

package_name_delimiter

设置包名分隔符

适用于包含创建包的脚本。

函数,存储过程,触发器

$

此参数用于Oracle 包迁移。用户应设置分隔符,使其组成包的子对象名。

包转换的分隔符。例如,指定$作为分隔符,则包中指定的存储过程/函数名称会被转换为packageName$procedureName或packageName$functionName。

示例分隔符为:$,#或_

分隔符字符串最多可为4个字符。DOT(.)和任何其他特殊字符不可用于此分隔符。

comment_commit

COMMIT/ROLLBACK关键字关键字

适用于包含COMMIT/ROLLBACK语句的存储过程/函数。PostgreSQL文档指出,存储过程/函数内支持COMMIT和ROLLBACK语句。

存储过程

FALSE

不转换COMMIT/ROLLBACK语句。(默认值)

PostgreSQL文档指出,存储过程/函数内支持COMMIT和ROLLBACK。但某些(早期)版本的PostgreSQL,存储过程/函数内不支持COMMIT & ROLLBACK,会导致存储过程/函数操作执行失败。用户应采取适当措施避免操作失败。

TRUE

注释COMMIT/ROLLBACK语句。

PostgreSQL文档指出,存储过程/函数内支持COMMIT和ROLLBACK。但某些(早期)版本的PostgreSQL,存储过程/函数内不支持COMMIT 和 ROLLBACK,可以将这些语句(COMMIT & ROLLBACK)注释掉。用户应更正PL/SQL代码,确保业务逻辑,特别是ROLLBACK逻辑不受影响。

comment_tablespace

表空间

适用于包含TABLESPACE子句的create table和create index语句。

表空间,表

FALSE

不转换表空间。(默认值)

PostgreSQL中,create table和create index语句支持表空间子句。但是,如果指定的表空间在PostgreSQL中不存在,则create table和create index语句执行失败。在编译PostgreSQL迁移脚本之前,用户应创建所需的表空间。

TRUE

注释表空间。

表空间子句被注释掉,创建表/索引时将使用默认表空间。

pkg_naming

适用于将包设置为schema,或将包名称与存储过程和函数名称合并。

pkg_as_schema

将包转换为schema。

PostgreSQL不支持包,包的存储过程和函数将被转换为独立的存储过程和函数。这些对象将在schema中创建,名称与包名称相同。它们不是包的一部分,因此可能会存在性能问题。

grant_support

GRANT

对象权限

表, 视图,索引,存储过程,函数

ignore

不转换GRANT语句,脚本保留原样。(默认值)

PostgreSQL有单独的授予权限的方式。此配置将忽略迁移,脚本将保留原样。

comment

注释整个GRANT语句。

PostgreSQL有单独的授予权限的方式。此配置将注释整个GRANT语句。

sqlplus_unsupported_command

SQL PLUS

PostgreSQL不完全支持SQL PLUS命令。此配置用于处理此类型要求。

SQL PLUS commands

IGNORE

忽略迁移,脚本保留原样。

PostgreSQL不支持SQL PLUS命令。此配置将忽略脚本。

COMMENT

注释SQL PLUS命令。(默认值)

PostgreSQL不支持SQL PLUS命令。此配置将注释脚本。

ERROR

引发错误。

PostgreSQL不支持SQL PLUS命令。此配置将引发错误。

unlogged_table_support

NOLOGGING表

PostgreSQL不支持NOLOGGING。此配置将NOLOGGING表转换为UNLOGGED表。

COMMENT

注释NOLOGGING。(默认值)

PostgreSQL不支持NOLOGGING表。此配置将注释NOLOGGING,注释后会影响性能。

UNLOGGED

将NOLOGGING转换为UNLOGGED。

PostgreSQL不支持NOLOGGING表。此配置将NOLOGGING转换为UNLOGGED,转换后不影响性能。

external_global_user_support

全局/外部用户

可以选择忽略语句,注释语句,或将全局/外部用户转换为普通数据库用户。

系统

IGNORE

忽略语句。(默认值)

PostgreSQL不支持全局/外部用户。此配置将在迁移时记录错误,忽略该语句。

COMMENT

注释整个CREATE USER语句。

PostgreSQL不支持全局/外部用户。此配置将注释该语句。根据实际情况,更新用户。

DBUSER

将全局/外部用户转换为普通数据库用户。

PostgreSQL不支持全局/外部用户。此配置将全局/外部用户转换为普通数据库用户。

user_profile_support

CREATE USER语句中使用PROFILE

此配置是为了支持在CREATE USER语句中使用PROFILE。可以选择忽略语句,注释语句,或引发错误。

系统

IGNORE

忽略语句。(默认值)

PostgreSQL不支持PROFILE。此配置将忽略语句。

COMMENT

注释部分CREATE USER语句。

PostgreSQL不支持PROFILE。此配置将注释部分CREATE USER语句。

ERROR

引发错误。

PostgreSQL不支持PROFILE。此配置将引发错误。

user_edition_support

CREATE USER语句中使用EDITION

此配置是为了支持在CREATE USER语句中使用EDITION。可以选择忽略语句,注释语句,或引发错误。

系统

IGNORE

忽略语句。(默认值)

PostgreSQL不支持EDITION。此配置将忽略语句。

COMMENT

注释部分CREATE USER语句。

PostgreSQL不支持EDITION。此配置将注释部分CREATE USER语句。

ERROR

引发错误。

PostgreSQL不支持EDITION。此配置将引发错误。

role_identified_support

CREATE ROLE语句中使用IDENTIFIED BY

此配置用于确保角色安全。

系统

RETAIN

忽略语句。

PostgreSQL不完全支持CREATE ROLE语句中使用IDENTIFIED BY。此配置将忽略语句。

COMMENT

注释部分CREATE ROLE语句。

PostgreSQL不完全支持CREATE ROLE语句中使用IDENTIFIED BY。此配置将注释部分CREATE ROLE语句。

Password

使用系统生成的密码创建角色。

PostgreSQL不完全支持CREATE ROLE语句中使用IDENTIFIED BY。此配置将使用系统生成的密码创建角色。

ERROR

引发错误。(默认值)

PostgreSQL不完全支持CREATE ROLE语句中使用IDENTIFIED BY。此配置将引发错误。

local_temp_tablespace_support

LOCAL TEMPORARY TABLESPACE

此配置是为了支持在CREATE USER语句或CREATE ROLE语句中使用LOCAL TEMPORARY TABLESPACE。可以选择忽略语句,注释语句,或引发错误。

系统

RETAIN

忽略语句。

PostgreSQL不支持LOCAL TEMPORARY TABLESPACE。此配置将忽略语句。

COMMENT

注释部分CREATE ROLE或CREATE USER语句。

PostgreSQL不支持LOCAL TEMPORARY TABLESPACE。此配置将注释部分CREATE USER或CREATE ROLE语句。

ERROR

引发错误。(默认值)

PostgreSQL不支持LOCAL TEMPORARY TABLESPACE。此配置将引发错误。

user_identified_support

CREATE USER语句中使用IDENTIFIED BY

此配置是为了支持CREATE USER语句。

系统

RETAIN

忽略语句。(默认值)

PostgreSQL不完全支持CREATE USER语句中使用IDENTIFIED BY。此配置将忽略语句。

MIGRATE

将IDENTIFIED BY替换为PASSWORD

PostgreSQL不完全支持CREATE USER语句中使用IDENTIFIED BY。此配置将IDENTIFIED BY替换为PASSWORD。

ERROR

引发错误。

PostgreSQL不完全支持CREATE USER语句中使用IDENTIFIED BY。此配置将引发错误。

分享:

    相关文档

    相关产品