Oracle數據庫作為目前市場的主流數據庫之一
許多應用都在其上進行開發
由於Oracle數據庫更新換代的原因和不同的應用程序提供商
可能會造成在一個單位的應用中存在Oracle的幾種版本
如Oracle
Oracle
Oracle
i
甚至Oracle
i
而考慮到數據庫集中
維護
備份的方便性和避免設備的重復投資
在應用能兼容的情況下
將幾個版本的Oracle數據庫移植到一個主流版本上是數據庫管理員的一個較優的選擇
這就存在從Oracle數據庫的低版本移植到高版本和從Oracle數據庫的高版本移植到低版本的問題
甚至包括系統平台的遷移如從Windows NT系統遷移到Unix系統
利用Oracle導入/導出工具(Export/Import)能比較方便實現上述移植操作
Oracle導入/導出工具(Export/Import)主要是用來對數據庫進行邏輯備份
利用Export導出數據庫的轉儲二進制文件作為數據庫Import輸入從而達到移植的目的
有二個規則可以參考
規則一
從Oracle 低版本的Export數據可以Import到Oracle高版本中
但限於Oracle的相鄰版本
如從Oracle
到 Oracle
對於兩個不相鄰版本間進行轉換
如從Oracle
到 Oracle
則應先將數據輸入到中間版本—Oracle
再從中間數據庫轉入更高版本
規則二
Oracle的Export/Import工具只能連接到擁有更高或者一樣的Export/Import版本的數據庫
如Oracle
的Export/Import(版本
)可連接到Oracle
數據庫(版本
)
高版本的Export導出來的轉儲文件
低版本的Import讀不了
低版本的Export導出來的轉儲文件
高版本的Import可以進行讀取
利用上面兩個規則
下面就本人在為一單位用Oracle的導入/導出工具(Export/Import)進行此種移植碰到的問題
提出來與大家分享
希望能起到拋磚引玉的作用
此單位擁有Oracle數據庫版本有Oracle
For NT
Oracle
For NT
Oracle
For Digital Unix
Oracle
For NT
考慮到Oracle
For Digital Unix運行在小型機上
單位的備份系統也是針對此小型機
決定將Oracle
For NT
Oracle
For NT
Oracle
For NT的數據庫都移植到Oracle
For Digital Unix上
Oracle
For NT移植
因版本相差甚小
開始直接用Oracle
的exp
導出數據庫的轉儲文件
然後用FTP(binary傳輸模式)直接上傳至Oracle
所在的小型機
再用Oracle
的imp導入一直有字符集的問題
即存有漢字的字段顯示的都是
??????
移植失敗
後發現
在Oracle
服務器上直接用Oracle
的imp
對exp
導出的轉儲文件進行遠程導入
字符集的問題解決
移植成功
對於使用Oracle
For Digital Unix的用戶
提醒一句
最好不要用Oracle
For Digital Unix的exp
imp工具做備份
而應用此版本的Windows客戶端程序exp
imp
本人曾做過實驗
在Oracle
for Digital UNIN數據庫上新建一用戶(user)和一個表格(table)通過sql plus客戶端在表格的列中插入一些中文行
提交後
用exp 數據導出
再用imp數據導入
用sql plus客戶端查看
表中的中文值顯示為
???
)
Oracle
移植
直接用Oracle
的export導出數據庫的轉儲文件
拷至Oracle
服務器
然後用Oracle
服務器的imp
直接導入至Oracle
數據庫
此移植就變成了Oracle
For NT移植至Oracle
For Digital Unix的移植
Oracle
For NT移植
初步設想也通過Oracle
進行過度
因其版本比Oracle
高
下面對參考的規則進行一些校驗
.
高版本的Export導出來的轉儲文件
低版本的Import讀不了
在Oracle
數據庫服務器導出轉儲二進制文件
ora
dmp
在Oracle
數據庫服務器上用Imp
進行導入
D:>Imp
house/password file=d:\ ora
dmp log=d:\ora
log full=y
/*日志顯示*/
已連接到
Oracle
Release
– Production
PL/SQL Release
– Production
IMP
: 不是有效的導出文件
標題檢驗失敗
IMP
: 操作系統錯誤
錯誤代碼(十進制
十六進制
x
)
IMP
: 未成功終止導入
.
Oracle的Export/Import工具只能連接到擁有更高或者一樣的Export/Import版本的數據庫
a)Oracle
遠程數據導入
在Oracle
數據庫服務器導出轉儲二進制文件
ora
dmp
在Oracle
數據庫服務器向Oracle
數據庫進行數據遠程導入
D:>Imp house/password@orclfrom
to
file=d:\ ora
dmp log=d:\ora
log full=y
(orclfrom
to
為數據庫連接字符串由Oracle
數據庫指向 Oracle
數據庫)
/*日志顯示*/
連接到: Oracle
Release
– Production
PL/SQL Release
– Production
……
經由常規路徑導出由EXPORT:V
創建的文件
已經完成ZHS
GBK字符集和ZHS
GBK NCHAR 字符集中的導入
IMP
: ORACLE 錯誤
出現
ORA
: 無效的 ALTER SESSION 選項
IMP
: 未成功終止導入
b)在Oracle
數據庫服務器上用exp
對Oracle
數據庫進行遠程導出
D:>exp
house/password@orclfrom
to
file=d:\ora
dmp log=d:\ora
log
(orclfromfrom
to
為數據庫連接字符串由Oracle
數據庫指向Oracle
數據庫)
/*日志顯示*/
連接到
Oracle
i Enterprise Edition Release
– Production
With the Partitioning option
JServer Release
– Production
已導出ZHS
GBK字符集和ZHS
GBK NCHAR 字符集
即將導出指定的用戶
……
在沒有警告的情況下成功終止導出
再對遠程導出的轉儲文件在Oracle
數據庫服務器上用imp
導入
D:>imp
house/password file=d:\ora
dmp full=y log=d:\ora
_i
log
顯示成功導入
此刻此移植就變成了Oracle
For NT移植至Oracle
For Digital Unix的移植
利用Oracle的Oracle導入/導出工具(Export/Import)除了可進行數據庫邏輯備份
數據庫移植還可以用來提高數據庫的性能
對數據庫進行一次導入/導出操作能重新組織數據
消除數據庫的碎片
從而使數據庫的性能有較大的提高
From:http://tw.wingwit.com/Article/program/Oracle/201311/17528.html