新聞中心
Oracle數(shù)據(jù)庫(kù)現(xiàn)已是應(yīng)用最為廣泛的數(shù)據(jù)庫(kù),很多的應(yīng)用是在Oracle數(shù)據(jù)庫(kù)上施行開(kāi)發(fā)的,但是由于Oracle數(shù)據(jù)庫(kù)的更新速度的原因與很多不同的相關(guān)應(yīng)用程序提供商,可能會(huì)造成在一個(gè)單位的應(yīng)用中存在Oracle的幾種版本,

創(chuàng)新互聯(lián)是一家以網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、品牌設(shè)計(jì)、軟件運(yùn)維、seo優(yōu)化、小程序App開(kāi)發(fā)等移動(dòng)開(kāi)發(fā)為一體互聯(lián)網(wǎng)公司。已累計(jì)為成都履帶攪拌車等眾行業(yè)中小客戶提供優(yōu)質(zhì)的互聯(lián)網(wǎng)建站和軟件開(kāi)發(fā)服務(wù)。
如Oracle 7、Oracle 8、Oracle 8i,甚至Oracle 9i.。
而考慮到數(shù)據(jù)庫(kù)集中、維護(hù)、備份的方便性和避免設(shè)備的重復(fù)投資,在應(yīng)用能兼容的情況下,將幾個(gè)版本的Oracle數(shù)據(jù)庫(kù)移植到一個(gè)主流版本上是數(shù)據(jù)庫(kù)管理員的一個(gè)較優(yōu)的選擇。
這就存在從Oracle數(shù)據(jù)庫(kù)的低版本移植到高版本和從Oracle數(shù)據(jù)庫(kù)的高版本移植到低版本的問(wèn)題,甚至包括系統(tǒng)平臺(tái)的遷移如從Windows NT系統(tǒng)遷移到Unix系統(tǒng)。利用Oracle導(dǎo)入/導(dǎo)出工具(Export/Import)能比較方便實(shí)現(xiàn)上述移植操作。
Oracle導(dǎo)入/導(dǎo)出工具(Export/Import)主要是用來(lái)對(duì)數(shù)據(jù)庫(kù)進(jìn)行邏輯備份,利用Export導(dǎo)出數(shù)據(jù)庫(kù)的轉(zhuǎn)儲(chǔ)二進(jìn)制文件作為數(shù)據(jù)庫(kù)Import輸入從而達(dá)到移植的目的。
有二個(gè)規(guī)則可以參考:
規(guī)則一:
從Oracle 低版本的Export數(shù)據(jù)可以Import到Oracle高版本中,但限于Oracle的相鄰版本,如從Oracle 7 到 Oracle 8。對(duì)于兩個(gè)不相鄰版本間進(jìn)行轉(zhuǎn)換,如從Oracle 6 到 Oracle 8,則應(yīng)先將數(shù)據(jù)輸入到中間版本—Oracle 7,再?gòu)闹虚g數(shù)據(jù)庫(kù)轉(zhuǎn)入更高版本。
規(guī)則二:
Oracle的Export/Import工具只能連接到擁有更高或者一樣的Export/Import版本的數(shù)據(jù)庫(kù)。如Oracle 8.0.5的Export/Import(版本8.0.5.0.0)可連接到Oracle 8.1.6數(shù)據(jù)庫(kù)(版本8.1.6.0.0);高版本的Export導(dǎo)出來(lái)的轉(zhuǎn)儲(chǔ)文件,低版本的Import讀不了;低版本的Export導(dǎo)出來(lái)的轉(zhuǎn)儲(chǔ)文件,高版本的Import可以進(jìn)行讀取。
利用上面兩個(gè)規(guī)則,下面就本人在為一單位用Oracle導(dǎo)入/導(dǎo)出工具(Export/Import)進(jìn)行此種移植碰到的問(wèn)題,提出來(lái)與大家分享,希望能起到拋磚引玉的作用。
此單位擁有Oracle數(shù)據(jù)庫(kù)版本有Oracle 8.1.6 For NT、Oracle 8.0.5 For NT、Oracle 8.0.4 For Digital Unix、Oracle 7.3 For NT。
考慮到Oracle 8.0.4 For Digital Unix運(yùn)行在小型機(jī)上、單位的備份系統(tǒng)也是針對(duì)此小型機(jī),決定將Oracle 8.1.6 For NT、Oracle 8.0.5 For NT、Oracle 7.3 For NT的數(shù)據(jù)庫(kù)都移植到Oracle 8.0.4 For Digital Unix上。
1、Oracle 8.0.5 For NT移植
因版本相差甚小,開(kāi)始直接用Oracle8.0.5的exp80導(dǎo)出數(shù)據(jù)庫(kù)的轉(zhuǎn)儲(chǔ)文件,然后用FTP(binary傳輸模式)直接上傳至Oracle 8.0.4 所在的小型機(jī),再用Oracle 8.0.4的imp導(dǎo)入一直有字符集的問(wèn)題,即存有漢字的字段顯示的都是”??????”, 移植失敗。后發(fā)現(xiàn),在Oracle8.0.5服務(wù)器上直接用Oracle8.0.5的imp80對(duì)exp80導(dǎo)出的轉(zhuǎn)儲(chǔ)文件進(jìn)行遠(yuǎn)程導(dǎo)入,字符集的問(wèn)題解決,移植成功。
對(duì)于使用Oracle 8.0.4 For Digital Unix的用戶,提醒一句,***不要用Oracle 8.0.4 For Digital Unix的exp、imp工具做備份,而應(yīng)用此版本的Windows客戶端程序exp80、imp80。
本人曾做過(guò)實(shí)驗(yàn):在Oracle 8.0.4 for Digital UNIN數(shù)據(jù)庫(kù)上新建一用戶(user)和一個(gè)表格(table)通過(guò)sql plus客戶端在表格的列中插入一些中文行,提交后,用exp 數(shù)據(jù)導(dǎo)出,再用imp數(shù)據(jù)導(dǎo)入,用sql plus客戶端查看,表中的中文值顯示為”???”)。
2、Oracle 7.3 移植
直接用Oracle7.3的export導(dǎo)出數(shù)據(jù)庫(kù)的轉(zhuǎn)儲(chǔ)文件,拷至Oracle8.0.5服務(wù)器,然后用Oracle8.0.5服務(wù)器的imp80直接導(dǎo)入至Oracle 8.0.5數(shù)據(jù)庫(kù)。此移植就變成了Oracle 8.0.5 For NT移植至Oracle 8.0.4 For Digital Unix的移植。
3、Oracle 8.1.6 For NT移植
初步設(shè)想也通過(guò)Oracle 8.0.5進(jìn)行過(guò)度。因其版本比Oracle 8.0.5高、下面對(duì)參考的規(guī)則進(jìn)行一些校驗(yàn)。
3.1高版本的Export導(dǎo)出來(lái)的轉(zhuǎn)儲(chǔ)文件,低版本的Import讀不了
在Oracle 8.1.6數(shù)據(jù)庫(kù)服務(wù)器導(dǎo)出轉(zhuǎn)儲(chǔ)二進(jìn)制文件:ora816.dmp。
在Oracle 8.0.5數(shù)據(jù)庫(kù)服務(wù)器上用Imp80進(jìn)行導(dǎo)入。
- D:>Imp80 house/password file=d:\ ora816.dmp log=d:\ora816.log full=y
/*日志顯示*/
已連接到:
- Oracle8 Release 8.0.5.0.0 – Production
- PL/SQL Release 8.0.5.0.0 – Production
IMP-00010: 不是有效的導(dǎo)出文件,標(biāo)題檢驗(yàn)失敗
IMP-00021: 操作系統(tǒng)錯(cuò)誤 - 錯(cuò)誤代碼(十進(jìn)制2,十六進(jìn)制0x2)
IMP-00000: 未成功終止導(dǎo)入
3.2 Oracle的Export/Import工具只能連接到擁有更高或者一樣的Export/Import版本的數(shù)據(jù)庫(kù)
a)Oracle 8.1.6遠(yuǎn)程數(shù)據(jù)導(dǎo)入
在Oracle 8.1.6數(shù)據(jù)庫(kù)服務(wù)器導(dǎo)出轉(zhuǎn)儲(chǔ)二進(jìn)制文件:ora816.dmp。
在Oracle 8.1.6數(shù)據(jù)庫(kù)服務(wù)器向Oracle8.0.5數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)遠(yuǎn)程導(dǎo)入
D:>Imp house/password@orclfrom816to805 file=d:\ ora816.dmp log=d:\ora816.log full=y
(orclfrom816to805為數(shù)據(jù)庫(kù)連接字符串由Oracle8.1.6數(shù)據(jù)庫(kù)指向 Oracle8.0.5數(shù)據(jù)庫(kù))
/*日志顯示*/
連接到:
- Oracle8 Release 8.0.5.0.0 – Production
- PL/SQL Release 8.0.5.0.0 – Production
- ……
經(jīng)由常規(guī)路徑導(dǎo)出由EXPORT:V08.01.06創(chuàng)建的文件
已經(jīng)完成ZHS16GBK字符集和ZHS16GBK NCHAR 字符集中的導(dǎo)入
IMP-00003: ORACLE 錯(cuò)誤2248出現(xiàn)
ORA-02248: 無(wú)效的 ALTER SESSION 選項(xiàng)
IMP-00000: 未成功終止導(dǎo)入
b)在Oracle 8.0.5數(shù)據(jù)庫(kù)服務(wù)器上用exp80對(duì)Oracle 8.1.6數(shù)據(jù)庫(kù)進(jìn)行遠(yuǎn)程導(dǎo)出。
D:>exp80 house/password@orclfrom805to816 file=d:\ora816.dmp log=d:\ora816.log
(orclfromfrom805to816為數(shù)據(jù)庫(kù)連接字符串由Oracle8.0.5數(shù)據(jù)庫(kù)指向Oracle8.1.6數(shù)據(jù)庫(kù))
/*日志顯示*/
連接到:
- Oracle8i Enterprise Edition Release 8.1.6.0.0 – Production
- With the Partitioning option
- JServer Release 8.1.6.0.0 – Production
已導(dǎo)出ZHS16GBK字符集和ZHS16GBK NCHAR 字符集
即將導(dǎo)出指定的用戶...
……
在沒(méi)有警告的情況下成功終止導(dǎo)出。
再對(duì)遠(yuǎn)程導(dǎo)出的轉(zhuǎn)儲(chǔ)文件在Oracle 8.0.5數(shù)據(jù)庫(kù)服務(wù)器上用imp80導(dǎo)入。
- D:>imp80 house/password file=d:\ora816.dmp full=y log=d:\ora816 _i.log
顯示成功導(dǎo)入
此刻此移植就變成了Oracle 8.0.5 For NT移植至Oracle 8.0.4 For Digital Unix的移植。
利用Oracle的Oracle導(dǎo)入/導(dǎo)出工具(Export/Import)除了可進(jìn)行數(shù)據(jù)庫(kù)邏輯備份、數(shù)據(jù)庫(kù)移植還可以用來(lái)提高數(shù)據(jù)庫(kù)的性能,對(duì)數(shù)據(jù)庫(kù)進(jìn)行一次導(dǎo)入/導(dǎo)出操作能重新組織數(shù)據(jù),消除數(shù)據(jù)庫(kù)的碎片,從而使數(shù)據(jù)庫(kù)的性能有較大的提高。
文章出自: http://www.programbbs.com/doc/class10-3.htm
【編輯推薦】
- Oracle數(shù)據(jù)庫(kù)與DM的強(qiáng)制訪問(wèn)的不同之處
- Oracle數(shù)據(jù)庫(kù)和DB2取前10條記錄的實(shí)際對(duì)比
- 對(duì)Oracle SQL相同語(yǔ)句的解析
- Oracle sql 性能如何進(jìn)行調(diào)整
- Oracle管理員用戶是什么?
網(wǎng)頁(yè)名稱:Oracle導(dǎo)入實(shí)際應(yīng)用工具的介紹
轉(zhuǎn)載來(lái)于:http://fisionsoft.com.cn/article/cdpedpj.html


咨詢
建站咨詢
