金倉數(shù)據(jù)庫KDTS遷移工具使用指南

金倉數(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 倍以上的臨時空間

安裝步驟

  1. 從金倉官網(wǎng)或交付介質(zhì)獲取 KDTS 安裝包(KDTS-Vx.x.x-x86_64-setup.zip

  2. 解壓安裝包到指定目錄,如 /opt/KDTS/C:\KDTS\

  3. Linux 環(huán)境下執(zhí)行安裝腳本:

    chmod +x install.sh./install.sh
  4. Windows 環(huán)境下雙擊 setup.exe,按向?qū)瓿砂惭b

  5. 啟動 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 的 XMLTYPEINTERVAL),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,排查問題時切換到 DEBUG

DEBUG 級別會記錄每批次的數(shù)據(jù)抽取和加載細(xì)節(jié),適合排查數(shù)據(jù)類型轉(zhuǎn)換異常等問題。

六、常見問題排查

問題1:連接失敗怎么辦

現(xiàn)象:測試連接時報"Connection refused"或"無法建立連接"。

排查步驟

  1. 使用 telnet <IP> <端口> 測試網(wǎng)絡(luò)連通性

  2. 檢查 Oracle 監(jiān)聽狀態(tài):lsnrctl status

  3. 確認(rèn) KingbaseES 服務(wù)是否啟動:systemctl status kingbase8

  4. 驗(yàn)證用戶名密碼是否正確,以及用戶是否有足夠的訪問權(quán)限

  5. 檢查防火墻規(guī)則是否放行對應(yīng)端口

問題2:數(shù)據(jù)類型不匹配怎么處理

現(xiàn)象:結(jié)構(gòu)遷移階段部分表 DDL 執(zhí)行失敗。

處理方法

  1. 查看失敗日志,定位具體的類型轉(zhuǎn)換錯誤

  2. 在 KDTS 的"類型映射"頁面手動調(diào)整映射關(guān)系

  3. 對于 Oracle 特有類型(如 BFILE、ROWID),可能需要在目標(biāo)庫中使用替代類型

  4. 重新執(zhí)行該表的結(jié)構(gòu)遷移

問題3:大表遷移超時怎么優(yōu)化

現(xiàn)象:千萬級或億級大表遷移過程中長時間無進(jìn)度更新。

優(yōu)化方案

  1. 調(diào)大并行線程數(shù)至 8~16

  2. 增大批量提交大小至 5000~10000

  3. 在 KDTS 配置中啟用"按主鍵分段遷移"模式,將大表切分為多個區(qū)間并行處理

  4. 關(guān)閉目標(biāo)庫的非必要索引,遷移完成后再重建:

    -- 遷移前ALTER INDEX idx_name UNUSABLE;-- 遷移后重建ALTER INDEX idx_name REBUILD;
  5. 適當(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)容不一致。

排查步驟

  1. 對比源端和目標(biāo)端的 COUNT(*),確認(rèn)具體差值

  2. 在 KDTS 錯誤日志中搜索該表的遷移記錄,查看是否有跳過的行

  3. 對不一致的表執(zhí)行"差異數(shù)據(jù)對比",定位具體的差異行

  4. 常見原因:源庫在遷移期間有新數(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)容。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容