Ora2Pg v23.1 發布

發布於 2022-02-14,作者:MigOps
相關開源

塔那那利佛,馬達加斯加 - 2022 年 2 月 10 日

Ora2Pg

Ora2Pg 23.1 版已正式發布並公開提供下載。Ora2Pg 是一個免費且可靠的工具,用於將 Oracle 資料庫遷移到 PostgreSQL。

此版本修正了過去四個月回報的幾個問題,並新增了一些主要的特性和改進。

  • 新增使用來自新版本 Orafce 的 greatest() / least() 函式,以便在需要像 Oracle 一樣在 NULL 輸入時回傳 NULL 時使用。
  • ALLOW 和 EXCLUDE 設定值現在可以從檔案讀取。 如果您有很多表要過濾,這很有用。
  • 新增使用系統變更編號 (SCN) 進行資料匯出或資料驗證的可能性,方法是提供特定的 SCN。 可以在命令行中使用 -S--scn 選項來設定。 您可以給定一個特定的 SCN,或者如果您想在第一次連線時使用目前的 SCN,請將值設定為 'current'。 使用範例
        ora2pg -c ora2pg.conf -t COPY --scn 16605281
    您也可以使用 --scn 選項,透過指定時間戳記表達式而不是 SCN 來使用 Oracle Flashback 功能。 例如
        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"
  • 新增 JSON 輸出格式以進行遷移評估。
  • 新增新的 TO_CHAR_NOTIMEZONE 設定指示詞,以移除 TO_CHAR() 函式格式部分的任何時區資訊。 預設為停用。 請注意,新的預設設定會破壞向後相容性,舊的行為是始終移除時區部分。
  • 新增新的設定指示詞 FORCE_IDENTITY_BIGINT。 通常,identity 欄位必須是 bigint 才能對應到自動遞增序列,因此 Ora2Pg 始終強制它為 bigint。 如果由於任何原因,您希望 Ora2Pg 遵循為 identity 欄位設定的 DATA_TYPE,則停用此指示詞。
  • 允許僅在 EXPORT_INVALID 設定為 2 時匯出無效的物件
  • 當在分割表上定義了 WHERE 子句或定義了全域 WHERE 子句時,停用每個分割區的資料匯出。

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) 在設定環境變數 PGDATABASE 之後,執行所有腳本 lo_import-TABLENAME.sh,並可選擇性地設定 PGHOST、PGPORT、PGUSER 等,如果它們與 libpq 的預設值不符。 您還可以手動在表上執行 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/