使用SSMA將Oracle數(shù)據(jù)庫轉(zhuǎn)成SQL Server 2008
本文我們主要介紹SSMA的安裝和授權(quán)以及使用SSMA將Oracle數(shù)據(jù)庫轉(zhuǎn)成SQL Server 2008的過程,接下來我們開始介紹。
SSMA的安裝與授權(quán)
步驟1: 先安裝Oracle 11g 和Sql Server 2008。
步驟2:下載SSMA,或者向我勒索,然后安裝……。
步驟3: 打開各種所需的服務(wù)(怎么打??????Win+R-------->>>services.msc---------->>>Enter)。
步驟4: 如果你有一個(gè) dmp 文件(這是從Oracle導(dǎo)出來的一個(gè) 備份的文件) ,先將他導(dǎo)入到Oracle中。
怎么導(dǎo)入呢????
先創(chuàng)建一個(gè)用戶Create user 用戶名 identified by 密碼。
2.授權(quán)
接著,可以打開命令行,可不是打開Sqlplus 哦。
如圖imp userid=(上面創(chuàng)建的)用戶名/ 密碼 full=y file=文件路徑
步驟5:你導(dǎo)入完成了沒? 不知道你數(shù)據(jù)量多少哦! 反正我話個(gè)把小時(shí)轉(zhuǎn)完了……
步驟6:打開SSMA
新建一個(gè)項(xiàng)目
步驟7:就此,基本完成了,然后就是 Click Connect to Oracle。
步驟8:接下來看看SQL中國研發(fā)中心的Blog:http://blogs.msdn.com/b/sqlcrd/ 你會(huì)懂的;
#p#
數(shù)據(jù)庫的轉(zhuǎn)化
這里我們選擇SSMA for Oracle 5.0為例介紹一下SSMA如何幫助您從Oracle遷移到SQL Server 2008 R2。首先我們從這里下載SSMA for Oracle 5.0的壓縮包,解壓縮后有兩個(gè)exe文件,SSMA for Oracle 5.0.exe是工具的安裝包,SSMA for Oracle 5.0 Extension Pack.exe必須安裝在SQL Server 2008 R2所在服務(wù)器,用來創(chuàng)建一些輔助運(yùn)行需要的數(shù)據(jù)庫表和存儲(chǔ)過程等。
首次運(yùn)行SSMA for Oracle需要一個(gè)License,如圖1所示,你可以點(diǎn)擊鏈接,然后根據(jù)提示填寫個(gè)人信息后免費(fèi)申請,下載保存之后返回這個(gè)對話框選擇你保存License的目錄然后點(diǎn)擊Refresh License按鈕即可運(yùn)行SSMA for Oracle了。
圖1 License Management對話框
在主窗口File菜單中選擇New Project…菜單項(xiàng)將顯示圖2所示的對話框,輸入項(xiàng)目的名字,選擇SQL Server 2008作為遷移的目標(biāo)數(shù)據(jù)庫版本。
圖2 New Project對話框
我們將使用Oracle XE的HR schema為例(下文稱之為HR數(shù)據(jù)庫以避免歧義,但其實(shí)Oracle并沒有SQL Server數(shù)據(jù)庫類似的概念)。SSMA為提高性能,缺省情況下不加載某些示例數(shù)據(jù)庫(包括HR數(shù)據(jù)庫),這個(gè)缺省設(shè)置可以通過Project Settings來修改,選擇Tools菜單的Project Settings菜單項(xiàng),在彈出的對話框里點(diǎn)擊General再選擇Loading System Objects,然后勾選HR,如圖3所示。
圖3 Project Settings對話框
然后我們連接Oracle服務(wù)器,點(diǎn)擊工具條上的Connect to Oracle,輸入Server名稱、SID和用戶名/密碼,如圖4所示。連接后會(huì)有個(gè)警告對話框告訴你hr用戶沒有足夠的權(quán)限。由于我們只需要遷移HR數(shù)據(jù)庫,這里可以點(diǎn)擊Continue忽略它。如果你的Oracle服務(wù)器上有很多數(shù)據(jù)庫,數(shù)據(jù)加載可能需要比較長的時(shí)間,請耐心等待
圖4 連接到Oracle服務(wù)器
連接上Oracle后我們首先評估一下遷移HR數(shù)據(jù)庫會(huì)不會(huì)碰到問題,如果碰到問題大約需要多長時(shí)間來解決。評估并不需要連接目標(biāo)SQL Server,只需要在左上方的樹里展開Oracle服務(wù)器名稱,然后展開Schemas,右鍵點(diǎn)擊HR并選擇Create Report,如圖5所示。
圖5 評估HR數(shù)據(jù)庫
SSMA運(yùn)行一段時(shí)間后會(huì)打開一個(gè)評估報(bào)告的對話框,如圖6所示。這個(gè)評估報(bào)告很有用,里面會(huì)列出HR數(shù)據(jù)庫里各種對象(包括函數(shù)、包、存儲(chǔ)過程、表和視圖等)能夠成功遷移的比例,你可以在左邊的樹里選擇你需要查看的某個(gè)對象,比如存儲(chǔ)過程,比較Oracle的PL/SQL語法和遷移后的TSQL語法。
圖6 評估報(bào)告
圖7是一個(gè)包含有錯(cuò)誤的評估報(bào)告,當(dāng)包含錯(cuò)誤時(shí),SSMA會(huì)估算手工做轉(zhuǎn)換大約需要多少時(shí)間,這樣你就可以使用評估報(bào)告來幫助你做數(shù)據(jù)庫遷移的時(shí)間規(guī)劃。
圖7 一個(gè)包含錯(cuò)誤的評估報(bào)告
首先我們需要連接目標(biāo)數(shù)據(jù)庫,點(diǎn)擊工具條上的Connect to SQL Server,輸入Server name,在Database里輸入HR,如圖1所示。如果你的SQL Server里不存在HR數(shù)據(jù)庫,點(diǎn)擊Connect后SSMA會(huì)提示錯(cuò)誤,問你是否創(chuàng)建HR數(shù)據(jù)庫,選擇Yes。HR數(shù)據(jù)庫創(chuàng)建后SSMA可能會(huì)提示SQL Server Agent未運(yùn)行,這僅在使用服務(wù)器端數(shù)據(jù)遷移時(shí)才會(huì)用到,默認(rèn)情況下我們使用的是客戶端數(shù)據(jù)遷移,所以可以點(diǎn)擊Continue忽略。
圖1 連接到SQL Server服務(wù)器
連接上SQL Server服務(wù)器后我們就可以遷移Schema了,這里的Schema指數(shù)據(jù)以外的數(shù)據(jù)庫定義,比如表結(jié)構(gòu)、視圖定義、存儲(chǔ)過程等等。右鍵單擊Oracle Metadata Explorer里的HR數(shù)據(jù)庫,選擇Convert Schema,如圖2所示。SSMA運(yùn)行一段時(shí)間后會(huì)在最下方的Output欄里顯示轉(zhuǎn)換是否有錯(cuò)誤、警告或信息。這時(shí)你可以展開SQL Server Metadata Explorer里HR數(shù)據(jù)庫的dbo schema,在Procedures文件夾下會(huì)發(fā)現(xiàn)ADD_JOB_HISTORY等存儲(chǔ)過程,Tables文件夾下會(huì)發(fā)現(xiàn)COUNTRIES等表,說明Schema的遷移已經(jīng)成功。
圖2 轉(zhuǎn)換Schema
如果這時(shí)你使用SQL Server客戶端工具SQL Server Management Studio或者Visual Studio的Server Explorer查看SQL Server上的HR數(shù)據(jù)庫,你會(huì)發(fā)現(xiàn)找不到前面所說的存儲(chǔ)過程、表或者視圖。這是因?yàn)镃onvert Schema菜單項(xiàng)只是在SSMA的Project里進(jìn)行了轉(zhuǎn)換,并未轉(zhuǎn)換到數(shù)據(jù)庫。這么設(shè)計(jì)為了讓你可以在同步到SQL Server之前再做些其他修改,比如REGIONS表里的REGION_ID列在Oracle里是NUMBER類型,它被SSMA轉(zhuǎn)換成了最安全的float(53)類型,如果你知道REGION_ID就是個(gè)整形,你可以把它修改為int類型,當(dāng)然你最好對COUNTRIES表的REGION列也做同樣的修改。
在確認(rèn)Schema遷移沒有問題后,你可以同步到SQL Server數(shù)據(jù)庫了,在SQL Server Metadata Explorer里右鍵點(diǎn)擊HR數(shù)據(jù)庫,選擇Synchronize with Database,如圖3所示。
圖3 同步HR數(shù)據(jù)庫到SQL Server
這時(shí)可能會(huì)再次彈出SQL Server連接對話框和SQL Server Agent未運(yùn)行的警告,確認(rèn)后會(huì)顯示Synchronize with the Database對話框,如圖4所示。對話框里列出了SQL Server數(shù)據(jù)庫和SSMA的樹結(jié)構(gòu)的差別,可以選擇Hide Equal Objects來過濾掉兩邊相同的對象。由于我們連接的是新創(chuàng)建的HR數(shù)據(jù)庫,所以左側(cè)顯示的都是 [Not Found] 狀態(tài),如果你之前做過同步這里會(huì)顯示不同的狀態(tài),這里我們點(diǎn)擊OK繼續(xù)。等待右下角的進(jìn)度條走完,留意主窗口Output欄是否報(bào)錯(cuò),沒有報(bào)錯(cuò)的話SQL Server里的對象應(yīng)該已經(jīng)創(chuàng)建好了。
圖4 Synchronize with the Database對話框
再次使用SQL Server Management Studio或者Visual Studio來查看HR數(shù)據(jù)庫中的對象,會(huì)發(fā)現(xiàn)一些$SSMA打頭的表或者存儲(chǔ)過程等,這些是遷移一些特殊對象(比如Oracle的Sequence對象)所創(chuàng)建出來的輔助對象。
在成功遷移了Schema之后,我們就可以來進(jìn)行遷移的最后一步:數(shù)據(jù)遷移。有了SSMA的幫助數(shù)據(jù)遷移也非常簡單,右鍵點(diǎn)擊Oracle Metadata Explorer里的HR數(shù)據(jù)庫,選擇Migrate Data,如圖5所示。SSMA會(huì)再次提示Oracle和SQL Server的連接信息,如果之前做過數(shù)據(jù)遷移可能會(huì)有數(shù)據(jù)覆蓋的警告信息,如果有點(diǎn)擊Continue繼續(xù)。
圖5 數(shù)據(jù)遷移
如果你的數(shù)據(jù)庫數(shù)據(jù)比較多,SSMA會(huì)運(yùn)行較長一段時(shí)間,在這過程中你可以隨時(shí)點(diǎn)擊工具欄上的Stop按鈕來停止數(shù)據(jù)遷移。遷移結(jié)束后,SSMA會(huì)有一個(gè)數(shù)據(jù)遷移報(bào)告,如圖6所示。該報(bào)告描述了遷移過程中那些表的數(shù)據(jù)被成功遷移,多少行數(shù)據(jù)被遷移以及耗時(shí)多少等等。
圖6 數(shù)據(jù)遷移報(bào)告
本文簡單介紹了如何使用SSMA for Oracle 5.0來幫助我們把一個(gè)Oracle數(shù)據(jù)庫遷移到SQL Server數(shù)據(jù)庫,包括遷移評估、Schema遷移以及數(shù)據(jù)遷移。
關(guān)于使用SSMA將Oracle數(shù)據(jù)庫轉(zhuǎn)換成SQL Server 2008的操作就介紹完畢了,希望通過本文的介紹能夠帶給您一些收獲。
【編輯推薦】