? 最近參與一個項目,將某幾個數據庫遷移到另一臺服務器上,因為遇到了不少問題,為了備忘,在這就寫一下。。。。
? 剛開始的時候,數據庫還沒開始導,這時候庫里有很大一部分都是沒有數據的空表,而且源庫是sql server類型,目標庫是Oracle類型的,因此我用的是sqlserver里的導入導出工具,它的優點就是能夠大批量導入,以及具有異構數據庫導入功能,還有,他不需要手動建表,在導入過程中會自動建表,這點減少了很多工作量。他的缺點就是,在導入過程中,如果源表出現錯誤,他就會停頓在錯誤點,并且,如果一張表內有多個錯誤,他也不會一次性報出,而是一次次報出,這就增加了很多工作量。
? 在導入過程中,有時候會遇到一些數據量很大的表,如果放在server工具上,會花費很多時間,降低工作效率,這時候,我們會用kettle來進行這些大表的導入,由于kettle并不是專門用來做這個工作的,因此,他的優點目前我只發現速度比較快,但是這一點也依賴于網速等很多原因,而缺點就是只能一張一張表進行導入
? 后來,我遇到有幾個源庫是Oracle類型的,這屬于同構類型導入,因此用的是expdp數據泵的方法,導出一個dmp文件,再用impdp的方法導入目標庫,這個方法的優點就是方便,不需要單個表操作,直接將整個庫打包,不過需要將dmp文件(如果只有一個dmp文件,要先確定導出時用的是exp還是expdp,因為導入時要與導出的方式對應)傳輸到目標服務器上(沒有這一步可能會報錯),當時我用的是putty進行文件傳輸,缺點是,如果數據庫版本不同,也有可能會發生報錯,因此這個方法的局限性很大。
總結一下,目前沒遇到一個很好的軟件來進行這項工作,因此我在遷移過程中,鬼知道我經歷了什么。。。。