金倉數(shù)據(jù)庫KDTS遷移工具使用指南
正在做 Oracle 到金倉數(shù)據(jù)庫的遷移?KDTS 遷移工具是你繞不開的核心環(huán)節(jié)。本文從零開始,手把手帶你完成一次完整的異構(gòu)數(shù)據(jù)庫遷移。
一、KDTS 是什么?為什么它是遷移的核心工具
KDTS(Kingbase Data Transfer Service)是金倉官方提供的異構(gòu)數(shù)據(jù)庫遷移工具。它的核心價值在于:將 Oracle 等商業(yè)數(shù)據(jù)庫的表結(jié)構(gòu)、數(shù)據(jù)、存儲過程等對象,自動轉(zhuǎn)換并遷移到 KingbaseES 目標(biāo)庫中。
對于正在推進(jìn)數(shù)據(jù)庫信創(chuàng)替代的企業(yè)來說,KDTS 不僅僅是一個"導(dǎo)數(shù)據(jù)"的工具。它內(nèi)置了完整的數(shù)據(jù)類型映射引擎、兼容性轉(zhuǎn)換邏輯和遷移校驗(yàn)機(jī)制,是整個遷移流程的起點(diǎn)和基礎(chǔ)。
選對 Oracle 遷移工具,項目成功了一半。
二、KDTS 工具概述
支持的數(shù)據(jù)源與目標(biāo)端
核心功能
結(jié)構(gòu)遷移:自動將源庫的表、視圖、索引、約束、序列、存儲過程等 DDL 對象轉(zhuǎn)換為目標(biāo)庫兼容的語法
全量數(shù)據(jù)遷移:支持批量數(shù)據(jù)抽取與加載,可配置并行度和提交批次
數(shù)據(jù)校驗(yàn):遷移完成后自動進(jìn)行行數(shù)對比和數(shù)據(jù)一致性校驗(yàn)
遷移報告:生成詳細(xì)的遷移執(zhí)行報告,包含成功/失敗對象統(tǒng)計和錯誤日志
在"三低一平"遷移體系中的定位
金倉數(shù)據(jù)庫的遷移方法論是"三低一平"——低風(fēng)險、低成本、低侵入、平滑切換。KDTS 承擔(dān)的是"低成本"和"平滑切換"環(huán)節(jié):通過自動化遷移減少人工改寫工作量,通過數(shù)據(jù)校驗(yàn)確保遷移質(zhì)量。配合 KFS(文件同步服務(wù))可實(shí)現(xiàn)從離線遷移到在線同步的完整鏈路。
三、環(huán)境準(zhǔn)備
系統(tǒng)要求
操作系統(tǒng):Windows 7/10/11、Windows Server 2012 及以上,或 Linux(CentOS 7+/RedHat 7+/Ubuntu 18.04+)
內(nèi)存:建議 4GB 以上,大規(guī)模遷移建議 8GB
JDK:JDK 1.8 或以上版本(KDTS 自帶 JRE,也可使用系統(tǒng)已安裝的 JDK)
磁盤空間:建議預(yù)留源庫數(shù)據(jù)量 1.5 倍以上的臨時空間
安裝步驟
從金倉官網(wǎng)或交付介質(zhì)獲取 KDTS 安裝包(
KDTS-Vx.x.x-x86_64-setup.zip)解壓安裝包到指定目錄,如
/opt/KDTS/或C:\KDTS\-
Linux 環(huán)境下執(zhí)行安裝腳本:
chmod +x install.sh./install.sh Windows 環(huán)境下雙擊
setup.exe,按向?qū)瓿砂惭b啟動 KDTS:執(zhí)行
start.sh(Linux)或start.bat(Windows),默認(rèn)訪問地址為http://localhost:8088
網(wǎng)絡(luò)配置要求
KDTS 所在服務(wù)器需能訪問源數(shù)據(jù)庫(如 Oracle)的監(jiān)聽端口(默認(rèn) 1521)
KDTS 所在服務(wù)器需能訪問目標(biāo) KingbaseES 數(shù)據(jù)庫端口(默認(rèn) 54321)
建議 KDTS 部署在與目標(biāo)庫同一網(wǎng)絡(luò)區(qū)域,減少數(shù)據(jù)傳輸延遲
防火墻需放行上述端口的入站和出站流量
四、操作指南(Step by Step)
步驟1:創(chuàng)建遷移項目
登錄 KDTS 控制臺(http://<服務(wù)器IP>:8088),點(diǎn)擊首頁的"新建遷移項目"。
填寫項目名稱(如 Oracle_to_Kingbase_Project)、項目描述,選擇遷移方向?yàn)?異構(gòu)遷移"。
步驟2:連接源數(shù)據(jù)庫(Oracle)
在"源端配置"頁面,填寫以下信息:
1
數(shù)據(jù)庫類型:Oracle
2
連接地址:192.168.1.100
3
端口:1521
4
SID/Service Name:ORCL
5
用戶名:SYSTEM
6
密碼:******點(diǎn)擊"測試連接",提示"連接成功"后進(jìn)入下一步。如果連接失敗,請檢查 Oracle 監(jiān)聽服務(wù)是否正常運(yùn)行,以及網(wǎng)絡(luò)連通性。
步驟3:連接目標(biāo)數(shù)據(jù)庫(KingbaseES)
在"目標(biāo)端配置"頁面填寫:
1
數(shù)據(jù)庫類型:KingbaseES
2
連接地址:192.168.1.200
3
端口:54321
4
數(shù)據(jù)庫名:TEST
5
用戶名:SYSTEM
6
密碼:******同樣點(diǎn)擊"測試連接"確認(rèn)連通性。
步驟4:選擇遷移對象
KDTS 會讀取源庫的元數(shù)據(jù),以樹形結(jié)構(gòu)展示可選對象。你需要勾選:
Schema(模式):選擇需要遷移的用戶模式
對象類型:可細(xì)粒度選擇表、視圖、索引、約束、序列、存儲過程、函數(shù)、觸發(fā)器等
表級過濾:支持通過正則表達(dá)式或手動勾選指定要遷移的表
建議首次遷移時先選擇核心業(yè)務(wù)表進(jìn)行驗(yàn)證,確認(rèn)無誤后再全量遷移。
步驟5:數(shù)據(jù)類型映射配置
KDTS 內(nèi)置了 Oracle 到 KingbaseES 的默認(rèn)類型映射規(guī)則,常見映射如下:

對于特殊類型(如 Oracle 的 XMLTYPE、INTERVAL),KDTS 會給出轉(zhuǎn)換建議,可根據(jù)實(shí)際業(yè)務(wù)需求手動調(diào)整。
步驟6:執(zhí)行結(jié)構(gòu)遷移
點(diǎn)擊"結(jié)構(gòu)遷移"按鈕,KDTS 會自動生成目標(biāo)庫的 DDL 語句并執(zhí)行。
遷移過程中可在"任務(wù)日志"中實(shí)時查看執(zhí)行情況。結(jié)構(gòu)遷移完成后,系統(tǒng)會顯示成功和失敗的對象清單。對于失敗的 DDL(通常是 Oracle 特有語法),需要手動調(diào)整后重新執(zhí)行。
步驟7:執(zhí)行全量數(shù)據(jù)遷移
結(jié)構(gòu)遷移成功后,點(diǎn)擊"全量遷移"開始數(shù)據(jù)搬運(yùn)。
KDTS 會按表逐批抽取源端數(shù)據(jù)并寫入目標(biāo)端。進(jìn)度條實(shí)時顯示當(dāng)前表名、已遷移行數(shù)、遷移速度等信息。
步驟8:數(shù)據(jù)校驗(yàn)
數(shù)據(jù)遷移完成后,進(jìn)入"數(shù)據(jù)校驗(yàn)"模塊,KDTS 會自動執(zhí)行:
行數(shù)校驗(yàn):對比源庫和目標(biāo)庫每張表的記錄數(shù)
內(nèi)容校驗(yàn)(可選):抽樣對比關(guān)鍵字段的數(shù)據(jù)一致性
校驗(yàn)結(jié)果以表格形式展示,不一致的表會標(biāo)紅提示,方便精準(zhǔn)定位。
步驟9:生成遷移報告
所有步驟完成后,點(diǎn)擊"生成報告",KDTS 會輸出包含以下內(nèi)容的遷移報告:
項目基本信息(時間、源/目標(biāo)庫配置)
結(jié)構(gòu)遷移統(tǒng)計(成功/失敗對象數(shù)及明細(xì))
數(shù)據(jù)遷移統(tǒng)計(總行數(shù)、總數(shù)據(jù)量、耗時)
數(shù)據(jù)校驗(yàn)結(jié)果
異常及警告信息匯總
報告可導(dǎo)出為 PDF 或 HTML 格式,用于項目驗(yàn)收歸檔。
五、關(guān)鍵配置參數(shù)說明
KDTS 提供了多項可配置參數(shù),合理調(diào)整能顯著提升遷移效率。
并行遷移線程數(shù)
1
默認(rèn)值:4
2
建議值:根據(jù)源庫性能和網(wǎng)絡(luò)帶寬調(diào)整,通常 8~16并行線程數(shù)越高,遷移速度越快,但也會增加源庫的負(fù)載。生產(chǎn)環(huán)境建議先以小并行度測試,逐步調(diào)優(yōu)。
批量提交大小
1
默認(rèn)值:1000 行/批
2
建議值:5000~10000 行/批(大表場景)批量提交越大,單次事務(wù)寫入的數(shù)據(jù)越多,網(wǎng)絡(luò)往返次數(shù)越少。但過大會增加內(nèi)存占用和事務(wù)回滾成本。
錯誤處理策略
1
選項:繼續(xù) / 跳過 / 停止
2
建議:首次遷移選擇"繼續(xù)"并記錄日志,排查完問題后重新遷移失敗對象選擇"繼續(xù)"策略時,KDTS 會將失敗的行記錄到錯誤日志中,不會中斷整個遷移任務(wù)。
日志級別
1
選項:INFO / DEBUG / TRACE
2
建議:常規(guī)遷移使用 INFO,排查問題時切換到 DEBUGDEBUG 級別會記錄每批次的數(shù)據(jù)抽取和加載細(xì)節(jié),適合排查數(shù)據(jù)類型轉(zhuǎn)換異常等問題。
六、常見問題排查
問題1:連接失敗怎么辦
現(xiàn)象:測試連接時報"Connection refused"或"無法建立連接"。
排查步驟:
使用
telnet <IP> <端口>測試網(wǎng)絡(luò)連通性檢查 Oracle 監(jiān)聽狀態(tài):
lsnrctl status確認(rèn) KingbaseES 服務(wù)是否啟動:
systemctl status kingbase8驗(yàn)證用戶名密碼是否正確,以及用戶是否有足夠的訪問權(quán)限
檢查防火墻規(guī)則是否放行對應(yīng)端口
問題2:數(shù)據(jù)類型不匹配怎么處理
現(xiàn)象:結(jié)構(gòu)遷移階段部分表 DDL 執(zhí)行失敗。
處理方法:
查看失敗日志,定位具體的類型轉(zhuǎn)換錯誤
在 KDTS 的"類型映射"頁面手動調(diào)整映射關(guān)系
對于 Oracle 特有類型(如
BFILE、ROWID),可能需要在目標(biāo)庫中使用替代類型重新執(zhí)行該表的結(jié)構(gòu)遷移
問題3:大表遷移超時怎么優(yōu)化
現(xiàn)象:千萬級或億級大表遷移過程中長時間無進(jìn)度更新。
優(yōu)化方案:
調(diào)大并行線程數(shù)至 8~16
增大批量提交大小至 5000~10000
在 KDTS 配置中啟用"按主鍵分段遷移"模式,將大表切分為多個區(qū)間并行處理
-
關(guān)閉目標(biāo)庫的非必要索引,遷移完成后再重建:
-- 遷移前ALTER INDEX idx_name UNUSABLE;-- 遷移后重建ALTER INDEX idx_name REBUILD; 適當(dāng)調(diào)大 Oracle 的
PGA_AGGREGATE_TARGET和目標(biāo)庫的shared_buffers
問題4:數(shù)據(jù)校驗(yàn)不一致怎么排查
現(xiàn)象:校驗(yàn)結(jié)果顯示某幾張表行數(shù)或內(nèi)容不一致。
排查步驟:
對比源端和目標(biāo)端的
COUNT(*),確認(rèn)具體差值在 KDTS 錯誤日志中搜索該表的遷移記錄,查看是否有跳過的行
對不一致的表執(zhí)行"差異數(shù)據(jù)對比",定位具體的差異行
常見原因:源庫在遷移期間有新數(shù)據(jù)寫入(需要配合 KFS 做增量同步)、數(shù)據(jù)類型轉(zhuǎn)換導(dǎo)致截斷、主鍵沖突導(dǎo)致部分行被覆蓋
七、最佳實(shí)踐建議
根據(jù)多個信創(chuàng)遷移項目的實(shí)戰(zhàn)經(jīng)驗(yàn),總結(jié)以下 5 條建議:
1. 先做小范圍驗(yàn)證,再做全量遷移
不要一上來就遷移全部數(shù)據(jù)。先選取 3~5 張核心業(yè)務(wù)表做端到端驗(yàn)證,確認(rèn)結(jié)構(gòu)轉(zhuǎn)換正確、數(shù)據(jù)一致、應(yīng)用連接正常后,再執(zhí)行全量遷移。
2. 遷移窗口選擇低峰期,做好回退預(yù)案
即使是離線遷移,也建議在業(yè)務(wù)低峰期執(zhí)行。遷移前做好源庫和目標(biāo)庫的備份,確保遷移失敗時可以快速回退。
3. 存儲過程和觸發(fā)器需要重點(diǎn)審查
KDTS 對 PL/SQL 到 PL/SQL(KingbaseES 兼容模式)的自動轉(zhuǎn)換率約 70%~80%。剩余的觸發(fā)器、游標(biāo)、異常處理邏輯通常需要人工逐行審查和改寫。這部分工作量要提前評估。
4. 遷移報告是驗(yàn)收的重要依據(jù)
不要忽略遷移報告。它不僅是技術(shù)文檔,更是項目驗(yàn)收的關(guān)鍵交付物。報告中應(yīng)包含完整的對象遷移統(tǒng)計、校驗(yàn)結(jié)果和遺留問題清單。
5. KDTS 配合 KFS 實(shí)現(xiàn)零停機(jī)遷移
對于要求業(yè)務(wù)連續(xù)性高的場景,KDTS 負(fù)責(zé)離線全量遷移,KFS(Kingbase File Sync)負(fù)責(zé)增量數(shù)據(jù)實(shí)時同步。兩者結(jié)合可以將業(yè)務(wù)停機(jī)時間從數(shù)小時縮短到分鐘級。
八、結(jié)語
KDTS 遷移工具是 Oracle 到金倉數(shù)據(jù)庫遷移的起點(diǎn)。它自動化完成了結(jié)構(gòu)轉(zhuǎn)換和數(shù)據(jù)搬運(yùn)中最繁瑣的工作,但一個成功的遷移項目還需要配合數(shù)據(jù)校驗(yàn)、應(yīng)用適配、增量同步等環(huán)節(jié)。
如果你正在規(guī)劃完整的數(shù)據(jù)庫信創(chuàng)遷移方案,建議將 KDTS 作為數(shù)據(jù)遷移的第一步,后續(xù)配合 KFS 實(shí)現(xiàn)增量同步,最終完成平滑切換。
本文基于金倉數(shù)據(jù)庫 KDTS 遷移工具的實(shí)際使用經(jīng)驗(yàn)編寫。如果你有具體的遷移場景或問題,歡迎在評論區(qū)交流。關(guān)注獲取更多數(shù)據(jù)庫信創(chuàng)遷移實(shí)戰(zhàn)內(nèi)容。