測試環境:
Oracle 10G
SQL Server 2008 R2 Express + SQL Server 2011(Denail)
SQL Server Migration Assistant (SSMA) for Oracle v5.0
個人電腦備配:lenovo x201
CPU:Inter Core i5
MEM:4G
A、SSMA軟體本身是免費的,總共有兩個安裝檔,另一個則是Extension Pack,在安裝的過程中會請你指定Registration Key,可以直接透過安裝的畫面上的鏈結點選後進行申請即可,過程如下。
B、啟動軟體後畫面如下,先新增一個專案,並選擇SQL Server的版本後,然後再依序點選Connect to Oracle和Connect to SQL Server,連線完成後,再點選要轉換的Oracle物件,然後再點選Convert Schema將點選的物件轉換載入,載入的過程中尤其是Table的物件轉換會最久,實際轉換2400個左右的表格,約需要6~7個小時,載入完成後,就會看到在SQL Server中會有一個虛擬的對應資料庫出現,請注意這個資料庫本身是不存在的,需要點選 Synchronize with Database,才會實際同步化到SQL Server的資料庫中,當同步化完成後,再將點選Migrate Data即可完成資料庫資料的轉換。
1、SSMA視窗畫面
2、新增專案:
3、Connect to Oracle
4-1、此視窗提供的訊息主要說明,轉換的過程中將不支援的項目。
5、Connect to SQL Server
5-1、此視窗提供的訊息主要說明,轉換的過程中將不支援的項目。
6、Synchronize with Database
6-1、同步比對結果,可以看出兩個資料庫之中的差異,並進行同步。
7、Migrate Data
C、整體轉換完成度統計:
目前經測試後整體物件轉換比率約有99.93%,有一個主鍵值有轉換失敗,主要原因為該資料表的主機欄位數超過16個時,會無法建立,另外物件 [Synonyms],[Sequences] 這兩個部份也是不能轉換的,[Sequences]在SQL Server 2011雖然有支援,但是實際測試後產生的語法還是有問題,還是需要手動建立。
資料表資料轉換的部份,也有發生問題,主要是問題為 [插入重覆的PK值], 原因為Microsoft SQL Server上資料表的資料限制上是不分大小寫,而Oracle有區分,所以主鍵值同時新增 ’Cary’ 和 ’cary’ 兩筆資料至資料表時,在Oracle是可以成功的,但是在Microsoft SQL Server上只有第一筆是成功,第二筆會失敗,所以才會發生這個問題。
資料庫物件轉移統計:
Object | Total | Successfully | Failed |
Table Schema | 2448 | 2448 | 0 |
Primary Key | 2333 | 2332 | 1 |
Index | 474 | 474 | 0 |
Column | 50986 | 50986 | 0 |
View Schema | 1 | 0 | 0 |
Synonyms | 36 | 0 | 36 |
Sequences | 4 | 0 | 4 |
Procedure | 7 | 7 | 0 |
Function | 3 | 3 | 0 |
Total | 56292 | 56250 | 41 |
資料表資料轉移統計:
Successfully | Failed |
2393 | 55 |
根據這次的測試發現大概已有九成已上的轉換率,我預計再針對發現的問題規劃出更完整轉換方案,再請大家參考。
關鍵字:Oracle、SQL Server 2008、SQL Server 2011、SQL Server Migration Assistant for Oracle v5.0、SSMA
請問這個SSMA可以用來當成 SQL REPLICATION的另一種替換品嗎?
回覆刪除我們公司有一個類似的需求,但是並非要轉換成SQL 而是保留ORACLE為資料來源,但程式是向SQL查詢並要求同步
謝謝
我們公司也有類似需求,此作業類似MIRROR DB的概念,請問有辦法做到嗎?
回覆刪除