oracle postgresql ora2pg

Ora2pg組態設定(下)

周志鴻 Vincent Chou 2023/06/05 11:10:10
923

接續上一篇ora2pg組態設定(上),繼續介紹常用的指令

控制匯出項目

 

SKIP    

Table模式匯出時,排除要匯出的項目

- fkeys: 排除 foreign key

- pkeys: 排除 primary keys

- ukeys: 排除唯一值限制

- indexes: 排除 index

- checks: 排除確認限制

 

KEEP_PKEY_NAMES

預設會忽略primary and unique key命名規則,如需保留則設為1。

 

FKEY_DEFERRABLE

匯出Table時,Foreign Key通常是設為不可延遲的,設為1時會將Foreign Key加入deferrable。

 

DEFER_FKEY

預設為0,會在匯出Table時加入INITIALLY  IMMEDIATE。

設定為1時,會在匯出Table時加入INITIALLY  DEFERRED。

 

DROP_FKEY
當設定為1,匯入Data時會先刪除所有Foreign Key,並在匯入完成後重建Foreign Key

 

DROP_INDEXES

當設定為1,匯入Data時會先刪除所有Index,並在匯入完成後重建Index。

最好做法是匯入Data後再匯Index。

 

DISABLE_TRIGGERS

當設定為1,在Insert或Copy模式下,將禁止Trigger被觸發以免資料不一致。

 

DISABLE_SEQUENCE

當設定為1,在Insert或Copy模式下,Sequence的值不會更新以免資料不一致。

 

TRIM_TYPE

如果想使用指令DATA_TYPE將 Oracle 的 CHAR(n) 轉換為 varchar(n) 或 PostgreSQL 上的文字,可能需要對資料進行一些修整。

預設情況下Ora2pg 將自動轉換並刪除前後空格。

如只要刪除前空格,設定為 LEADING。如只要刪除後空格,設定為 TRAILING。預設值為BOTH。

 

TRIM_CHAR

預設為移除字元空格,如果需要更改要移除的字元,請使用此指令。

 

USE_RESERVED_WORDS

如果Table或Column名稱是 PostgreSQL 的保留字,請啟用此指令。Ora2pg 會將物件名稱加上雙引號

 

GEN_USER_PWD

當設定為1,以在 GRANT 匯出期間將所有匯出的使用者預設密碼更換為隨機密碼。

 

PG_VERSION

在此填入PG的版本號碼,例如:9.6 或 14。

 

BITMAP_AS_GIN

當設定為1,Bitmap Index將轉換為btree_gin,需自行啟用btree_gin Extension。

當設定為0,將會轉成BTree Index。

 

ENABLE_MICROSECOND

如果不將 Oracle TimeStamp 轉成毫秒,將其設定為 0。預設情況下,使用以下格式匯出毫秒:'YYYY-MM-DD HH24:MI:SS.FF'

設定為0將強制使用以下 Oracle 格式:to_char(..., 'YYYY-MM-DD HH24:MI:SS')

PLSQL 轉換至 PLPGSQL

NULL_EQUAL_EMPTY

Ora2pg 會透過呼叫 coalesce() 函數來相容Oracle 空字串等於 NULL 的行為,將所有空字串判斷條件替換為 NULL 測試。

(field1 IS NULL) 會轉換成 (coalesce(field1::text, '') = '')

(field2 IS NOT NULL) 會轉換成 (field2 IS NOT NULL AND field2::text <> '')

 

PACKAGE_AS_SCHEMA

如果設定為 0, Ora2pg 會將所有對 package_name.function_name() 替換為 package_name_function_name()。

預設值是使用Package轉換為Schema。必須啟用PLSQL_PGSQL或在命令列中使用 -p。

 

REWRITE_OUTER_JOIN

如果 Outer Join 的 Oracle (+)語法重寫發生錯誤,請啟用此指令。

這將使 Ora2pg 不重寫此類代碼,預設是重寫為簡單的Right Outer Join。

 

USE_ORAFCE

如設定為1,將會使用 Orafce Extension,使用此Extension可提升相容性減少重構程式碼。

 

將View匯出為Table

 

VIEW_AS_TABLE

如有將View轉為Table的需求,在此填入View名稱匯出Table時將會一併匯出。

Insert 或 Copy模式時,會匯入相對應Data。

 

MVIEW_AS_TABLE

如有將MView轉為Table的需求,在此填入MView名稱匯出Table時將會一併匯出。

Insert 或 Copy模式時,會匯入相對應Data。

 

產出遷移成本報告

 

在命令列輸入下列指令可以產生評估報告,

ora2pg -t SHOW_REPORT -c ora2pg.conf  --estimate_cost  --dump_as_html > migration_report.html

 

產生評估報告範例如下

 

 

報告會列出每個物件的數量及遷移注意事項。

 

再依照預估遷移天數給予A~C及改寫難易度給1~5分數。

 

周志鴻 Vincent Chou