一、 工具鏈選型
- Navicat Premium:MySQL 管理、備份、結構對比
- Oracle SQL Developer 4.0.0.12.84:官方遷移工作台,**強烈建議此版本**,高版本遷移中段報錯誤碼不明
- PL/SQL Developer 11:Oracle 開發調試輔助
二、 源庫備份(安全第一)
# Navicat 右鍵數據庫 → 備份 → 選擇目標庫 → 開始
# 或命令行
mysqldump -u root -p --single-transaction --routines --triggers src_db > src_db_backup.sql
三、 目標庫 Oracle 表空間與用戶創建
-- 以 DBA 登錄
CREATE TABLESPACE casic_smart
DATAFILE 'C:\oracle\oradata\orcl\casic_smart.dbf' SIZE 1000M AUTOEXTEND ON;
CREATE USER tianzhi_smart IDENTIFIED BY tianzhi_smart
DEFAULT TABLESPACE casic_smart
QUOTA UNLIMITED ON casic_smart;
GRANT CONNECT, RESOURCE, DBA TO tianzhi_smart; -- 遷移需較高權限
Oracle「用戶 ≈ MySQL 數據庫」,一個業務庫對應一個用戶。
四、 SQL Developer 遷移向導全流程
- 配置 MySQL JDBC 驅動:工具 → 首選項 → 第三方 JDBC 驅動 → 添加
mysql-connector-java-5.1.x.jar
- 創建兩個連接:MySQL 連接(源)、Oracle 連接(目標 tianzhi_smart)
- 工具 → 遷移 → 遷移向導
- 源數據庫選擇:MySQL 連接 → 選擇具體 Schema
- 目標數據庫選擇:Oracle 連接
- 對象選擇:勾選需遷移的表、視圖、序列、觸發器等
- 類型映射確認:重點檢查
DATETIME→TIMESTAMP、TEXT→CLOB、BIGINT→NUMBER(19)、ENUM/SET→VARCHAR2+CHECK
- 生成腳本/直接執行:建議先生成 DDL/DML 腳本審核,再分批執行
- 數據遷移:可選在線遷移或導出 INSERT 腳本離線導入(大數據量推薦離線)
五、 遷移後必做驗證與修正
| 項目 | MySQL | Oracle | 修正動作 |
| 自增主鍵 | AUTO_INCREMENT | Sequence + Trigger / Identity (12c+) | 創建序列、觸發器或改用 GENERATED AS IDENTITY |
| 分頁查詢 | LIMIT offset, rows | OFFSET ... ROWS FETCH NEXT ... ROWS ONLY (12c+) | 改寫分頁 SQL 或封裝通用分頁包 |
| 字符串拼接 | CONCAT()/|| | || | 統一用 ||,注意 NULL 傳染 |
| 日期函數 | NOW(), DATE_FORMAT() | SYSDATE, TO_CHAR() | 建立兼容函數包 |
| IF/IFNULL | IF(), IFNULL() | CASE WHEN, NVL()/COALESCE() | 批量替換 |
| REPLACE INTO | 支援 | 不支援 | 改用 MERGE 或 INSERT ... ON CONFLICT (PG) |
六、 大數據量遷移優化策略
- 分表並行:大表按主鍵範圍拆分多線程導出/導入
- 禁用索引/約束:導入前
DISABLE CONSTRAINTS、UNUSABLE INDEXES,導入後重建
- 直接路徑載入:
SQL*Loader / External Table / Data Pump 繞過 SQL 引擎
- 增量同步:遷移窗口期開啟 CDC(如 Canal 解析 MySQL Binlog → Oracle Apply)
七、 常見遷移坑點避雷
- 關鍵字衝突:MySQL 允許反引號包裹保留字,Oracle 需雙引號或改名
- 空字符串 vs NULL:Oracle
'' ≡ NULL,MySQL 区分,應用層邏輯需適配
- 大小寫敏感:Oracle 默認大寫存儲,未加雙引號創建的對象均為大寫
- Blob/Clob 讀寫:JDBC 需用
getClob()/setClob() 流式處理
八、 總結
MySQL → Oracle 遷移核心鏈路:備份驗證 → 目標建表空間/用戶 → SQL Developer 4.0 遷移向導 → 類型映射審核 → DDL/DML 腳本分批執行 → 數據校驗 → 應用層 SQL 改造。工具版本鎖定(SQL Developer 4.0.0.12.84)是避開「遷移中段神秘報錯」的關鍵經驗。建議建立遷移檢查清單,分模塊驗收,確保業務零感知切換。
- 上一篇文章: 微信公眾平台開發實戰:BAE 雲環境下 MySQL/MongoDB 數據庫操作與微信交互完整教程
- 下一篇文章: MySQL 互換表中兩列數據的正確姿勢:自連接 UPDATE 避開賦值順序陷阱
Copyright ©
程式碼之家 All Rights Reserved