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