Ora2Pg 24.0 已發布

發布於 2023-07-12,作者:Gilles Darold
相關開源

加拿大蒙特婁 - 2023 年 7 月 5 日

Ora2Pg

Ora2Pg 24.0 版已正式發布,這是一個免費且可靠的工具,用於將 Oracle 數據庫遷移到 PostgreSQL,並且可以公開下載。

此主要版本增加了對將 SQL Server 數據庫遷移到 PostgreSQL 的官方支持。 它還修復了過去幾個月報告的幾個問題,並添加了一些新功能和改進。

  • 新增 SQL Server 遷移到 Ora2Pg。 大部分 SQL Server 物件以及數據導出都受到支持。 將 TSQL 儲存程序翻譯為 plpgsql 非常複雜,因為 TSQL 中缺少語句分隔符,但像往常一樣,Ora2Pg 會盡力完成尽可能多的工作。 也可以使用 SQL Server 数据库进行迁移评估。 ora2pg.conf 中添加了一些專用的配置指令。
  • 允許將 ALLOW/EXCLUDE 指令與 SHOW_* 報告一起使用,如果在 ALLOW/EXCLUDE 中設置了全局過濾器,則拋出致命錯誤。
  • 新增使用 pg_sleep 替換 DBMS_LOCK.SLEEP
  • 按函數/程序/和套件函數拆分估計成本細節。
  • 新增 cmin、cmax、ctid 到保留關鍵字列表。
  • 在 PLSQL 代碼中,為 ADD CONSTRAINT 的存在添加成本。它需要約束名稱穩定性。
  • 允許 COPYTABLE 導出類型使用 NULLIF 結構。
  • 新增 SEQUENCE_VALUES 導出類型,以導出 DDL 以設定序列的最後一個值,從目前 Oracle 數據庫的最後一個值開始,例如以下語句:ALTER SEQUENCE departments_seq START WITH 290;
  • 新增將 Oracle 變數 : varname 替換為 PG :'varname'
  • 新增對 MySQL PARTITION BY KEY() 的支持,並將其翻譯為使用表的 PK/UK 定義或 KEY() 子句中指定的列的 HASH 分割表。
  • 使 EXPORT_INVALID 配置指令適用於 TRIGGER 導出。 到目前為止,禁用的觸發器沒有被導出,將 EXPORT_INVALID 設定為 1 將強制導出禁用的觸發器。
  • 新增對 MySQL 在更新時生成的預設值的支援。 例如:CREATE TABLE t1 ( dt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); Ora2Pg 會將此語法轉換為表上的觸發器,以強制在更新事件時使用該列的值。
  • 新增將 ST_GEOMETRY 數據類型翻譯為 PostGis geometry 數據類型。
  • 使用 row_number() over () 子句替換目標列表中的 ROWNUM。

新的配置指令

  • 新增 CLOB_AS_BLOB 配置指令,用於在導出數據時將 CLOB 視為 BLOB。 啟用後,Ora2Pg 將對 CLOB 應用與 BLOB 相同的行為,並使用 BLOB_LIMIT 設定。 如果您有大型 CLOB 數據,這會很有用。 預設啟用。
  • 新增配置指令 ST_GEOMETRYTYPE_FUNCTION,以便能夠設定用於從 ST_Geometry 列中提取幾何類型的函數。 預設值:ST_GeometryType,例如,對於 ArcSDE,應將其設定為 sde.ST_GeometryType。
  • 新增四個新的配置指令,以便能夠變更或前置用於從 ST_Geometry 物件和值中提取信息的函數。
    • ST_SRID_FUNCTION:用於從 ST_Geometry 元信息中提取 srid 的 Oracle 函數。 預設值:ST_SRID,例如,對於 ArcSDE,應將其設定為 sde.st_srid。
    • ST_DIMENSION_FUNCTION:用於從 ST_Geometry 元信息中提取維度的 Oracle 函數。 預設值:ST_DIMENSION,例如,對於 ArcSDE,應將其設定為 sde.st_dimention。
    • ST_ASBINARY_FUNCTION:用於將 ST_Geometry 值轉換為 WKB 格式的 Oracle 函數。 預設值:ST_ASBINARY,例如,對於 ArcSDE,應將其設定為 sde.st_asbinary。
    • ST_ASTEXT_FUNCTION:用於將 ST_Geometry 值轉換為 WKT 格式的 Oracle 函數。 預設值:ST_ASTEXT,例如,對於 ArcSDE,應將其設定為 sde.st_astext。
  • 新增 INSERT_ON_CONFLICT 配置指令。 啟用後,此指令會指示 Ora2Pg 將 ON CONFLICT DO NOTHING 子句添加到為此類數據導出生成的所有 INSERT 語句中。

向後兼容性

  • 變更 CASE_INSENSITIVE_SEARCH 的行為,以允許使用排序規則而不是 citext 擴展。 若要停用此功能,可以使用值 none。 如果遷移不是 MSSQL,則此功能會被停用。
  • 移除 PREFIX_PARTITION 配置指令,現在由 RENAME_PARTITION 指令替換。 之前的行為是從表名、分割區名稱和子分割區名稱(如果有的話)構造分割區名稱。 問題是我們經常達到物件名稱的最大長度,這會導致重複的分割區名稱。 現在,當啟用 RENAME_PARTITION 時,分割區表將按照以下規則重新命名:<tablename>_part<pos>,其中 "pos" 是分割區編號。 對於子分割區,這是:<tablename>_part<pos>_subpart<pos> 如果這是分割區/子分割區預設值:<tablename>_part_default <tablename>_part<pos>_subpart_default 此變更將中斷向後兼容性,如果仍然設定 PREFIX_PARTITION,它只會啟用 RENAME_PARTITION
  • 當序列被循環且 START 值高於 MAXVALUE 時,將 START 值設定為 MINVALUE

有關變更的完整列表,請參閱 https://github.com/darold/ora2pg/blob/master/changelog

鏈結 & 致謝

我要感謝所有提交修補程式的用戶以及報告錯誤和功能請求的用戶,他們都在變更日誌文件中被提及。

Ora2Pg 是一個開放項目。 歡迎對構建更好的工具做出任何貢獻。 您只需使用 GitHub 工具或直接發送到 ora2pg@darold.net 即可發送您的想法、功能請求或修補程式。

鏈結


關於 Ora2Pg :

Ora2Pg 是一個簡單且可靠的工具,用於從 Oracle 遷移到 PostgreSQL。 它自 2001 年以來一直在開發,並且可以將大多數 Oracle 物件導出為與 PostgreSQL 兼容的程式碼。

Ora2Pg 可以在任何平台上運行,並且可以根據 GPL v3 許可證使用。

文件、下載和支援位於 http://www.ora2pg.com/