Ora2Pg 23.2 发布

发布于 2022-10-17,MigOps
相关开源软件

马达加斯加塔那那利佛 - 2022 年 10 月 8 日

Ora2Pg 23.2 发布

Ora2Pg 23.2 版本已正式发布并可供公开下载。Ora2Pg 是一个免费且可靠的工具,用于将 Oracle 数据库迁移到 PostgreSQL。

此版本修复了过去八个月以来报告的若干问题,并新增了一些特性和改进。

  • 新增 MySQL KEY 和 LINEAR KEY 分区的导出,转换为 HASH 分区。

  • 允许导出名称中包含美元符号的对象。

  • 新增 MySQL >= 8.0 CHECK 约束的导出。

  • 新增从 MySQL 导出函数式/表达式索引。

  • 新增 MySQL 虚拟列的导出。

  • 当标度大于精度时移除 numeric 的标度和精度。PostgreSQL 不支持标度显式大于精度的 decimal/numeric 属性。

  • 新增命令行选项 --drop_if_exists,在创建对象之前添加 DROP 语句(如果存在)。对应 DROP_IF_EXISTS 配置指令。

  • 新增选项 -C | --cdc_file,可更改导出期间用于存储/读取每个表 SCN 的默认文件名。默认为当前目录下的 TABLES_SCN.log。此文件由 --cdc_ready 选项写入。

  • 使用 -P 命令行选项新增多进程功能来统计 PostgreSQL 表中的行数 (TEST_COUNT)。

  • 新增对 PostgreSQL 14 带输出参数的存储过程的支持。

  • 将默认 PostgreSQL 数据库目标版本设为 14。

新增配置指令:

  • 新增配置指令 MVIEW_AS_TABLE 和命令行选项 --mview_as_table,用于设置要导出为表的物化视图。默认不导出。值必须为物化视图名称或正则表达式的列表,以空格或逗号分隔。如果对象名称是物化视图且导出类型为 TABLE,则视图将导出为 CREATE TABLE 语句。如果导出类型为 COPY 或 INSERT,则导出相应的数据。

  • 新增配置变量 FDW_IMPORT_SCHEMA,用于重命名创建数据迁移外部表的 schema。如果您使用多个 ora2pg 实例通过外部数据包装器进行数据迁移,您可能需要为每个实例更改 schema 名称。默认值:ora2pg_fdw_import

  • 新增 TRANSFORM_VALUE 配置指令,用于在从 Oracle 检索数据时应用表达式。例如:TRANSFORM_VALUE CLOB_TABLE[CHARDATA:translate("CHARDATA", chr(0), ' ')] 将字符串中所有 Oracle char(0) 替换为空格字符。

  • 新增 EXCLUDE_COLUMNS 配置指令。与用于重新定义表结构的 MODIFY_STRUCT 不同,此指令允许指定每个表中必须从导出中排除的列列表。例如:EXCLUDE_COLUMNS T1(nocol1,nocol2) T2(nocol1,nocol2)

  • 新增配置指令 EXPORT_GTT,使用 pgtt 扩展识别的语法导出 Oracle 全局临时表。更多信息请参阅 https://github.com/darold/pgtt。默认不导出全局临时表,因为 PostgreSQL 原生不支持。

  • 新增配置选项 NO_EXCLUDED_TABLE。默认情况下,Ora2Pg 会排除一些不应成为导出一部分的 Oracle"垃圾"表。此行为会生成大量 REGEXP_LIKE 表达式,在查找表时会减慢导出速度。启用此指令可禁用此行为,但您需要稍后自行排除或清理不需要的表。用于排除表的正则表达式定义在 lib/Ora2Pg.pm 的 @EXCLUDED_TABLES 数组中。注意此行为独立于 EXCLUDE 配置指令。

向后兼容性:

  • 将所有以零年 0000 开头的无效日期强制重写为 1970-01-01(作为默认值时)或 NULL(作为数据时)。旧行为仅替换 0000-00-00 日期。

  • 此前由于 Ora2Pg 无法检测参数是日期还是数字,存在大量未转换的 TRUNC(date) 调用。问题在于 Oracle 也有 TRUNC(number),且 Ora2Pg 在有疑问时尝试不进行转换。在大多数迁移中很少遇到 TRUNC(number),因此现在所有 TRUNC() 调用都将转换为 date_trunc()。可能存在误转换的情况,但这应该比实际情况需要的工作量少得多。

完整的变更列表请参阅 https://github.com/darold/ora2pg/blob/master/changelog (https://github.com/darold/ora2pg/blob/master/changelog)

感谢所有贡献者,他们都在 changelog 文件中被提及。

链接与致谢

在此感谢所有提交补丁的用户以及报告 Bug 和功能需求的用户,他们都在 ChangeLog 文件中被提及。

Ora2Pg 是一个开放项目,欢迎任何有助于打造更好工具的贡献。您可以使用 GitHub 工具或直接发送至 ora2pg@darold.net 提交想法、功能需求或补丁。

链接:

  • 网站:https://www.ora2pg.com/ (https://www.ora2pg.com/)

  • 下载1:https://github.com/darold/ora2pg/releases (https://github.com/darold/ora2pg/releases)

  • 下载2:https://sourceforge.net/projects/ora2pg/ (https://sourceforge.net/projects/ora2pg/)

  • 开发:https://github.com/darold/ora2pg (https://github.com/darold/ora2pg)

  • 变更日志:https://github.com/darold/ora2pg/blob/master/changelog (https://github.com/darold/ora2pg/blob/master/changelog)

  • 文档:https://www.ora2Pg.com/documentation.html (https://www.ora2Pg.com/documentation.html)

关于 Ora2Pg:

Ora2Pg 是一个简单可靠的从 Oracle 迁移到 PostgreSQL 的工具。它自 2001 年以来持续开发,可以将大部分 Oracle 对象和数据导出为 PostgreSQL 兼容代码。

Ora2Pg 可在任何平台上运行,基于 GPL v3 许可证发布。

文档、下载和支持请访问 http://www.ora2pg.com/ (http://www.ora2pg.com/)