首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 9i 遷移工作台實戰:Access 2000 遷移至 Oracle 完整流程與中文亂碼解決

     編輯:Oracle 資料庫基礎

Oracle 9i 遷移工作台 (OMWB) 概述

Oracle Migration Workbench (OMWB) 是 Oracle 官方免費遷移工具,支援從 Access、SQL Server、MySQL、Sybase、DB2 等異構資料庫遷移至 Oracle。本文以 Access 2000 → Oracle 9.2.0.1.0 為例,記錄完整遷移流程、中文亂碼與字串截斷兩大難題的解決方案。

第一步:下載並安裝 OMWB 核心與 Access 外掛

  • 核心程式:Oracle Migration Workbench Release 9.2.0.1.2 for Microsoft Windows 98/NT/2000/XP
  • Access 外掛:從 Access 2.0/95/97/2000 遷移至 Oracle 平台的外掛
  • 兩者版本皆為 9.2.0.1.2 (92012)
  • 安裝順序:先裝 OMWB 核心 → 再裝 Access 外掛,安裝目錄必須與 Oracle Home 不同

第二步:準備資料源 —— 匯出 Access 中繼資料為 XML

  1. 進入 OMWB 目錄下的 \Omwb\msaccess_exporter
  2. 執行 omwb2000.mde
  3. 輸入:Access 檔案路徑、輸出 XML 描述檔路徑
  4. 產出:與 Access 同目錄同名的 .xml 檔,含資料表欄位、關聯、視圖定義

第三步:修正 XML 編碼解決中文亂碼(關鍵)

OMWB 預設生成 XML 編碼為 ISO-8859-1,不支援中文。必須修改兩處:

修改 1:Schema DTD 檔

檔案:\Omwb\msAccess_exporter\schema.dtd
第一行:encoding="ISO-8859-1"  →  encoding="GBK"
(繁體中文環境建議用 Big5 或 UTF-8)

修改 2:生成的 XML 檔

用文字編輯器開啟匯出的 .xml
第一行:encoding="ISO-8859-1"  →  encoding="GBK"
儲存

原理:OMWB 讀取 XML 時依編碼解析中文表名、欄位名。錯誤編碼會導致亂碼或遷移失敗。

第四步:執行 OMWB 遷移嚮導

  1. 啟動 OMWB
  2. 載入上一步修正編碼的 XML 檔 → 自動生成資料源模型(含表、索引、PK、FK、驗證規則)
  3. 生成 Oracle 目標模型 → OMWB 自動建立表空間與兩個使用者
  4. 資料源與目標模型均儲存在 OMWB 安裝時建立的 Repository 中
  5. 執行遷移 → 可選擇同步生成遷移腳本

第五步:解決中文字串截斷問題(核心難點)

現象:長中文字串遷移後被截斷(如 VARCHAR2(100) 只存進 50 個中文字)。

嘗試無效的方法:

  • 在 OMWB 的型別對應介面修改目標長度/型別 → 無效
  • 在 OMWB 讀取 XML 後的 Access 模型中修改來源型別 → 無效

根因:Access 本身的欄位長度定義就是按「位元組」而非「字元」計算,中文佔 2 位元組,導致實際字元容量減半。

徹底解決方案:在 Access 端先擴充欄位長度

  1. 用 Access 開啟 .mdb 檔
  2. 修改資料表設計:將文字欄位長度加倍(如 100 → 200)
  3. 儲存並關閉 Access
  4. 重新執行 omwb2000.mde 匯出 XML → 欄位定義已更新
  5. 重新跑 OMWB 遷移 → 來源與目標模型長度自動同步調整
  6. 遷移完成,長中文字串完整保留

第六步:驗證遷移結果

-- 檢查表結構
DESC USER_TABLES;

-- 抽樣查詢中文資料
SELECT * FROM TARGET_TABLE WHERE ROWNUM <= 10;

-- 檢查字元集
SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER LIKE '%CHARACTERSET%';
-- 確認 NLS_CHARACTERSET = AL32UTF8 或 ZHS16GBK

OMWB 介面工具的已知缺陷

文章提到 Oracle 9i 企業管理器與應用伺服器 Web 介面存在相同問題:修改 Repository 根本無法解決介面顯示的中文截斷/亂碼,屬於圖形介面工具本身的缺陷,需透過 SQL*Plus 或 PL/SQL Developer 等字元介面驗證實際資料。

總結:Access 遷移 Oracle 關鍵清單

延伸應用

同樣流程適用於 Access 95/97/2000。對於 SQL Server、MySQL 等其他來源,OMWB 有對應外掛,核心邏輯一致:匯出中繼資料 → 編碼修正 → 型別對應調整 → 遷移執行 → 字元介面驗證。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
步驟關鍵動作避坑重點
安裝OMWB 核心 + Access 外掛,目錄分離不可裝在 Oracle Home 底下
匯出 XML執行 omwb2000.mde生成 XML 後必改編碼
編碼修正schema.dtd + 匯出 XML 皆改 GBK/Big5/UTF-8這是中文不亂碼的前提
遷移執行載入 XML → 生成模型 → 遷移可同步生成腳本備審
長度問題Access 端先加倍欄位長度 → 重新匯出 XML → 重新遷移OMWB 型別對應介面無效,必須從源頭解決
驗證用字元介面工具查實際資料Web 介面不可信