>進入 1. 導言 正如你可能想象的,遷移一個數據庫和使用它的應用程序是一件不小的事。要遷移數據庫平臺和使用它的應用程序必然會需要做很多工作。在這個包含兩部分的文檔里,我們將討論圍繞這個過程的所有" />
歡迎進入Oracle社區論壇,與200萬技術人員互動交流 >>進入 1. 導言 正如你可能想象的,遷移一個數據庫和使用它的應用程序是一件不小的事。要遷移數據庫平臺和使用它的應用程序必然會需要做很多工作。在這個包含兩部分的文檔里,我們將討論圍繞這個過程的所有
歡迎進入Oracle社區論壇,與200萬技術人員互動交流 >>進入
1. 導言
正如你可能想象的,遷移一個數據庫和使用它的應用程序是一件不小的事。要遷移數據庫平臺和使用它的應用程序必然會需要做很多工作。在這個包含兩部分的文檔里,我們將討論圍繞這個過程的所有步驟,問問你自己,要注意些什么,和怎樣在有限的停機時間窗口中進行所有這些事情。最后,你的技術將獲得提高,無論是通過書籍和刊物、論壇、培訓或是認證。
2. 將產品數據移到開發系統
你要從何處開始和你要去往何處?
這聽起來像個哲學問題,但是這確實是你在做任何移植之前要問的問題。它是計劃移植的第一步。
MySQL的版本很明顯有很多,從3.x到4.x、5.0和5.1。所以這取決于你使用的版本和你目前使用的功能,你將要在Oracle 中管理這些對象并創建它們。對于MySQL 5.x 中的視圖、角色、存儲過程和觸發器要特別謹慎。
實際上數據的移植可以通過使用mysqldump將MySQL 數據導入csv 文件,然后在Oracle中使用SQL*Loader 加載。你還可以寫一些代碼,例如定制Perl 代碼,用來打開一個到MySQL數據庫的連接、使用相聯數組逐行地將數據復制到Oracle中。即使你是使用移植工作臺來移植4.x MySQL 數據,你也將需要做一些校驗和之類的檢驗來確認你的目標數據和MySQL 中的數據是一致的。
3. Oracle移植工作臺
關于Oracle 移植工作臺要記住的第一件事是它只支持MySQL 4.x。MySQL 5.0是在2003年的12月份發布的。因為從4.x到5.x的移植非常簡單,而目前的Linux distro大多數是支持5.x的,只有很少數的站點是仍舊支持4.x的。這也就是說,如果你是在3.x或4.x上,Oracle的移植工作臺就可以幫助你。這些版本也更加簡單。你的對象主要是表、索引、檢查限制、主鍵和外鍵。Oracle移植工作臺還支持先前提到的枚舉數據類型。Oracle還主張支持權限和用戶,但是這些對象在MySQL和Oracle中的處理稍稍有些不同,所以你的移植工作也就不同。
使用Oracle 移植工作臺,你首先要登錄到你的源數據庫上,然后Oracle 安裝相關的插件以匹配rdbms(關系數據庫管理系統)的類型。然后它會在屏幕上向你展示一個“源模型”和“oracle模型”的列表。這些參考各自的schema,而這些分支表示了數據庫中包含的所有對象。這時,啟動“捕捉向導”。步驟一指定了源數據庫的細節,步驟二指定你想捕捉的數據庫,步驟三,也是最重要的一步,給出數據類型匹配。
在第三步你可以指定更大的規模、或新的數據類型用于在Oracle 中保存你的MySQL數據。就像移植工作臺展示給你的圖形界面一樣,向導也可以幫助你完成很多事情,這是主要的步驟,通過手動的方法,要求你仔細瀏覽你表中的所有字段的數據類型,以確保它們以你想要的形式進行了匹配。步驟4使你可以創建oracle模型。如果你希望的話你可以以后執行這個步驟。
Oracle 然后會加載源數據,而當你準備好的時候,將這些數據導入已創建的目標Oracle數據庫中。在OTN網站上的Oracle文檔中,demo沒有任何錯誤和警告。哦,要是真實情況如同市場材料顯示給我們的一樣整齊和友好那該多好啊。不幸的是,你肯定會遇到一連串的錯誤和警告,不是因為Oracle犯了拼寫錯誤,而是因為這個過程很復雜,依賴于許多要準確地組合在一起的部分,以便能夠一起無縫地工作。當你在GUI過程中到了這一步,并遇到警告的時候,你將被迫回到命令行,并通過手動來解決這些問題。最后你的“自動”過程確實會指導你進行這個過程,但是仍舊需要一定量的人工干預。
4. 數據庫應用程序移植
就像數據庫移植可能具有的復雜性一樣,它將被拿來與應用程序移植做一簡單比較。如果它像在PHP 或Perl 中改變一個數據庫連接描述符一樣簡單的話,那你所有的數據庫獨立代碼都可以神奇地運行。事實是盡管有SQL92標準,但每一個數據庫的執行還是有些不同。
使用SQL查詢可能會立即出現語法錯誤,因為MySQL 和Oracle的語法可能有些不同。一旦你解決了這些問題,像MySQL LIMIT 條件之類的事情,就需要使用虛擬數據行ROWNUM 來將其轉換到Oracle 中去。但是要認識到,Oracle的執行需要謹慎點。它不支持在MySQL 中具有的“LIMIT 5,10”語法,而這些將需要重寫為子查詢。此外,在Oracle中的優化器可以以不同方式處理相同的查詢,所以你要瀏覽你的查詢的執行計劃,即使不瀏覽所有的,也要瀏覽大部分,以確保它們在oracle中能執行得很好。如果你在MySQL 5.x 中使用存儲過程,那這些存儲過程需要進行重寫。
[1] [2]
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com