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/