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

Ora2Pg v21.0 已发布

发布于 2020-10-13,作者 Gilles Darold
相关开源项目

法国格勒诺布尔 - 2020年10月12日

Ora2Pg 21.0 已发布

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

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

新功能和改进

  • 当表包含 IDENTITY 列时,为 INSERT 语句添加 OVERRIDING SYSTEM VALUE 子句。
  • 大幅提高生成迁移评估报告的速度,特别是对于拥有大量对象的数据库。
  • 减少进度条的刷新时间。根据数据库对象的数量,我们花费了太多时间来刷新进度条。
  • 在迁移评估报告中添加标识列的数量。
  • 使用 HTML5 标签 details+summary 使评估详细信息报告初始隐藏。
  • 提高 BLOB/CLOB 数据导出的速度。Oracle 建议分批读写 LOB,使用 LOB 块大小的倍数。此块大小默认为 8k (8192)。最近的测试表明,使用 512K 或 4MB 等更高值可以获得最佳性能。
  • 当在单进程模式下使用 --oracle_speed 时,添加进度条。
  • 当连接用户没有 DBA 权限时,自动激活 USER_GRANTS。会显示一个警告。
  • 完成到 Windows 的移植,在 ora2pg 命令行调用中重定向到文件时使用 Windows 分隔符,并改进了 ora2pg_scanner 在 Windows OS 上的移植。
  • 添加重写 MySQL JOIN 语句,使用 WHERE 子句代替 ON。
  • 将 MGDSYS (Oracle E-Business Suite) 和 APEX_040000 添加到从导出中排除的模式列表中。
  • 当配置文件中未定义密码时,交互式提供凭据。需要安装新的 Perl 模块 Term::ReadKey。
  • 添加对 Oracle 连接“as sysdba”的支持,使用用户名“/”和空密码连接到本地 Oracle 实例。
  • 添加对 Oracle 18c 的 PRIVATE TEMPORARY TABLE 的翻译到 PostgreSQL 的基本临时表,仅更改了 on commit 的默认行为。

新的命令行选项

  • 为 ora2pg_scanner 添加新的命令行选项:-b | --binpath DIR,用于设置 ora2pg 二进制文件所在的目录的完整路径。可能仅在 Windows OS 上有用。
  • 添加 -r | --relative 命令行选项和 PSQL_RELATIVE_PATH 配置指令。默认情况下,Ora2Pg 使用 \i psql 命令来执行生成的 SQL 文件,如果您想在脚本执行文件后使用相对路径,启用此选项将使用 \ir。有关更多信息,请参阅 psql 帮助。

新的配置指令

  • NO_VIEW_ORDERING 默认情况下,Ora2Pg 会尝试对视图进行排序,以避免在导入具有嵌套视图时出错。对于大量的视图,这可能需要很长时间,您可以通过启用此指令来绕过此排序。
  • NO_FUNCTION_METADATA:强制 Ora2Pg 不要查找函数声明。这将阻止 Ora2Pg 重写函数替换调用(如果需要)。除非您希望函数中断其他导出,否则请勿启用它。
  • LOB_CHUNK_SIZE:有关 BLOB/CLOB 导出速度改进的解释,请参阅新功能和改进列表。
  • ALTERNATIVE_QUOTING_REGEXP:为了支持字符串文字的备用引用机制('Q' 或 'q'),请设置正则表达式和要使用的文本捕获来提取文本部分。此指令的值可以是用分号分隔的正则表达式列表。如果您想恢复字符串常量,则每个正则表达式都必须包含捕获部分。

向后兼容性更改

  • NO_LOB_LOCATOR 的默认值现在为 1,以利用 LOB_CHUNK_SIZE 的性能提升。
  • 默认启用模式编译(COMPILE_SCHEMA 设置为 1),以加快 DDL 提取速度。
  • 更改 Ora2Pg 对具有默认值的参数后面参数的行为。Ora2Pg 过去会更改参数函数的顺序,将所有具有默认值的参数放在列表的末尾,这需要重写函数调用。此行为已被放弃,任何在具有默认值的参数之后的没有默认值的参数现在都将附加 DEFAULT NULL。

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

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

有用链接

  • 网站:http://www.ora2pg.com/
  • 下载1:https://github.com/darold/ora2pg/releases
  • 下载2:http://sourceforge.net/projects/ora2pg/
  • 开发:https://github.com/darold/ora2pg
  • 更改日志:https://github.com/darold/ora2pg/blob/master/changelog
  • 文档:http://www.ora2pg.com/documentation.html

  • PostgreSQL 扩展的全局临时表:https://github.com/darold/pgtt

  • PostgreSQL 扩展的 BFILE:https://github.com/darold/external_file

关于 Ora2Pg

Ora2Pg 是一个简单可靠的工具,用于从 Oracle 迁移到 PostgreSQL。它自 2001 年由 Gilles Darold 开发,可以导出大多数 Oracle 对象(表、视图、物化视图、表空间、序列、索引、触发器、授权、函数、过程、包、分区、数据、blob、外部表等)。

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

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