LightDB-ETL遷移工具常用問題排查

1、無法刪除約束
根據以下SQL查詢oracle目標庫,如果約束名稱包含小寫字母,則遷移工具無法刪除,它默認是按照大寫處理的。

SELECT ac1.constraint_name,
       DBMS_METADATA.get_ddl('REF_CONSTRAINT', ac1.constraint_name, ac1.owner)
FROM all_constraints ac1
         JOIN all_constraints ac2 ON ac1.r_owner = ac2.owner AND ac1.r_constraint_name = ac2.constraint_name
WHERE ac1.constraint_type = 'R'
  and ac2.owner = UPPER('dbtrade')

SQL中的dbtrade是Oracle用戶名稱。
此時需要將原來大小寫區分的約束刪除後,建成大寫名稱的約束。
比如通過以下SQL完成約束的重建

alter table "DBTRADE"."QRTZ_CRON_TRIGGERS" drop CONSTRAINT "QRTZ_CRON_TRIGGERS_ibfk_1";
ALTER TABLE "DBTRADE"."QRTZ_CRON_TRIGGERS" ADD CONSTRAINT QRTZ_CRON_TRIGGERS_ibfk_1 FOREIGN KEY ("SCHED_NAME", "TRIGGER_NAME", "TRIGGER_GROUP")
    REFERENCES "DBTRADE"."QRTZ_TRIGGERS" ("SCHED_NAME", "TRIGGER_NAME", "TRIGGER_GROUP") ENABLE

2、如何遷移單個表
可以通過以下配置支持遷移單個表
etl.global.excludeTableRegexp=^test$

3、如何正確遷移
如果視圖依賴其他schema中的表,則必須分兩次遷移,遷移的順序爲
第一次完成表和數據的遷移:etl.global.enableFunctions=TransferTable,TransferTableData,TransferIndex,TransferSequence
第二次完成依賴對象的遷移:etl.global.enableFunctions=TransferView,TransferTrigger,TransferPackage,TransferProcedure,TransferFunction

4、如何加快遷移速度
如果被遷移的多個schema之間不存在依賴關係,則可以一次性完成所有數據的遷移。
遷移線程數和單次遷移數據量可動態調整,可以增大以下配置加快遷移速度,但同時會消耗更多的資源

etl.global.batchCount=100000
etl.global.concurrentThreadCount=32

遷移時可以在lightdb連接地址上開啓以下參數加快遷移速度
jdbc:postgresql://10.20.30.218:5436/etl?options=-c%20search_path=hr,public,oracle,lt_catalog%20&reWriteBatchedInserts=true

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章