马达加斯加,塔那那利佛 - 2022年2月10日
用于将 Oracle 数据库迁移到 PostgreSQL 的免费可靠工具 Ora2Pg 的 23.1 版本已正式发布,并可公开下载。
此版本修复了过去四个月报告的一些问题,并添加了一些新的主要功能和改进。
-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 数据类型创建目标列,并将 BLOB 保存为使用 lo_from_bytea() 函数的大对象。调用 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) 在设置环境变量 PGDATABASE 以及可选的 PGHOST、PGPORT、PGUSER 等(如果它们与 libpq 的默认值不对应)后,执行所有脚本 lo_import-TABLENAME.sh。您还可以手动对表执行 VACUUM FULL,以删除表更新创建的膨胀。
限制:表必须具有主键,它用于设置 WHERE 子句以在大对象导入后更新 Oid 列。使用第二种方法(--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 文件中被提及。
Ora2Pg 是一个开放项目。欢迎任何为构建更好的工具做出贡献。您只需使用 GitHub 工具或直接发送电子邮件至 ora2pg@darold.net 来发送您的想法、功能请求或补丁。
链接
关于 Ora2Pg :
Ora2Pg 是一个简单可靠的从 Oracle 迁移到 PostgreSQL 的工具。它自 2001 年开始开发,可以将大多数 Oracle 对象导出为与 PostgreSQL 兼容的代码。
Ora2Pg 可以在任何平台上运行,并以 GPL v3 许可证提供。
文档、下载和支持请访问 http://www.ora2pg.com/