马达加斯加,塔那那利佛 - 2022 年 2 月 10 日
Ora2Pg 的 23.1 版本已正式发布,这是一个免费且可靠的工具,用于将 Oracle 数据库迁移到 PostgreSQL,现已公开提供下载。
本次发布修复了过去四个月以来报告的多个问题,并增加了一些主要的新功能和改进。
-S
或 --scn
来设置。您可以提供一个特定的 SCN,或者如果您想在第一次连接时使用当前 SCN,可以将值设置为 'current'。使用示例ora2pg -c ora2pg.conf -t COPY --scn 16605281
--scn
选项通过指定时间戳表达式而不是 SCN 来使用 Oracle 的闪回功能。例如ora2pg -c ora2pg.conf -t COPY --scn "TO_TIMESTAMP('2021-12-01 00:00:00', 'YYYY-MM-DD HH:MI:SS')"
ora2pg -c ora2pg.conf -t COPY --scn "SYSDATE - 1"
ora2pg 命令还有两个新选项。
新的命令行选项 --lo_import
。默认情况下,Ora2Pg 将 Oracle BLOB 导入为 bytea,目标列使用 bytea 数据类型创建。如果您想使用大型对象而不是 bytea,只需将 --blob_to_lo 选项添加到 ora2pg 命令。它将使用 Oid 数据类型创建目标列,并使用 lo_from_bytea() 函数将 BLOB 保存为大型对象。对 lo_from_bytea() 的调用返回的 Oid 将插入到目标列中,而不是 bytea。此选项只能与 SHOW_COLUMN、TABLE 和 INSERT 操作一起使用,不支持 COPY 操作。如果您想使用 COPY 或处理无法使用 lo_from_bytea() 导入的巨大 BLOB(> 1GB),您可以将 --lo_import
选项添加到 ora2pg 命令。这将允许分两步导入数据
1) 使用 COPY 或 INSERT 导出数据时,将 BLOB 的 Oid 目标列设置为 0 值,并将 BLOB 值保存到专用文件中。它还将创建一个 Shell 脚本,使用 psql 命令 \lo_import 将 BLOB 文件导入数据库,并更新表 Oid 列以返回的大型对象 Oid。脚本名为 lo_import-TABLENAME.sh
2) 执行所有脚本 lo_import-TABLENAME.sh,同时设置环境变量 PGDATABASE,以及可选的 PGHOST、PGPORT、PGUSER 等,如果它们不符合 libpq 的默认值。您可能还需要对手动执行的表执行 VACUUM FULL,以删除由表更新引起的膨胀。
限制:表必须有一个主键,它用于在大型对象导入后更新 Oid 列时设置 WHERE 子句。使用此第二种方法(--lo_import
)导入 BLOB 非常慢,因此应仅保留给 BLOB > 1GB 的行,对于所有其他行,请使用 --blob_to_lo 选项。要过滤行,您可以使用 ora2pg.conf 中的 WHERE 配置指令。
新的命令行选项 --cdc_ready
,用于在导出数据时使用每个表的当前 SCN,并将它们记录在一个名为 TABLES_SCN.log 的文件中。这可用于变更数据捕获 (CDC) 工具。
有关更改的完整列表,请参阅 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/