Oracle的imp/exp組件是我們常用的工具,它的一個操作原則就是
向下相容。下面是據此總結的幾個使用規則和相關測試:
規則1:低版本的exp/imp可以串連到高版本(或同版本)的資料庫伺服器,但高版本的exp/imp不能串連到低版本的資料庫伺服器--1.1 使用9i用戶端通過imp串連到10g資料庫C:\Documents and Settings\yuechaotian>exp userid=hdtest/test@s67 tables=(ab01) rows=n file=d:\x.dmpExport: Release 9.2.0.1.0 - Production on 星期三 2月 20 10:09:55 2008Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.串連到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已匯出 ZHS16GBK 字元集和 AL16UTF16 NCHAR 字元集
注: 將不會匯出表資料(行)即將匯出指定的表通過常規路徑 ...
. . 正在匯出表 AB01
在沒有警告的情況下成功終止匯出。--1.2 使用10g用戶端通過imp串連9i資料庫:串連失敗(而不是匯出失敗)C:\Documents and Settings\yuechaotian>exp userid=hbjb_kf_hd/test@s46 owner=hdtest file=d:\x.dmpExport: Release 10.2.0.1.0 - Production on 星期三 2月 20 09:57:22 2008Copyright (c) 1982, 2005, Oracle. All rights reserved.EXP-00056: 遇到 ORACLE 錯誤 6550
ORA-06550: 第 1 行, 第 41 列:
PLS-00302: 必須說明 ''SET_NO_OUTLINES'' 組件
ORA-06550: 第 1 行, 第 15 列:
PL/SQL: Statement ignored
EXP-00000: 匯出終止失敗
規則2:高版本exp出的dmp檔案,低版本無法imp(無法識別dmp檔案)--2.1 使用10g用戶端exp出10g的資料C:\Documents and Settings\yuechaotian>exp userid=test/test@orcl owner=test file=d:\10g.dmpExport: Release 10.2.0.1.0 - Production on 星期三 2月 20 11:16:39 2008Copyright (c) 1982, 2005, Oracle. All rights reserved.串連到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已匯出 ZHS16GBK 字元集和 AL16UTF16 NCHAR 字元集
伺服器使用 AL32UTF8 字元集 (可能的字元集轉換)即將匯出指定的使用者...……匯出成功終止, 但出現警告。C:\Documents and Settings\yuechaotian>--2.2 使用9i用戶端imp上面所匯出的dmp檔案到10g:可以串連到10g中,但無法識別檔案C:\Documents and Settings\yuechaotian>imp userid=test/test@s10g fromuser=test touser=test file=d:\10g.dmpImport: Release 9.2.0.1.0 - Production on 星期三 2月 20 11:20:33 2008Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
串連到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining optionsIMP-00010: 不是有效匯出檔案,標題驗證失敗
IMP-00000: 未成功終止匯入C:\Documents and Settings\yuechaotian>
規則3:低版本exp出的dmp檔案,高版本可以imp(向下相容)-- 3.1 使用9i用戶端exp出9i中的資料C:\Documents and Settings\yuechaotian>exp userid=test/test@s9i owner=test file=d:\9i.dmpExport: Release 9.2.0.1.0 - Production on 星期三 2月 20 11:25:04 2008Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
串連到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
已匯出 ZHS16GBK 字元集和 AL16UTF16 NCHAR 字元集即將匯出指定的使用者...……在沒有警告的情況下成功終止匯出。C:\Documents and Settings\yuechaotian>-- 3.2 使用10g用戶端imp到10g資料庫中C:\Documents and Settings\yuechaotian>imp userid=test/test@orcl fromuser=test touser=test file=d:\9i.dmpImport: Release 10.2.0.1.0 - Production on 星期三 2月 20 11:28:46 2008Copyright (c) 1982, 2005, Oracle. All rights reserved.
串連到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options經由常規路徑由 EXPORT:V09.02.00 建立的匯出檔案
已經完成 ZHS16GBK 字元集和 AL16UTF16 NCHAR 字元集中的匯入
匯入伺服器使用 AL32UTF8 字元集 (可能的字元集轉換)
. . 正在匯入表 "AUDIT_ACTIONS"匯入了 144 行……成功終止匯入, 但出現警告。C:\Documents and Settings\yuechaotian>
規則4:從Oracle 低版本的Export資料可以Import到Oracle高版本中,但限於Oracle的相鄰版本,如從Oracle 7 到 Oracle 8。對於兩個不相鄰版本間進行轉換,如從Oracle 6 到 Oracle 8,則應先將資料輸入到中間版本—Oracle 7,再從中間資料庫轉入更高版本。
--我使用10g的imp功能,可以將由817匯出的dmp檔案直接匯入10g中,這與該規則的介紹不同。(該規則出自高道強的《Oracle匯入匯出工具實現資料庫移植》)C:\Documents and Settings\yuechaotian>imp userid=test/test fromuser=scott touser=test file=d:\tyc.dmpImport: Release 10.2.0.1.0 - Production on 星期三 2月 20 14:03:33 2008Copyright (c) 1982, 2005, Oracle. All rights reserved.
串連到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options經由常規路徑由 EXPORT:V08.01.07 建立的匯出檔案警告: 這些對象由 SCOTT 匯出, 而不是目前使用者已經完成 ZHS16GBK 字元集和 AL16UTF16 NCHAR 字元集中的匯入
匯入伺服器使用 AL32UTF8 字元集 (可能的字元集轉換)
匯出伺服器使用 ZHS16GBK NCHAR 字元集 (可能的 ncharset 轉換)
. 正在將 SCOTT 的對象匯入到 TEST
. . 正在匯入表 "ACCOUNT"匯入了 5 行
. . 正在匯入表 "BONUS"匯入了 0 行
. . 正在匯入表 "DEPT"匯入了 4 行
. . 正在匯入表 "EMP"匯入了 14 行
. . 正在匯入表 "RECEIPT"匯入了 1 行
. . 正在匯入表 "SALGRADE"匯入了 5 行
即將啟用約束條件...
成功終止匯入, 沒有出現警告。C:\Documents and Settings\yuechaotian>--以上操作,對於OracleXE的10g版本同樣適用:C:\Documents and Settings\yuechaotian>imp userid=test/test fromuser=scott touser=test file=d:\tyc.dmpImport: Release 10.2.0.1.0 - Production on 星期三 2月 20 14:15:51 2008Copyright (c) 1982, 2005, Oracle. All rights reserved.串連到: Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production經由常規路徑由 EXPORT:V08.01.07 建立的匯出檔案警告: 這些對象由 SCOTT 匯出, 而不是目前使用者已經完成 ZHS16GBK 字元集和 AL16UTF16 NCHAR 字元集中的匯入
匯出伺服器使用 ZHS16GBK NCHAR 字元集 (可能的 ncharset 轉換)
. 正在將 SCOTT 的對象匯入到 TEST
. . 正在匯入表 "ACCOUNT"匯入了 5 行
. . 正在匯入表 "BONUS"匯入了 0 行
. . 正在匯入表 "DEPT"匯入了 4 行
. . 正在匯入表 "EMP"匯入了 14 行
. . 正在匯入表 "RECEIPT"匯入了 1 行
. . 正在匯入表 "SALGRADE"匯入了 5 行
即將啟用約束條件...
成功終止匯入, 沒有出現警告。C:\Documents and Settings\yuechaotian> 另外,用10G的EXP連上11G的資料庫,匯出資料庫以後,再用10G的IMP是可以還原的。