Ora2pg組態設定(下)
接續上一篇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分數。