1. 程式人生 > >資料庫遷移,SqlServer2008R2遷移到ORA10g

資料庫遷移,SqlServer2008R2遷移到ORA10g

資料庫的資料量:
資料庫的資料大約24G左右,一共有2000多張表,其中上百萬條記錄的表在25個左右,上千萬條資料的表有一個。
工具:
使用的是SqlServer2008R2內建的SQL Server Business Intelligence Development Studio。

遷移的過程中遇到的問題:
假設你的Business Intelligence Development Studio執行機器環境記憶體是4G,32位作業系統。

第一種方式匯入:
普通的表匯入使用SSIS包就可以解決。這裡的普通指的是:資料量小,小於30萬條。
第二種方式匯入:
一是:百萬條以上的資料,二是:或者資料量不大但是資料多。
這兩種情況的使用平面檔案的匯入方式來匯入,不然的話容易遇到記憶體溢位的問題。

第一種方式匯入可能遇到的問題:
①SQL和ORA 的資料型別不一致,執行時報資料型別不一致的錯。
這時需要調整兩邊的資料型別一致,並且欄位長度也要統一。對於SQL中text型別的資料,在ORA中改成VARCHAR2(4000)就可以,image型別在資料轉換裡面修改成

DT_IMAGE型別

注意資料流裡面的條件轉換的那個地方也要修改具體的資料型別,與ORA保持一致。
②對於NOT NULL ;在ORA裡面 某一列設定為NOT NULL 那麼 NULL 和'' 都插入不進去,但是SQL中某一列設定為NOT NULL ''是可以插進去的,這時需要修改ORA中的約束
③對於表結構不一致,在資料轉換那裡可以忽略掉不一致的列;最簡單的方式在資料遷移之前,把兩邊的資料結構調整成一致的。
第二種方式可能遇到的問題:
①報約束不一致,也就是重複插值的問題。
解決方法:在資料遷移之前把所有的約束可觸發器都停用掉,資料遷移完在啟用。
這樣還不行的話,那就清一下資料庫。
②型別不一致。
這裡可能已經把資料型別調整一致了,還報錯?
那就檢查一下你生成的.text資料檔案,很可能是資料檔案和資料庫中的列不對應了,錯位了。引起錯位的原因是,資料中的特殊字元比如逗號什麼的引起的,這裡具體問題具體分析。
③日期型別不一致;
SQL中的日期型別精確到秒後好幾位,但是ORA中精確位數就不是了,解決方法:在控制檔案裡面寫一下資料擷取轉換。