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

Ora2Pg v25.0 已发布

发布于 2025-04-21,作者 HexaCluster
相关开源项目

马达加斯加,塔那那利佛 - 2025 年 4 月 20 日

Ora2Pg

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

此主要版本修复了自上次发布以来报告的多个问题,并增加了一些新功能和改进。

  • 一次添加多个评估报告格式输出。
  • 支持更多 Oracle 到 PostgreSQL 的例外映射。
  • 允许覆盖在配置文件中设置的 PG_SUPPORTS_* 设置。在这种情况下,PG_VERSION 将无效。
  • 为 QUERY 操作添加了从文件解析 ALTER 语句的功能。
  • 添加对 oracle_fdw 使用 CSV 格式的 COPY 的支持。
  • 添加对每个分区的并行导出。到目前为止,分区表的所有分区都是在一个进程中串行导出的。
  • 当 ON_ERROR_STOP 被禁用时,如果目标表不存在,则允许在线数据迁移继续。
  • 表数据导出现在使用当前 SCN 进行,以在多进程导出之间获得相同的数据快照。
  • 添加将 USERENV 调用与 MODULE 替换为 current_setting 和 application_name。
  • 添加使用 psql copy 选择 oracle_fdw 进行数据移动的支持。
    • 类型 INSERT(当设置 FDW_SERVER 时)保留了 INSERT 和 COPY 之前的行为。
    • 类型 COPY(当设置 FDW_SERVER 时)使用了一种新模式,即使用 psql\copy,并使用 TO PROGRAM...FROM STDIN BINARY...BINARY
  • 添加对 oracle_fdw 与 psql "\copy" 和服务器端 COPY(使用 BINARY 流进行数据移动)的支持。将本地和服务器端的 oracle_fdw 二进制复制合并到一个分支。通过 ORACLE_FDW_COPY_MODE 配置控制使用哪种模式,默认为 "local"。
  • 将 DBMS_SQL 的 cursor/parsing/execute 简单形式转换为 PostgreSQL 动态查询执行。
  • 添加对 MOD 运算符的替换。
  • 添加一些额外的对象/困难评估迁移分数。
    • WHEN OTHER THEN 异常子句,它在迁移过程中隐藏了真正的问题。
    • 'SSSSS' 和 'J' 用于 to_char(),这可能需要重写。
  • 添加 SCRIPT 操作,用于整体处理 sqlplus 脚本,而不是逐行处理。
  • 使用 --init_project 选项生成的配置文件中的默认设置已更改为:
    • PG_NUMERIC_TYPE 0
    • NULL_EQUAL_EMPTY 1

新选项和配置指令

  • 添加 --no_clean_comment 选项,以在解析前不删除源文件中的注释。对于包含大量注释的大型 DDL 文件,这可能会花费很长时间。
  • 添加 -O | --options 用于覆盖任何配置参数,可以多次使用。语法:-O "PARAM1_NAME=value" -O "PARAM2_NAME=value" 或 -O "PARAM1_NAME=value|PARAM2_NAME=value"
  • 添加 --no_start_scn 选项,强制 Ora2Pg 不使用 SCN 导出数据,除非使用 --snc。默认情况下,当前 SCN 用于从所有表中导出数据。
  • 添加 ORACLE_FDW_COPY_MODE 配置指令。在使用 Ora2Pg COPY 与 oracle_fdw 时,可以使用两种不同的模式:
    • 1) "local",它使用在运行 Ora2Pg 的主机上的 psql 进行 "TO" 二进制流;
    • 2) "server",它使用 PostgreSQL 服务器端的 COPY 进行 "TO" 二进制流。两种模式都使用 psql 进行 "FROM STDIN BINARY"。然而,oracle_fdw 二进制复制合并到一个分支。控制使用哪种模式是 "local" 在运行 Ora2Pg 的主机上运行 psql "FROM STDIN BINARY",而 "server" 则在 PostgreSQL 服务器上运行 psql "FROM STDIN BINARY"。 "local" 模式应该可以在任何基于 PostgreSQL 的系统上工作,包括托管服务,但由于权限问题,这些系统通常不支持 "server" 模式。默认是 "local",因为它与更多配置兼容。
  • 添加 ORACLE_FDW_COPY_FORMAT 配置指令。在使用 Ora2Pg COPY 与 oracle_fdw 时,可以使用 BINARY 或 CSV 数据格式。BINARY 提供更好的性能,但要求 FDW 和目标表之间具有精确的数据类型匹配。CSV 在数据类型匹配方面提供了更大的灵活性:如果 FDW 和目标数据类型在功能上兼容,则可以复制这些列。默认是 "binary"。

有关更改的完整列表,请参阅 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/