首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 遷移至 Oracle 完整實戰:SQL Developer 遷移精靈與快速遷移模式操作指南

     編輯:MySQL 資料庫相關知識

工具鏈準備

  1. MySQL JDBC 驅動:mysql-connector-java-5.1.xx.jar(或 8.x 版)
  2. Oracle SQL Developer:1.2 版或更新(內建遷移精靈)

環境配置步驟

  1. 註冊第三方 JDBC:Tools → Preferences → Database → Third Party JDBC Drivers → Add Entry 選擇 MySQL jar
  2. 建立連線:Connections → New Connection 分別建立 MySQL 與 Oracle 連線並測試
  3. 建立遷移倉儲:Migration → Repository Management → Create Repository(儲存遷移中介模型)

兩種遷移模式

標準遷移(精細控制)

  1. Capture:Migration → Capture Source Database 逆向抓取 MySQL 結構
  2. Convert:Migration → Convert 將 MySQL 模型轉換為 Oracle 模型(型別映射、關鍵字處理)
  3. Generate DDL:Migration → Generate Oracle DDL 產出建表腳本
  4. Run DDL:在 Oracle 端執行腳本建立 Schema
  5. Move Data:Migration → Move Data 透過 JDBC 批次搬運資料

快速遷移(一鍵完成)

Migration → Quick Migrate
-- 選擇來源連線、目標連線、要遷移的表/庫,精靈自動完成上述 5 步驟

關鍵型別映射對照表

MySQLOracle 建議映射備註
TINYINTNUMBER(3)
SMALLINTNUMBER(5)
MEDIUMINTNUMBER(7)
INT / INTEGERNUMBER(10)
BIGINTNUMBER(19)
FLOATBINARY_FLOAT
DOUBLEBINARY_DOUBLE
DECIMAL(p,s)NUMBER(p,s)精度完整保留
CHAR(n)CHAR(n)
VARCHAR(n)VARCHAR2(n)Oracle 建議用 VARCHAR2
TEXT / MEDIUMTEXT / LONGTEXTCLOB
BLOB / MEDIUMBLOB / LONGBLOBBLOB
DATEDATE
DATETIMETIMESTAMPOracle DATE 含時間,但精度至秒
TIMESTAMPTIMESTAMP
ENUM / SETVARCHAR2 + CHECK CONSTRAINT需手工補充約束
AUTO_INCREMENTSEQUENCE + TRIGGER / IDENTITY (12c+)無直接對應

常見遷移坑與對策

問題原因對策
保留字衝突MySQL 允許 order、group 做識別符SQL Developer 自動加雙引號,建議統一重命名
AUTO_INCREMENT 無對應Oracle 11g 無 Identity建立 SEQUENCE + BEFORE INSERT TRIGGER,或升級 12c 使用 GENERATED AS IDENTITY
ENUM/SET 型別遺失Oracle 無對應型別轉為 VARCHAR2 + CHECK 约束
資料截斷VARCHAR 長度、字符集差異遷移前統一字符集 AL32UTF8,檢查長度上限
大量資料移動緩慢JDBC 逐行 INSERT改用 Oracle SQL*Loader / Data Pump / 外部表 + 平行匯入

驗證清單

  • ✅ 表數量、欄位數量、索引數量、外鍵數量一致
  • ✅ 核心業務表資料筆數、抽樣內容一致
  • ✅ 預存程序/函數/觸發器/視圖 邏輯等價(需人工重寫)
  • ✅ 應用端連線字串、連線池、SQL 語法(LIMIT→ROWNUM/FETCH FIRST)已調整

結語

SQL Developer 遷移精靈適合「中小型、結構單純、停機窗口充裕」的 MySQL→Oracle 專案。大型核心系統建議採用 異構同步工具(Oracle GoldenGate、SharePlex、Attunity)實現「零停機、雙寫驗證、平滑切換」。無論工具,型別映射審核、資料校驗、應用改造 才是遷移成敗的關鍵。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved