2025年9月25日: PostgreSQL 18 发布!

Ora2Pg v22.0 和 22.1 发布

发布于 2021-07-05,作者 Gilles Darold
相关开源项目

法国格勒诺布尔 - 2021 年 7 月 2 日

Ora2Pg

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

此次发布修复了过去三个月以来报告的若干问题,并增加了一些新功能和改进。版本 22.1 是一个维护版本,旨在扩展通过 oracle_fdw PostgreSQL 扩展进行数据导出功能,以支持使用公共 schema 且不保留大小写的迁移。

  • 当设置了 FDW_SERVER 且导出类型为 COPY 或 INSERT 时,增加使用 oracle_fdw 导出数据。完全支持使用 -P-J 进行多进程处理,但在此情况下 -j 选项无效。还支持某些列或数据类型的布尔值转换。实际上,预期其效果与未使用 oracle_fdw 的数据迁移相同。这可以将数据迁移速度提高 30% 至 40%,尤其是在导出 BLOB 时。感谢 MigOps Inc 提供的补丁。

  • 通过避免连接 Oracle catalog 表来提高处理大量对象的导出性能。感谢 MigOps Inc 提供的补丁。

  • 根据对象的数量,为表、索引、序列、分区、全局临时表和同义词设置最大评估分数。感谢 MigOps Inc 提供的补丁。

  • 在评估成本中添加 XML 函数检测。感谢 MigOps Inc 提供的补丁。

  • 允许在使用 --init_project--cost_unit_value 选项运行 ora2pg 时,在 export_all.sh 脚本中更改评估成本单位值。

  • 从 P/PSQL 代码中移除 pragma restrict_references,因为它无用。

  • 在生成的 SQL 文件中将 oracle schema 添加到 search_path,并在启用 USE_ORAFCE 时改进迁移评估成本。感谢 MigOps Inc 提供的补丁。

  • 在包提取级别应用 ALLOWEXCLUDED 过滤的存储过程。在此补丁之前,无法不导出某些包函数或将其排除在评估之外。感谢 MigOps Inc 提供的补丁。

  • 添加新测试以检查双方序列的最后值和标识列的数量。感谢 MigOps Inc 提供的补丁。

  • 在 TEST 操作中,默认应用 ALLOWEXCLUDED 过滤器,无需指定对象类型,即可处理表对象。

新的配置指令

  • 添加 ORACLE_FDW_TRANSFORM 配置指令,在导出数据时对列应用转换。值必须是 TABLE[COLUMN_NAME, <replace code in SELECT target list>] 的分号分隔列表。例如,要将 varchar2 列中的字符串 'Oracle' 替换为 'PostgreSQL',请使用 ERROR_LOG[DBMS_TYPE:regexp_replace("DBMS_TYPE",'Oracle','PostgreSQL')]

  • 添加 DROP_IF_EXISTS 配置指令,在创建对象之前添加 "DROP ... IF EXISTS" 语句。这在迭代工作中可能很有用。默认禁用。

向后兼容性

旧配置文件中有一个向后兼容性问题,其中 FDW_SERVER 默认设置为 true。此指令在导出数据时未使用,但现在情况有所不同,因为它会指示 Ora2Pg 使用给定的外部服务器通过 oracle_fdw 迁移数据。

有关更改的完整列表,请参阅 https://github.com/darold/ora2pg/blob/master/changelog

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

链接与致谢

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

Ora2Pg 是一个开放项目。任何为构建更好的工具做出的贡献都受到欢迎。您只需通过 GitHub 工具或直接发送您的想法、功能请求或补丁至 ora2pg@darold.net。

链接


关于 Ora2Pg

Ora2Pg 是一个简单可靠的工具,用于从 Oracle 迁移到 PostgreSQL。它自 2001 年开始开发,可以导出大部分 Oracle 对象为 PostgreSQL 兼容代码。

Ora2Pg 可以在任何平台上运行,并根据 GPL v3 许可证提供。

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