Oracle導(dǎo)入實際應(yīng)用工具的介紹
Oracle數(shù)據(jù)庫現(xiàn)已是應(yīng)用最為廣泛的數(shù)據(jù)庫,很多的應(yīng)用是在Oracle數(shù)據(jù)庫上施行開發(fā)的,但是由于Oracle數(shù)據(jù)庫的更新速度的原因與很多不同的相關(guān)應(yīng)用程序提供商,可能會造成在一個單位的應(yīng)用中存在Oracle的幾種版本,
如Oracle 7、Oracle 8、Oracle 8i,甚至Oracle 9i.。
而考慮到數(shù)據(jù)庫集中、維護(hù)、備份的方便性和避免設(shè)備的重復(fù)投資,在應(yīng)用能兼容的情況下,將幾個版本的Oracle數(shù)據(jù)庫移植到一個主流版本上是數(shù)據(jù)庫管理員的一個較優(yōu)的選擇。
這就存在從Oracle數(shù)據(jù)庫的低版本移植到高版本和從Oracle數(shù)據(jù)庫的高版本移植到低版本的問題,甚至包括系統(tǒng)平臺的遷移如從Windows NT系統(tǒng)遷移到Unix系統(tǒng)。利用Oracle導(dǎo)入/導(dǎo)出工具(Export/Import)能比較方便實現(xiàn)上述移植操作。
Oracle導(dǎo)入/導(dǎo)出工具(Export/Import)主要是用來對數(shù)據(jù)庫進(jìn)行邏輯備份,利用Export導(dǎo)出數(shù)據(jù)庫的轉(zhuǎn)儲二進(jìn)制文件作為數(shù)據(jù)庫Import輸入從而達(dá)到移植的目的。
有二個規(guī)則可以參考:
規(guī)則一:
從Oracle 低版本的Export數(shù)據(jù)可以Import到Oracle高版本中,但限于Oracle的相鄰版本,如從Oracle 7 到 Oracle 8。對于兩個不相鄰版本間進(jìn)行轉(zhuǎn)換,如從Oracle 6 到 Oracle 8,則應(yīng)先將數(shù)據(jù)輸入到中間版本—Oracle 7,再從中間數(shù)據(jù)庫轉(zhuǎn)入更高版本。
規(guī)則二:
Oracle的Export/Import工具只能連接到擁有更高或者一樣的Export/Import版本的數(shù)據(jù)庫。如Oracle 8.0.5的Export/Import(版本8.0.5.0.0)可連接到Oracle 8.1.6數(shù)據(jù)庫(版本8.1.6.0.0);高版本的Export導(dǎo)出來的轉(zhuǎn)儲文件,低版本的Import讀不了;低版本的Export導(dǎo)出來的轉(zhuǎn)儲文件,高版本的Import可以進(jìn)行讀取。
利用上面兩個規(guī)則,下面就本人在為一單位用Oracle導(dǎo)入/導(dǎo)出工具(Export/Import)進(jìn)行此種移植碰到的問題,提出來與大家分享,希望能起到拋磚引玉的作用。
此單位擁有Oracle數(shù)據(jù)庫版本有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運行在小型機(jī)上、單位的備份系統(tǒng)也是針對此小型機(jī),決定將Oracle 8.1.6 For NT、Oracle 8.0.5 For NT、Oracle 7.3 For NT的數(shù)據(jù)庫都移植到Oracle 8.0.4 For Digital Unix上。
1、Oracle 8.0.5 For NT移植
因版本相差甚小,開始直接用Oracle8.0.5的exp80導(dǎo)出數(shù)據(jù)庫的轉(zhuǎn)儲文件,然后用FTP(binary傳輸模式)直接上傳至Oracle 8.0.4 所在的小型機(jī),再用Oracle 8.0.4的imp導(dǎo)入一直有字符集的問題,即存有漢字的字段顯示的都是”??????”, 移植失敗。后發(fā)現(xiàn),在Oracle8.0.5服務(wù)器上直接用Oracle8.0.5的imp80對exp80導(dǎo)出的轉(zhuǎn)儲文件進(jìn)行遠(yuǎn)程導(dǎo)入,字符集的問題解決,移植成功。
對于使用Oracle 8.0.4 For Digital Unix的用戶,提醒一句,***不要用Oracle 8.0.4 For Digital Unix的exp、imp工具做備份,而應(yīng)用此版本的Windows客戶端程序exp80、imp80。
本人曾做過實驗:在Oracle 8.0.4 for Digital UNIN數(shù)據(jù)庫上新建一用戶(user)和一個表格(table)通過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ù)庫的轉(zhuǎn)儲文件,拷至Oracle8.0.5服務(wù)器,然后用Oracle8.0.5服務(wù)器的imp80直接導(dǎo)入至Oracle 8.0.5數(shù)據(jù)庫。此移植就變成了Oracle 8.0.5 For NT移植至Oracle 8.0.4 For Digital Unix的移植。
3、Oracle 8.1.6 For NT移植
初步設(shè)想也通過Oracle 8.0.5進(jìn)行過度。因其版本比Oracle 8.0.5高、下面對參考的規(guī)則進(jìn)行一些校驗。
3.1高版本的Export導(dǎo)出來的轉(zhuǎn)儲文件,低版本的Import讀不了
在Oracle 8.1.6數(shù)據(jù)庫服務(wù)器導(dǎo)出轉(zhuǎn)儲二進(jìn)制文件:ora816.dmp。
在Oracle 8.0.5數(shù)據(jù)庫服務(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)題檢驗失敗
IMP-00021: 操作系統(tǒng)錯誤 - 錯誤代碼(十進(jìn)制2,十六進(jìn)制0x2)
IMP-00000: 未成功終止導(dǎo)入
3.2 Oracle的Export/Import工具只能連接到擁有更高或者一樣的Export/Import版本的數(shù)據(jù)庫
a)Oracle 8.1.6遠(yuǎn)程數(shù)據(jù)導(dǎo)入
在Oracle 8.1.6數(shù)據(jù)庫服務(wù)器導(dǎo)出轉(zhuǎn)儲二進(jìn)制文件:ora816.dmp。
在Oracle 8.1.6數(shù)據(jù)庫服務(wù)器向Oracle8.0.5數(shù)據(jù)庫進(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ù)庫連接字符串由Oracle8.1.6數(shù)據(jù)庫指向 Oracle8.0.5數(shù)據(jù)庫)
/*日志顯示*/
連接到:
- 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 錯誤2248出現(xiàn)
ORA-02248: 無效的 ALTER SESSION 選項
IMP-00000: 未成功終止導(dǎo)入
b)在Oracle 8.0.5數(shù)據(jù)庫服務(wù)器上用exp80對Oracle 8.1.6數(shù)據(jù)庫進(jìn)行遠(yuǎn)程導(dǎo)出。
D:>exp80 house/password@orclfrom805to816 file=d:\ora816.dmp log=d:\ora816.log
(orclfromfrom805to816為數(shù)據(jù)庫連接字符串由Oracle8.0.5數(shù)據(jù)庫指向Oracle8.1.6數(shù)據(jù)庫)
/*日志顯示*/
連接到:
- 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)出指定的用戶...
……
在沒有警告的情況下成功終止導(dǎo)出。
再對遠(yuǎn)程導(dǎo)出的轉(zhuǎn)儲文件在Oracle 8.0.5數(shù)據(jù)庫服務(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ù)庫邏輯備份、數(shù)據(jù)庫移植還可以用來提高數(shù)據(jù)庫的性能,對數(shù)據(jù)庫進(jìn)行一次導(dǎo)入/導(dǎo)出操作能重新組織數(shù)據(jù),消除數(shù)據(jù)庫的碎片,從而使數(shù)據(jù)庫的性能有較大的提高。
文章出自: http://www.programbbs.com/doc/class10-3.htm
【編輯推薦】