塔那那利佛,馬達加斯加 - 2022 年 2 月 10 日
Ora2Pg 23.1 版已正式發布並公開提供下載。Ora2Pg 是一個免費且可靠的工具,用於將 Oracle 資料庫遷移到 PostgreSQL。
此版本修正了過去四個月回報的幾個問題,並新增了一些主要的特性和改進。
-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"
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/