Oracle不同版本之間Export & Import的相容性矩陣
譯註: 原文《Compatibility Matrix for Export & Import Between Different Oracle Versions》,來自於Oracle metalink。
部署新的環境時,Oracle資料庫匯入匯出轉換工作往往會耗費不少的時間,如果碰到難以解決的問題就更加麻煩了。為了便於更深入地
瞭解Oracle資料庫exp/imp匯出匯入工具的使用,提高資料庫轉換的效率,迴避簡單的常識問題,特翻譯了該篇文章,以饗讀者。
儘管已仔細修訂,或有翻譯不妥、疏漏之處,歡迎指正!
本文及英文版下載
By 在路上...http://www.cnblogs.com/midea0978
目的
-------
本文描述了Oracle版本不同之間EXPORT 和 IMPORT工具的相容性問題.
應用範圍
-------------------
本文適用於Oracle7, Oracle8, Oracle8i, Oracle9i, and Oracle10g資料庫環境,
應用於使用資料庫匯出/匯入工具將資料從 x 版本匯出,然後匯入到 y 版本的情形。
本文指出了應該使用什麼版本的工具來執行資料的匯出/匯入,以及在匯出資料之前如何準備Oracle資料字典。
對於轉換表空間的匯出/匯入,請參考Note 291024.1 "使用匯出/匯入工具轉換表空間的相容性和新特性"
摘要
-------
1. 使用低版本的匯出工具匯出資料的情形.
2. 使用目標資料庫的匯入工具匯入資料.
3. 不再支援使用Oracle7匯出工具匯出Oracle9i資料庫.
不同Oracle版本下Export & Import的相容性矩陣
--------------------------------------------------------------------------
介紹.
-------------
使用Oracle匯出/匯入工具,你可以在資料庫之間傳輸資料,即使這些資料庫位於不同的軟/硬體環境下.
Oracle匯出工具從Oracle資料庫中提取物件定義、表資料並以二進位制的Oracle匯出檔案格式
儲存到檔案或磁帶上。這些檔案可以通過FTP或者物理轉換(磁帶的情形)傳送到不同的地方。
當通過網路傳輸匯出檔案的時候,必須使用二進位制模式,當使用ASCII模式傳輸會導致匯入
資料時出現錯誤,類似 IMP-9 或 IMP-10,後面跟著是 IMP-0.
Oracle匯入工具從匯出檔案中讀取物件定義和表資料,然後插入到Oracle資料庫中.
從Oracle10g Release 1 (10.1.0.x)開始,我們提供新的Export DataPump (expdp) 和
Import DataPump (impdp) 工具.使用Export DataPump匯出的檔案只能被Import DataPump讀取.
並且使用Export DataPump匯出的檔案也只能被對應版本的Import DataPump客戶端讀取。
資料字典檢視.
----------------------
執行匯出/匯入工具之前,必須準備好這些工具必須的一些檢視。可以通過執行下面的指令碼來完成:
UNIX : SQL> @$ORACLE_HOME/rdbms/admin/catexp.sql
Windows: SQL> @%ORACLE_HOME%\rdbms\admin\catexp.sql
指令碼 CATEXP.SQL 必須使用 SYS 執行. 該指令碼被指令碼 CATALOG.SQL 動態呼叫執行. 對於同一個
資料庫,指令碼 CATEXP.SQL 和CATALOG.SQL 僅能執行一次。通常,在執行匯出/匯入前不必再次執行指令碼
(錯誤資訊 EXP-24 或 IMP-23 表明這些檢視不正確).
指令碼 CATEXP.SQL 執行以下任務,為匯出/匯入做準備:
- 在資料字典中建立必要的匯出/匯入檢視;
- 建立角色 EXP_FULL_DATABASE 和 IMP_FULL_DATABASE ;
- 對角色 EXP_FULL_DATABASE 和 IMP_FULL_DATABASE 授予必要的許可權;
- 授予 DBA 角色 EXP_FULL_DATABASE 和 IMP_FULL_DATABASE 的許可權;
- 將匯出/匯入檢視的版本更新到表 sys.props$ 中.
當使用Oracle7匯出工具從Oracle8/8i資料庫(見下面詳細)匯出Oracle7格式的匯出檔案時,必須在Oracle8/8i資料庫用 SYS 使用者
執行 CATEXP7.SQL 指令碼:
UNIX : SQL> @$ORACLE_HOME/rdbms/admin/catexp7.sql
Windows: SQL> @%ORACLE_HOME%\rdbms\admin\catexp7.sql
該指令碼建立檢視使得資料庫看起來像是 Oracle7 版本的資料庫,也意味著檢視中看不到 Oracle8/8i 特定的物件,這樣匯出檔案就
可以在沒有錯誤的情況下匯入到 Oracle7 版本的資料庫.
注意指令碼CATEXP.SQL 和 CATEXP7.SQL 僅僅只需要執行一次:CATEXP.SQL 建立檢視供 Oracle8/8i/9i/10g 匯出工具使用,CATEXP7.SQL
建立檢視供 Oracle7 匯出工具使用。
所以如果這些指令碼已經用 SYS 使用者執行過,就沒必要再執行了。
上面提到的過程同樣適用於用Oracle6 的匯出工具匯出 Oracle7 的資料庫,此時應該在 Oracle7 資料庫中用 SYS 使用者執行 CATEXP6.SQL
指令碼。
注意使用Oracle7工具從Oracle9i資料庫匯出資料已經不再被支援:在一份向下支援的路線圖中,我們只向後支援一個功能性的版本。這
也意味著在Oracle10g資料庫中用 Oracle8 匯出工具匯出資料不被支援(當前只支援在Oracle10g資料庫中使用 Oracle8i 8.1.7 或以上
版本的匯出工具)。
完全資料庫匯出/匯入方式移植到Oracle9i / Oracle10g
------------------------------------------------------------------------------
將資料庫移植到Oracle9i 或 Oracle10g的情形,採用資料庫完全匯出/匯入的方式被限制了,這種情況僅適用於用完全模式(FULL=Y)匯入
採用完全模式匯出的檔案。
不過還可以採用以下方式:
- 使用使用者模式匯入資料 (FROMUSER=... TOUSER=...)
- 使用表模式匯入資料 (FROMUSER=... TABLES=...)
- 用表空間模式匯出/匯入資料 (TRANSPORT_TABLESPACE=Y)
注意匯入客戶端應能讀取匯出版本5.1.22及更高版本(最高至相同版本)的匯出檔案。
該移植限制與移植手冊中描述的可用的升級路徑相關,主要原因是僅支援從主要版本的最終發行版本(例如Oracle8i 8.1.7)直接升級到
一個新的最近的主要版本(例如Oracle9i 9.2.0 ),例如:
- 對 Oracle7, 版本 7.3.4.是最近的主要版本,
- 對 Oracle8, 版本 8.0.6. 是最近的主要版本,
- 對 Oracle8i, 版本 8.1.7. 是最近的主要版本.
在早期的主要版本(象 8.1.5 和 8.1.6)中標識出來的任何已知的問題(包括特定資料字典相關問題)幾乎總是在最近的版本(8.1.7) 或
該版本最近的補丁集中被修正。
更多內容請參見下面章節 '基本相容性' 和 '限制'
1. 移植到 Oracle9i release 2 - 9.2.0.x :
-------------------------------------------
採用資料庫完全匯出/匯入的方式直接移植只支援以下源資料庫版本:
- Oracle7 : 7.3.4
- Oracle8 : 8.0.6
- Oracle8i: 8.1.7
- Oracle9i: 9.0.1
2. 移植到 Oracle10g release 1 - 10.1.0.x :
---------------------------------------------
採用資料庫完全匯出/匯入的方式直接移植只支援以下源資料庫版本:
- Oracle8 : 8.0.6
- Oracle8i: 8.1.7
- Oracle9i: 9.0.1 or 9.2.0
3. 移植到 Oracle10g release 2 - 10.2.0.x :
---------------------------------------------
注意首先必須打上指定的最小版本補丁集(或者更高版本的補丁集) !
採用資料庫完全匯出/匯入的方式直接移植只支援以下源資料庫版本:
- Oracle8i : 8.1.7.4
- Oracle9i : 9.0.1.4 (或更高) or 9.2.0.4 (或更高)
- Oracle10g: 10.1.0.2 (或更高)
示例:
1. 從 8.1.7.4 到 9.2.0.7: 使用 8.1.7.4 匯出工具完全匯出資料, 然後用9.2.0.7的匯入工具完全匯入資料是被支援的移植方法.
2. 從 8.0.5.0 到 10.1.0.2: 使用 8.0.5.0 匯出工具完全匯出資料, 然後用10.1.0.2的匯入工具完全匯入資料是 *不* 被支援的移植方法
可選辦法:
a. 首先升級 8.0.5.0 資料庫到 8.0.6.0,應用最近的補丁 8.0.6.3,然後就可以用8.0.6.3匯出工具完全匯出,然後用10.1.0.2的
匯入工具完全匯入資料庫.
b. 或者用8.0.5.0匯出工具完全匯出資料庫,然後在Oracle10g資料庫中預先建立使用者,採用10.1.0.2匯入工具用使用者模式的匯入方式導
入資料。
3. 從 9.2.0.1 到 10.2.0.1: 首先應用9.2.0.4補丁集(或更高版本補丁集,例如9.2.0.8),使用9.2.0.4匯出工具(顯示為9.2.0.8),然後
用10.2.0.1的匯入工具完全匯入資料是被支援的移植方法.
基本相容性.
--------------------
定義 源資料庫 = 匯出資料的資料庫.
定義 目標資料庫 = 匯入資料的資料庫.
1) 總是選取匯出工具的版本小於或等於源/目標資料庫的最低版本。
意思是:
a) 當建立一個匯出檔案匯入到一個更高版本資料庫的(例如: 從 Oracle8i 到 Oracle9i), 使用與源資料庫相同版本的匯出工具
(這個例子中 = 最低版本 = Oracle8i ).
如果使用高版本的匯出工具匯出會失敗。
例如,如果用9.0.1匯出工具匯出8.1.7的資料庫,會得到下面錯誤:
EXP-56 Oracle error 942 encountered
ORA-942 table or view does not exist
EXP-0 Export terminated unsuccessfully
解決方法: 使用最低版本的匯出工具(這個例子中是 8.1.7).
b) 當建立一個匯出檔案匯入到一個更低版本資料庫的(例如: 從 Oracle9i 到 Oracle8i),使用與目標資料庫相同版本的匯出工具
(這個例子中 = 最低版本 = Oracle8i ).
(1) 當執行 Oracle6 匯出工具從 Oracle7 資料庫建立一個 Oracle6 的匯出檔案時,首先必須在 Oracle7 資料庫中執行 CATEXP6.SQL
指令碼,這樣匯出操作時,使得資料庫看起來像是 Oracle6 版本的資料庫
(2) 當執行 Oracle7 匯出工具從 Oracle8/8i 資料庫建立一個 Oracle7 的匯出檔案時,首先必須在 Oracle8/8i 資料庫中執行 CATEXP7.SQL
指令碼,這樣匯出操作時,使得資料庫看起來像是 Oracle7 版本的資料庫
(3) 當執行 Oracle8/8i 匯出工具從 Oracle9i 資料庫建立一個 Oracle8/8i 的匯出檔案時,就不必執行任何特定的操作了.例如,你不必
在 9i 的資料庫中執行 8i 版本的 指令碼檔案 catexp.sql 。你只需要在 9i 資料庫上執行 8i 版本的匯出工具,注意一些 Oracle9i
特定的特性不支援被匯出 (例如 使用DIRECT=YES不會有任何LOBs和物件被匯出).參見"Oracle9i Database Utilities"手冊檢視詳細的限制列表。
2) 在應用一些補丁集同時資料字典中的匯出檢視也會改變,這會導致不能在未打補丁的資料庫上執行打過補丁的匯出工具,因此相同的基本準則也適用
於補丁集的釋出版本:用涉及到的最低資料庫版本的匯出工具來匯出資料。
例如:用9.2.0.5客戶端來匯出9.2.0.1的資料庫會導致以下錯誤資訊
EXP-00008: ORACLE error 942 encountered
ORA-00942: table or view does not exist
EXP-00024: Export views not installed, please notify your DBA
EXP-00000: Export terminated unsuccessfully
為了成功的匯出位於9.2.0.1 $ORACLE_HOME(select * from v$version;)的9.2.0.1的資料庫(select status, version, comp_id from dba_registry;)
使用9.2.0.1的匯出工具而不是9.2.0.2或者更高的版本
否則使用9.2.0.6的匯出客戶端匯出9.2.0.5的資料庫情況下,當使用子分割槽模板匯出分割槽表時會出現下面錯誤:
EXP-00056: ORACLE error 6550 encountered
ORA-06550: line 1, column 48:
PLS-00302: component 'CHECK_MATCH_TEMPLATE' must be declared
ORA-06550: line 1, column 14:
PL/SQL: Statement ignored
解決方法:使用9.2.0.5的匯出客戶端工具,如果你想將資料重新匯入到9.2.0.5或更高的資料庫環境。
3) 總是使用與目標資料庫相同版本的匯入工具.
限制.
------------
對於匯出/匯入工具有以下的限制(詳見矩陣圖):
1. Oracle的匯出檔案僅能被Oracle的匯入工具讀取,因為匯出檔案是以Oracle特定的二進位制檔案儲存的.
2. 任何匯出檔案可以匯入到所有主要版本、補丁及維護髮行版本Oracle中.
3. 匯出檔案不能被先前版本的匯入工具讀取,所以10gR2 (10.2.0.x)的匯出檔案不能被10gR1 (10.1.0.x)的工具匯入(可能錯誤:ORA-2248).9版本的匯出
檔案不能被8i的工具匯入(可能錯誤:IMP-10或IMP-21).
版本8的匯出檔案不能被版本7的工具匯入(可能錯誤:IMP-69和IMP-21).所有這些情況下,匯入會以錯誤IMP-0 "匯入操作不成功地" 終止。
4. 匯入客戶端應能讀取匯出版本5.1.22及更高版本(最高至相同版本)匯出檔案。
5. 匯入工具僅能讀取一個更高維護版本的匯出工具建立的匯出檔案,所以8.1版本的匯出檔案不能用8.0版本的工具匯入,8版本的匯出檔案不能用7版本的工具匯入
6. Oracle6(或更早期)的匯出工具不能在Oracle8或Oracle8i或更高版本的資料庫上使用。
7. 當在一個更高版本的資料庫上執行低版本的匯出工具時,任何在低版本的資料庫中不存在的物件將不會被匯出,例如:版本7的匯出工具不能匯出分割槽表,如果
你需要移動一個版本8的分割槽表到版本7的資料庫中,首先應將它轉換為非分割槽表。
矩陣 1: 匯入到Oracle8(或更低版本)資料庫時應該使用什麼匯出工具(總是使用目標資料庫的匯入工具):
+-----------+--------------------------------------------------------------+
| EXPORT | IMPORT into: |
| from +--------+--------+--------+--------+--------+--------+--------+
| \/ | 5.x | 6.x | 7.0.x | 7.1.x | 7.2.x | 7.3.x | 8.0.x |
+-----------+--------+--------+--------+--------+--------+--------+--------+
| 5.x 1) 2)| EXP5x | EXP5x | EXP5x | EXP5x | EXP5x | EXP5x | EXP5x |
| 6.x 2)| N/S | EXP6x | EXP6x | EXP6x | EXP6x | EXP6x | EXP6x |
+-----------+--------+--------+--------+--------+--------+--------+--------+
| 7.0.x 3)| N/S | EXP6x | EXP70x | EXP70x | EXP70x | EXP70x | EXP70x |
| 7.1.x 3)| N/S | EXP6x | EXP70x | EXP71x | EXP71x | EXP71x | EXP71x |
| 7.2.x 3)| N/S | EXP6x | EXP70x | EXP71x | EXP72x | EXP72x | EXP72x |
| 7.3.x 3)| N/S | EXP6x | EXP70x | EXP71x | EXP72x | EXP73x | EXP73x |
+-----------+--------+--------+--------+--------+--------+--------+--------+
| 8.0.x 4)| Not Supported | EXP70x | EXP71x | EXP72x | EXP73x | EXP80x |
| 8.1.x 4)| Not Supported | EXP70x | EXP71x | EXP72x | EXP73x | EXP80x |
+-----------+--------+--------+--------+--------+--------+--------+--------+
| 9.0.1.x | Not Supported | 5) |
| 9.2.0.x | Not Supported | 5) |
+-----------+--------+--------+--------+--------+--------+--------+--------+
| 10.1.0.x | Not Supported |
| 10.2.0.x | Not Supported |
+-----------+--------+--------+--------+--------+--------+--------+--------+
備註:
1) 匯入工具能讀取5.1.22或更高版本的匯出工具建立的匯出檔案(最高至相同版本).
2) 一個Oracle5 或 Oracle6 的匯出及一個Oracle7 的匯入:
參見oracle工具手冊 Chapter 2 "Import" for special considerations to keep in mind.
3) 從Oracle7匯出到Oracle6 資料庫: 首先必須在Oracle7的資料庫上用用SYS 使用者執行CATEXP6.SQL(該指令碼僅能執行一次以建立版本6的檢視)
4) 從Oracle8, Oracle8i 匯入到Oracle7 資料庫: 首先必須在Oracle8/8i的資料庫上用用SYS 使用者執行CATEXP7.SQL(該指令碼僅能執行一次以建立版本7的檢視)
5) 唯一的情形:最終版本Oracle8(8.0.6)支援使用Oracle8的匯出工具從Oracle9i資料庫匯出到8.0.6的資料庫環境.
矩陣 2: 匯入到Oracle8(或更高版本)資料庫時應該使用什麼匯出工具(總是使用目標資料庫的匯入工具)::
+-----------+--------------------------------------------------------------+
| EXPORT | IMPORT into: |
| from +--------+--------+--------+--------+--------+--------+--------+
| \/ | 8.1.5 | 8.1.6 | 8.1.7 | 9.0.1 | 9.2.0 | 10.1.0 | 10.2.0 |
+-----------+--------+--------+--------+--------+--------+--------+--------+
| 5.x 1) 2)| EXP5x | EXP5x | EXP5x | EXP5x | EXP5x | EXP5x | EXP5x |
| 6.x 2)| EXP6x | EXP6x | EXP6x | EXP6x | EXP6x | EXP6x | EXP6x |
| 7.x 3)| EXP7x | EXP7x | EXP7x | EXP7x | EXP7x | EXP7x | EXP7x |
+-----------+--------+--------+--------+--------+--------+--------+--------+
| 8.0.3 | EXP803 | EXP803 | EXP803 | EXP803 | EXP803 | EXP803 | EXP803 |
| 8.0.4 | EXP804 | EXP804 | EXP804 | EXP804 | EXP804 | EXP804 | EXP804 |
| 8.0.5 | EXP805 | EXP805 | EXP805 | EXP805 | EXP805 | EXP805 | EXP805 |
| 8.0.6 | EXP806 | EXP806 | EXP806 | EXP806 | EXP806 | EXP806 | EXP806 |
+-----------+--------+--------+--------+--------+--------+--------+--------+
| 8.1.5 | EXP815 | EXP815 | EXP815 | EXP815 | EXP815 | EXP815 | EXP815 |
| 8.1.6 | EXP815 | EXP816 | EXP816 | EXP816 | EXP816 | EXP816 | EXP816 |
| 8.1.7 | EXP815 | EXP816 | EXP817 | EXP817 | EXP817 | EXP817 | EXP817 |
+-----------+--------+--------+--------+--------+--------+--------+--------+
| 9.0.1 | N/S | EXP816 | EXP817 | EXP901 | EXP901 | EXP901 | EXP901 |
| 9.2.0 | N/S | N/S | EXP817 | EXP901 | EXP920 | EXP920 | EXP920 |
+-----------+--------+--------+--------+--------+--------+--------+--------+
| 10.1.0 4)| Not Supported | EXP817 | EXP901 | EXP920 | 4) | 4) |
| 10.2.0 4)| Not Supported | EXP817 | EXP901 | EXP920 | 4) | 4) |
+-----------+--------+--------+--------+--------+--------+--------+--------+
備註:
1) 匯入工具能讀取5.1.22或更高版本的匯出工具建立的匯出檔案(最高至相同版本).
2) 一個Oracle5 或 Oracle6 的匯出及一個Oracle8,Oracle8i或Oracle9i 的匯入:
參見oracle工具手冊 Chapter 2 "Import" for special considerations to keep in mind.
3) 一個Oracle7 的匯出及一個Oracle8,Oracle8i或Oracle9i 的匯入:當TO_DATE函式沒有被用在約束上時,DATE日期欄位的約束檢查將失效(在早期的的oracle版本
中沒有該要求)
4) 匯入到Oracle10g資料庫是,為了獲得更高的效能:使用新的oracle資料匯出Export Data Pump (expdp)/匯入Import DataPump (impdp)工具.
示例.
---------
1. 從 7.3.3 到 8.1.6 => 使用 7.3.3 匯出工具從7.3.3資料庫匯出,用 8.1.6的匯入工具匯入到 8.1.6的資料庫。
2. 從 8.1.7 到 8.1.7 => 使用 8.1.7 匯出工具從8.1.7資料庫匯出,用 8.1.7的匯入工具匯入到 8.1.7的資料庫。
3. 從 9.0.1 到 8.1.7 => 使用 8.1.7 匯出工具從9.0.1資料庫匯出,用 8.1.7的匯入工具匯入到 8.1.7的資料庫。
4. 從 8.1.7 到 9.2.0 => 使用 8.1.7 匯出工具從8.1.7資料庫匯出,用 9.2.0的匯入工具匯入到 9.2.0的資料庫。
5. 從 9.0.1 到 9.2.0 => 使用 9.0.1 匯出工具從9.0.1資料庫匯出,用 9.2.0的匯入工具匯入到 9.2.0的資料庫
6. 從 8.1.7 到 7.3.4 => 如果從未執行,先在 8.1.7資料庫上執行CATEXP7.SQL以建立Oracle7資料字典檢視,然後使用 7.3.4 匯出工具
從8.1.7資料庫匯出,用 7.3.4的匯入工具匯入到 7.3.4的資料庫
7. 從 10.1.0 到 8.1.7 => 使用 8.1.7 匯出工具從10.1.0 資料庫匯出,用 8.1.7的匯入工具匯入到 8.1.7的資料庫
8. 從 10.1.0 到 10.0.1 => 使用EXPORT DATA PUMP (expdp) 匯出資料,然後用 IMPORT DATA PUMP (impdp) 匯入資料.
9. 從 9.2.0 到 7.3.4 => 不支援.
10. 從 8.0.5 到 9.0.1 => 不支援使用 FULL=Y 匯出& 用 FULL=Y匯入
11. 從 8.1.6 到 10.1.0 => 不支援使用 FULL=Y 匯出& 用 FULL=Y匯入
可能的錯誤資訊.
------------------------
EXP-3 : no storage definition found for segment(%lu, %lu
Cause : Could not find the storage definitions for cluster/index/table.
Action : Record the error messages and report this as Export internal error.
Remarks: See also Note 274076.1 "EXP-00003 When Exporting From 9.2.0.5.0 or
any Higher Release with a Pre-9.2.0.5.0 Export Client"
EXP-24 : Export views not installed, please notify your DBA
Cause : The necessary export views were not installed.
Action : Ask the database administrator to install the required export views.
EXP-37 : Export views not compatible with database version
Cause : The EXPORT utility is at a higher version than the database version
and is thereby incompatible.
Action : Use the same version of EXPORT utility as the database.
IMP-0 : Import terminated unsuccessfully
Cause : Error encountered.
Action : Check the preceding error message and take appropriate actions.
IMP-9 : Abnormal end of export file
Cause : This is usually caused by an export file generated by an aborted
export session.
Action : Check if file was transferred in Binary-mode. If the export file
was generated by an aborted export session, retry the export
followed by the import, else report this as an Import bug.
IMP-10 : Not a valid export file, header failed verification
Cause : Either it is not a file generated by the Export utility or that
the file is corrupted.
Action : Check if file was transferred in Binary-mode. If the file was
indeed generated by the Export utility, and no compatibility issue
is related, report this as an Import bug.
IMP-21 : operating system error - error code (dec %lu, hex 0x%X)
Cause : Operating system error. Can occur together with IMP-10 or IMP-69.
Action : Check the OS manual for the error code and take appropriate action.
Check for compatibility issues when next errors are IMP-10 or IMP-69.
IMP-23 : Import views not installed, please notify your DBA
Cause : Import views not installed.
Action : Notify DBA to install import views.
IMP-69 : Could not convert to environment national character set's handle
Cause : Internal error.
Action : Contact Worldwide support.
注意事項.
------
1. 使用匯出工具,必須具有CREATE SESSION的資料庫許可權。匯出其他所有者的表,必須有EXP_FULL_DATABASE角色許可權,該角色已經授予所有DBA使用者。
2. 在一個更新的資料庫版本上使用舊版的匯出工具,應該使用SQL*Net 或 Net8訪問資料庫:
EXP /@ ...
3. 當在Oracle8i或更高版本資料庫上使用Oracle7或更低版本的匯出工具時,你必須使用預設的慣用路徑匯出(即:不要指定DIRECT=YES引數),慣用路徑匯出
使用SELECT語句提取表資料,直接路徑的匯出將直接讀取資料,略過SQL命令處理層(解析緩衝)。同樣注意使用Oracle 8.0匯出工具指定(DIRECT=Y)從Oracle 8i
或更高版本資料庫匯出資料庫時不能匯出包含物件和LOBs的資料行
4. 從Oracle10g Release 1 (10.1.0.x)開始我們推出一種新的資料匯出Export DataPump (expdp) 和匯入 Import DataPump (impdp)工具。將來的版本中最初的
匯出工具(exp)會逐步停止使用,然後被export DataPump utility (expdp)代替。最初的匯入工具(imp)仍然會繼續提供以便於匯入最初匯出客戶端建立的匯出
檔案(例如:從Oracle9i匯出),停止使用最初版本的匯出客戶端的準確版本還沒有確定。
5. 為了檢查匯出/匯入檢視的修訂版本,裡可以用一下語句查詢表 sys.props$ :
SQL> SELECT * FROM sys.props$ WHERE name LIKE 'EXPORT%';
NAME VALUE$ COMMENT$
------------------------- ----------- ------------------------
EXPORT_VIEWS_VERSION 8 Export views revision #
EXPORT_VIEWS_VERSION 的值對應如下含義:
+-------------------------------+
| EXPORT_VIEWS_VERSION |
+-------+-----------------------+
| Value | Introduced in Release |
+-------+-----------------------+
| *)| 7.0.* | *) 不相容 - 假設0
| 1 | 7.1.3 |
| 2 | 7.2.1 |
| 3 | 7.2.3 |
| 4 | 8.0.1 |
| 5 | 8.0.2 |
| 6 | 8.0.3 |
| 7 | 8.0.4 |
| 8 | 8.1.6 |
+-------+-----------------------+
6. 欲瞭解匯出/匯入時環境變數NLS_LANG的詳細衝突資訊,見下面FAQ:
Note 227332.1 "NLS considerations in Import/Export - Frequently Asked
Questions"
相關文件
-----------------
Note 291024.1 Compatibility and New Features when Transporting Tablespaces
with Export and Import
Note 277650.1 How to Use Export and Import when Transferring Data Across
Platforms or Across 32-bit and 64-bit Servers
Note 61949.1 Overview of Export and Import in Oracle7
Note 76542.1 NT: Exporting from Oracle8, Importing Into Oracle7
Note 1012189.6 Errors trying to Import Transferred Export File
Note 155477.1 Parameter DIRECT: Conventional Path Export Versus Direct Path
Note 227332.1 NLS considerations in Import/Export - FAQ
A32541-01 "Oracle7 Server Utilities Release 7.3"
Chapter 1 "Export" and Chapter 2 "Import"
A58244-01 "Oracle8 Utilities Release 8.0"
Chapter 1 "Export" and Chapter 2 "Import"
A76955-01 "Oracle8i Utilities Release 2 (8.1.6)"
Chapter 1 "Export" and Chapter 2 "Import"
A90192-01 "Oracle9i Database Utilities Release 1 (9.0.1)"
Chapter 1 "Export" and Chapter 2 "Import"
A96652-01 "Oracle9i Database Utilities Release 2 (9.2)"
Chapter 1 "Export" and Chapter 2 "Import"
B10825-01 "Oracle Database Utilities 10g Release 1 (10.1)"
Chapter 2 "Data Pump Export", Chapter 3 "Data Pump Import",
and Chapter 20 "Original Export and Import"
B14215-01 "Oracle Database Utilities 10g Release 2 (10.2)"
Chapter 2 "Data Pump Export", Chapter 3 "Data Pump Import",
and Chapter 20 "Original Export and Import"
A86632-01 "Oracle8i Migration Release 3 (8.1.7)"
Chapter 9 "Compatibility".
A90191-01 "Oracle9i Database Migration Release 1 (9.0.1)"
Chapter 7 "Upgrading from an Older Release of Oracle to
the New Oracle9i Release"
A96530-01 "Oracle9i Database Migration Release 2 (9.2)"
Chapter 2 "Preparing to Upgrade"
B10763-01 "Oracle Database Upgrade Guide 10g Release 1 (10.1)"
Chapter 2 "Preparing to Upgrade"
B14238-01 "Oracle Database Upgrade Guide 10g Release 2 (10.2)"
Chapter 2 "Preparing to Upgrade"
部署新的環境時,Oracle資料庫匯入匯出轉換工作往往會耗費不少的時間,如果碰到難以解決的問題就更加麻煩了。為了便於更深入地
瞭解Oracle資料庫exp/imp匯出匯入工具的使用,提高資料庫轉換的效率,迴避簡單的常識問題,特翻譯了該篇文章,以饗讀者。
儘管已仔細修訂,或有翻譯不妥、疏漏之處,歡迎指正!
本文及英文版下載
By 在路上...http://www.cnblogs.com/midea0978
目的
-------
本文描述了Oracle版本不同之間EXPORT 和 IMPORT工具的相容性問題.
應用範圍
-------------------
本文適用於Oracle7, Oracle8, Oracle8i, Oracle9i, and Oracle10g資料庫環境,
應用於使用資料庫匯出/匯入工具將資料從 x 版本匯出,然後匯入到 y 版本的情形。
本文指出了應該使用什麼版本的工具來執行資料的匯出/匯入,以及在匯出資料之前如何準備Oracle資料字典。
對於轉換表空間的匯出/匯入,請參考Note 291024.1 "使用匯出/匯入工具轉換表空間的相容性和新特性"
摘要
-------
1. 使用低版本的匯出工具匯出資料的情形.
2. 使用目標資料庫的匯入工具匯入資料.
3. 不再支援使用Oracle7匯出工具匯出Oracle9i資料庫.
不同Oracle版本下Export & Import的相容性矩陣
--------------------------------------------------------------------------
介紹.
-------------
使用Oracle匯出/匯入工具,你可以在資料庫之間傳輸資料,即使這些資料庫位於不同的軟/硬體環境下.
Oracle匯出工具從Oracle資料庫中提取物件定義、表資料並以二進位制的Oracle匯出檔案格式
儲存到檔案或磁帶上。這些檔案可以通過FTP或者物理轉換(磁帶的情形)傳送到不同的地方。
當通過網路傳輸匯出檔案的時候,必須使用二進位制模式,當使用ASCII模式傳輸會導致匯入
資料時出現錯誤,類似 IMP-9 或 IMP-10,後面跟著是 IMP-0.
Oracle匯入工具從匯出檔案中讀取物件定義和表資料,然後插入到Oracle資料庫中.
從Oracle10g Release 1 (10.1.0.x)開始,我們提供新的Export DataPump (expdp) 和
Import DataPump (impdp) 工具.使用Export DataPump匯出的檔案只能被Import DataPump讀取.
並且使用Export DataPump匯出的檔案也只能被對應版本的Import DataPump客戶端讀取。
資料字典檢視.
----------------------
執行匯出/匯入工具之前,必須準備好這些工具必須的一些檢視。可以通過執行下面的指令碼來完成:
UNIX : SQL> @$ORACLE_HOME/rdbms/admin/catexp.sql
Windows: SQL> @%ORACLE_HOME%\rdbms\admin\catexp.sql
指令碼 CATEXP.SQL 必須使用 SYS 執行. 該指令碼被指令碼 CATALOG.SQL 動態呼叫執行. 對於同一個
資料庫,指令碼 CATEXP.SQL 和CATALOG.SQL 僅能執行一次。通常,在執行匯出/匯入前不必再次執行指令碼
(錯誤資訊 EXP-24 或 IMP-23 表明這些檢視不正確).
指令碼 CATEXP.SQL 執行以下任務,為匯出/匯入做準備:
- 在資料字典中建立必要的匯出/匯入檢視;
- 建立角色 EXP_FULL_DATABASE 和 IMP_FULL_DATABASE ;
- 對角色 EXP_FULL_DATABASE 和 IMP_FULL_DATABASE 授予必要的許可權;
- 授予 DBA 角色 EXP_FULL_DATABASE 和 IMP_FULL_DATABASE 的許可權;
- 將匯出/匯入檢視的版本更新到表 sys.props$ 中.
當使用Oracle7匯出工具從Oracle8/8i資料庫(見下面詳細)匯出Oracle7格式的匯出檔案時,必須在Oracle8/8i資料庫用 SYS 使用者
執行 CATEXP7.SQL 指令碼:
UNIX : SQL> @$ORACLE_HOME/rdbms/admin/catexp7.sql
Windows: SQL> @%ORACLE_HOME%\rdbms\admin\catexp7.sql
該指令碼建立檢視使得資料庫看起來像是 Oracle7 版本的資料庫,也意味著檢視中看不到 Oracle8/8i 特定的物件,這樣匯出檔案就
可以在沒有錯誤的情況下匯入到 Oracle7 版本的資料庫.
注意指令碼CATEXP.SQL 和 CATEXP7.SQL 僅僅只需要執行一次:CATEXP.SQL 建立檢視供 Oracle8/8i/9i/10g 匯出工具使用,CATEXP7.SQL
建立檢視供 Oracle7 匯出工具使用。
所以如果這些指令碼已經用 SYS 使用者執行過,就沒必要再執行了。
上面提到的過程同樣適用於用Oracle6 的匯出工具匯出 Oracle7 的資料庫,此時應該在 Oracle7 資料庫中用 SYS 使用者執行 CATEXP6.SQL
指令碼。
注意使用Oracle7工具從Oracle9i資料庫匯出資料已經不再被支援:在一份向下支援的路線圖中,我們只向後支援一個功能性的版本。這
也意味著在Oracle10g資料庫中用 Oracle8 匯出工具匯出資料不被支援(當前只支援在Oracle10g資料庫中使用 Oracle8i 8.1.7 或以上
版本的匯出工具)。
完全資料庫匯出/匯入方式移植到Oracle9i / Oracle10g
------------------------------------------------------------------------------
將資料庫移植到Oracle9i 或 Oracle10g的情形,採用資料庫完全匯出/匯入的方式被限制了,這種情況僅適用於用完全模式(FULL=Y)匯入
採用完全模式匯出的檔案。
不過還可以採用以下方式:
- 使用使用者模式匯入資料 (FROMUSER=... TOUSER=...)
- 使用表模式匯入資料 (FROMUSER=... TABLES=...)
- 用表空間模式匯出/匯入資料 (TRANSPORT_TABLESPACE=Y)
注意匯入客戶端應能讀取匯出版本5.1.22及更高版本(最高至相同版本)的匯出檔案。
該移植限制與移植手冊中描述的可用的升級路徑相關,主要原因是僅支援從主要版本的最終發行版本(例如Oracle8i 8.1.7)直接升級到
一個新的最近的主要版本(例如Oracle9i 9.2.0 ),例如:
- 對 Oracle7, 版本 7.3.4.是最近的主要版本,
- 對 Oracle8, 版本 8.0.6. 是最近的主要版本,
- 對 Oracle8i, 版本 8.1.7. 是最近的主要版本.
在早期的主要版本(象 8.1.5 和 8.1.6)中標識出來的任何已知的問題(包括特定資料字典相關問題)幾乎總是在最近的版本(8.1.7) 或
該版本最近的補丁集中被修正。
更多內容請參見下面章節 '基本相容性' 和 '限制'
1. 移植到 Oracle9i release 2 - 9.2.0.x :
-------------------------------------------
採用資料庫完全匯出/匯入的方式直接移植只支援以下源資料庫版本:
- Oracle7 : 7.3.4
- Oracle8 : 8.0.6
- Oracle8i: 8.1.7
- Oracle9i: 9.0.1
2. 移植到 Oracle10g release 1 - 10.1.0.x :
---------------------------------------------
採用資料庫完全匯出/匯入的方式直接移植只支援以下源資料庫版本:
- Oracle8 : 8.0.6
- Oracle8i: 8.1.7
- Oracle9i: 9.0.1 or 9.2.0
3. 移植到 Oracle10g release 2 - 10.2.0.x :
---------------------------------------------
注意首先必須打上指定的最小版本補丁集(或者更高版本的補丁集) !
採用資料庫完全匯出/匯入的方式直接移植只支援以下源資料庫版本:
- Oracle8i : 8.1.7.4
- Oracle9i : 9.0.1.4 (或更高) or 9.2.0.4 (或更高)
- Oracle10g: 10.1.0.2 (或更高)
示例:
1. 從 8.1.7.4 到 9.2.0.7: 使用 8.1.7.4 匯出工具完全匯出資料, 然後用9.2.0.7的匯入工具完全匯入資料是被支援的移植方法.
2. 從 8.0.5.0 到 10.1.0.2: 使用 8.0.5.0 匯出工具完全匯出資料, 然後用10.1.0.2的匯入工具完全匯入資料是 *不* 被支援的移植方法
可選辦法:
a. 首先升級 8.0.5.0 資料庫到 8.0.6.0,應用最近的補丁 8.0.6.3,然後就可以用8.0.6.3匯出工具完全匯出,然後用10.1.0.2的
匯入工具完全匯入資料庫.
b. 或者用8.0.5.0匯出工具完全匯出資料庫,然後在Oracle10g資料庫中預先建立使用者,採用10.1.0.2匯入工具用使用者模式的匯入方式導
入資料。
3. 從 9.2.0.1 到 10.2.0.1: 首先應用9.2.0.4補丁集(或更高版本補丁集,例如9.2.0.8),使用9.2.0.4匯出工具(顯示為9.2.0.8),然後
用10.2.0.1的匯入工具完全匯入資料是被支援的移植方法.
基本相容性.
--------------------
定義 源資料庫 = 匯出資料的資料庫.
定義 目標資料庫 = 匯入資料的資料庫.
1) 總是選取匯出工具的版本小於或等於源/目標資料庫的最低版本。
意思是:
a) 當建立一個匯出檔案匯入到一個更高版本資料庫的(例如: 從 Oracle8i 到 Oracle9i), 使用與源資料庫相同版本的匯出工具
(這個例子中 = 最低版本 = Oracle8i ).
如果使用高版本的匯出工具匯出會失敗。
例如,如果用9.0.1匯出工具匯出8.1.7的資料庫,會得到下面錯誤:
EXP-56 Oracle error 942 encountered
ORA-942 table or view does not exist
EXP-0 Export terminated unsuccessfully
解決方法: 使用最低版本的匯出工具(這個例子中是 8.1.7).
b) 當建立一個匯出檔案匯入到一個更低版本資料庫的(例如: 從 Oracle9i 到 Oracle8i),使用與目標資料庫相同版本的匯出工具
(這個例子中 = 最低版本 = Oracle8i ).
(1) 當執行 Oracle6 匯出工具從 Oracle7 資料庫建立一個 Oracle6 的匯出檔案時,首先必須在 Oracle7 資料庫中執行 CATEXP6.SQL
指令碼,這樣匯出操作時,使得資料庫看起來像是 Oracle6 版本的資料庫
(2) 當執行 Oracle7 匯出工具從 Oracle8/8i 資料庫建立一個 Oracle7 的匯出檔案時,首先必須在 Oracle8/8i 資料庫中執行 CATEXP7.SQL
指令碼,這樣匯出操作時,使得資料庫看起來像是 Oracle7 版本的資料庫
(3) 當執行 Oracle8/8i 匯出工具從 Oracle9i 資料庫建立一個 Oracle8/8i 的匯出檔案時,就不必執行任何特定的操作了.例如,你不必
在 9i 的資料庫中執行 8i 版本的 指令碼檔案 catexp.sql 。你只需要在 9i 資料庫上執行 8i 版本的匯出工具,注意一些 Oracle9i
特定的特性不支援被匯出 (例如 使用DIRECT=YES不會有任何LOBs和物件被匯出).參見"Oracle9i Database Utilities"手冊檢視詳細的限制列表。
2) 在應用一些補丁集同時資料字典中的匯出檢視也會改變,這會導致不能在未打補丁的資料庫上執行打過補丁的匯出工具,因此相同的基本準則也適用
於補丁集的釋出版本:用涉及到的最低資料庫版本的匯出工具來匯出資料。
例如:用9.2.0.5客戶端來匯出9.2.0.1的資料庫會導致以下錯誤資訊
EXP-00008: ORACLE error 942 encountered
ORA-00942: table or view does not exist
EXP-00024: Export views not installed, please notify your DBA
EXP-00000: Export terminated unsuccessfully
為了成功的匯出位於9.2.0.1 $ORACLE_HOME(select * from v$version;)的9.2.0.1的資料庫(select status, version, comp_id from dba_registry;)
使用9.2.0.1的匯出工具而不是9.2.0.2或者更高的版本
否則使用9.2.0.6的匯出客戶端匯出9.2.0.5的資料庫情況下,當使用子分割槽模板匯出分割槽表時會出現下面錯誤:
EXP-00056: ORACLE error 6550 encountered
ORA-06550: line 1, column 48:
PLS-00302: component 'CHECK_MATCH_TEMPLATE' must be declared
ORA-06550: line 1, column 14:
PL/SQL: Statement ignored
解決方法:使用9.2.0.5的匯出客戶端工具,如果你想將資料重新匯入到9.2.0.5或更高的資料庫環境。
3) 總是使用與目標資料庫相同版本的匯入工具.
限制.
------------
對於匯出/匯入工具有以下的限制(詳見矩陣圖):
1. Oracle的匯出檔案僅能被Oracle的匯入工具讀取,因為匯出檔案是以Oracle特定的二進位制檔案儲存的.
2. 任何匯出檔案可以匯入到所有主要版本、補丁及維護髮行版本Oracle中.
3. 匯出檔案不能被先前版本的匯入工具讀取,所以10gR2 (10.2.0.x)的匯出檔案不能被10gR1 (10.1.0.x)的工具匯入(可能錯誤:ORA-2248).9版本的匯出
檔案不能被8i的工具匯入(可能錯誤:IMP-10或IMP-21).
版本8的匯出檔案不能被版本7的工具匯入(可能錯誤:IMP-69和IMP-21).所有這些情況下,匯入會以錯誤IMP-0 "匯入操作不成功地" 終止。
4. 匯入客戶端應能讀取匯出版本5.1.22及更高版本(最高至相同版本)匯出檔案。
5. 匯入工具僅能讀取一個更高維護版本的匯出工具建立的匯出檔案,所以8.1版本的匯出檔案不能用8.0版本的工具匯入,8版本的匯出檔案不能用7版本的工具匯入
6. Oracle6(或更早期)的匯出工具不能在Oracle8或Oracle8i或更高版本的資料庫上使用。
7. 當在一個更高版本的資料庫上執行低版本的匯出工具時,任何在低版本的資料庫中不存在的物件將不會被匯出,例如:版本7的匯出工具不能匯出分割槽表,如果
你需要移動一個版本8的分割槽表到版本7的資料庫中,首先應將它轉換為非分割槽表。
矩陣 1: 匯入到Oracle8(或更低版本)資料庫時應該使用什麼匯出工具(總是使用目標資料庫的匯入工具):
+-----------+--------------------------------------------------------------+
| EXPORT | IMPORT into: |
| from +--------+--------+--------+--------+--------+--------+--------+
| \/ | 5.x | 6.x | 7.0.x | 7.1.x | 7.2.x | 7.3.x | 8.0.x |
+-----------+--------+--------+--------+--------+--------+--------+--------+
| 5.x 1) 2)| EXP5x | EXP5x | EXP5x | EXP5x | EXP5x | EXP5x | EXP5x |
| 6.x 2)| N/S | EXP6x | EXP6x | EXP6x | EXP6x | EXP6x | EXP6x |
+-----------+--------+--------+--------+--------+--------+--------+--------+
| 7.0.x 3)| N/S | EXP6x | EXP70x | EXP70x | EXP70x | EXP70x | EXP70x |
| 7.1.x 3)| N/S | EXP6x | EXP70x | EXP71x | EXP71x | EXP71x | EXP71x |
| 7.2.x 3)| N/S | EXP6x | EXP70x | EXP71x | EXP72x | EXP72x | EXP72x |
| 7.3.x 3)| N/S | EXP6x | EXP70x | EXP71x | EXP72x | EXP73x | EXP73x |
+-----------+--------+--------+--------+--------+--------+--------+--------+
| 8.0.x 4)| Not Supported | EXP70x | EXP71x | EXP72x | EXP73x | EXP80x |
| 8.1.x 4)| Not Supported | EXP70x | EXP71x | EXP72x | EXP73x | EXP80x |
+-----------+--------+--------+--------+--------+--------+--------+--------+
| 9.0.1.x | Not Supported | 5) |
| 9.2.0.x | Not Supported | 5) |
+-----------+--------+--------+--------+--------+--------+--------+--------+
| 10.1.0.x | Not Supported |
| 10.2.0.x | Not Supported |
+-----------+--------+--------+--------+--------+--------+--------+--------+
備註:
1) 匯入工具能讀取5.1.22或更高版本的匯出工具建立的匯出檔案(最高至相同版本).
2) 一個Oracle5 或 Oracle6 的匯出及一個Oracle7 的匯入:
參見oracle工具手冊 Chapter 2 "Import" for special considerations to keep in mind.
3) 從Oracle7匯出到Oracle6 資料庫: 首先必須在Oracle7的資料庫上用用SYS 使用者執行CATEXP6.SQL(該指令碼僅能執行一次以建立版本6的檢視)
4) 從Oracle8, Oracle8i 匯入到Oracle7 資料庫: 首先必須在Oracle8/8i的資料庫上用用SYS 使用者執行CATEXP7.SQL(該指令碼僅能執行一次以建立版本7的檢視)
5) 唯一的情形:最終版本Oracle8(8.0.6)支援使用Oracle8的匯出工具從Oracle9i資料庫匯出到8.0.6的資料庫環境.
矩陣 2: 匯入到Oracle8(或更高版本)資料庫時應該使用什麼匯出工具(總是使用目標資料庫的匯入工具)::
+-----------+--------------------------------------------------------------+
| EXPORT | IMPORT into: |
| from +--------+--------+--------+--------+--------+--------+--------+
| \/ | 8.1.5 | 8.1.6 | 8.1.7 | 9.0.1 | 9.2.0 | 10.1.0 | 10.2.0 |
+-----------+--------+--------+--------+--------+--------+--------+--------+
| 5.x 1) 2)| EXP5x | EXP5x | EXP5x | EXP5x | EXP5x | EXP5x | EXP5x |
| 6.x 2)| EXP6x | EXP6x | EXP6x | EXP6x | EXP6x | EXP6x | EXP6x |
| 7.x 3)| EXP7x | EXP7x | EXP7x | EXP7x | EXP7x | EXP7x | EXP7x |
+-----------+--------+--------+--------+--------+--------+--------+--------+
| 8.0.3 | EXP803 | EXP803 | EXP803 | EXP803 | EXP803 | EXP803 | EXP803 |
| 8.0.4 | EXP804 | EXP804 | EXP804 | EXP804 | EXP804 | EXP804 | EXP804 |
| 8.0.5 | EXP805 | EXP805 | EXP805 | EXP805 | EXP805 | EXP805 | EXP805 |
| 8.0.6 | EXP806 | EXP806 | EXP806 | EXP806 | EXP806 | EXP806 | EXP806 |
+-----------+--------+--------+--------+--------+--------+--------+--------+
| 8.1.5 | EXP815 | EXP815 | EXP815 | EXP815 | EXP815 | EXP815 | EXP815 |
| 8.1.6 | EXP815 | EXP816 | EXP816 | EXP816 | EXP816 | EXP816 | EXP816 |
| 8.1.7 | EXP815 | EXP816 | EXP817 | EXP817 | EXP817 | EXP817 | EXP817 |
+-----------+--------+--------+--------+--------+--------+--------+--------+
| 9.0.1 | N/S | EXP816 | EXP817 | EXP901 | EXP901 | EXP901 | EXP901 |
| 9.2.0 | N/S | N/S | EXP817 | EXP901 | EXP920 | EXP920 | EXP920 |
+-----------+--------+--------+--------+--------+--------+--------+--------+
| 10.1.0 4)| Not Supported | EXP817 | EXP901 | EXP920 | 4) | 4) |
| 10.2.0 4)| Not Supported | EXP817 | EXP901 | EXP920 | 4) | 4) |
+-----------+--------+--------+--------+--------+--------+--------+--------+
備註:
1) 匯入工具能讀取5.1.22或更高版本的匯出工具建立的匯出檔案(最高至相同版本).
2) 一個Oracle5 或 Oracle6 的匯出及一個Oracle8,Oracle8i或Oracle9i 的匯入:
參見oracle工具手冊 Chapter 2 "Import" for special considerations to keep in mind.
3) 一個Oracle7 的匯出及一個Oracle8,Oracle8i或Oracle9i 的匯入:當TO_DATE函式沒有被用在約束上時,DATE日期欄位的約束檢查將失效(在早期的的oracle版本
中沒有該要求)
4) 匯入到Oracle10g資料庫是,為了獲得更高的效能:使用新的oracle資料匯出Export Data Pump (expdp)/匯入Import DataPump (impdp)工具.
示例.
---------
1. 從 7.3.3 到 8.1.6 => 使用 7.3.3 匯出工具從7.3.3資料庫匯出,用 8.1.6的匯入工具匯入到 8.1.6的資料庫。
2. 從 8.1.7 到 8.1.7 => 使用 8.1.7 匯出工具從8.1.7資料庫匯出,用 8.1.7的匯入工具匯入到 8.1.7的資料庫。
3. 從 9.0.1 到 8.1.7 => 使用 8.1.7 匯出工具從9.0.1資料庫匯出,用 8.1.7的匯入工具匯入到 8.1.7的資料庫。
4. 從 8.1.7 到 9.2.0 => 使用 8.1.7 匯出工具從8.1.7資料庫匯出,用 9.2.0的匯入工具匯入到 9.2.0的資料庫。
5. 從 9.0.1 到 9.2.0 => 使用 9.0.1 匯出工具從9.0.1資料庫匯出,用 9.2.0的匯入工具匯入到 9.2.0的資料庫
6. 從 8.1.7 到 7.3.4 => 如果從未執行,先在 8.1.7資料庫上執行CATEXP7.SQL以建立Oracle7資料字典檢視,然後使用 7.3.4 匯出工具
從8.1.7資料庫匯出,用 7.3.4的匯入工具匯入到 7.3.4的資料庫
7. 從 10.1.0 到 8.1.7 => 使用 8.1.7 匯出工具從10.1.0 資料庫匯出,用 8.1.7的匯入工具匯入到 8.1.7的資料庫
8. 從 10.1.0 到 10.0.1 => 使用EXPORT DATA PUMP (expdp) 匯出資料,然後用 IMPORT DATA PUMP (impdp) 匯入資料.
9. 從 9.2.0 到 7.3.4 => 不支援.
10. 從 8.0.5 到 9.0.1 => 不支援使用 FULL=Y 匯出& 用 FULL=Y匯入
11. 從 8.1.6 到 10.1.0 => 不支援使用 FULL=Y 匯出& 用 FULL=Y匯入
可能的錯誤資訊.
------------------------
EXP-3 : no storage definition found for segment(%lu, %lu
Cause : Could not find the storage definitions for cluster/index/table.
Action : Record the error messages and report this as Export internal error.
Remarks: See also Note 274076.1 "EXP-00003 When Exporting From 9.2.0.5.0 or
any Higher Release with a Pre-9.2.0.5.0 Export Client"
EXP-24 : Export views not installed, please notify your DBA
Cause : The necessary export views were not installed.
Action : Ask the database administrator to install the required export views.
EXP-37 : Export views not compatible with database version
Cause : The EXPORT utility is at a higher version than the database version
and is thereby incompatible.
Action : Use the same version of EXPORT utility as the database.
IMP-0 : Import terminated unsuccessfully
Cause : Error encountered.
Action : Check the preceding error message and take appropriate actions.
IMP-9 : Abnormal end of export file
Cause : This is usually caused by an export file generated by an aborted
export session.
Action : Check if file was transferred in Binary-mode. If the export file
was generated by an aborted export session, retry the export
followed by the import, else report this as an Import bug.
IMP-10 : Not a valid export file, header failed verification
Cause : Either it is not a file generated by the Export utility or that
the file is corrupted.
Action : Check if file was transferred in Binary-mode. If the file was
indeed generated by the Export utility, and no compatibility issue
is related, report this as an Import bug.
IMP-21 : operating system error - error code (dec %lu, hex 0x%X)
Cause : Operating system error. Can occur together with IMP-10 or IMP-69.
Action : Check the OS manual for the error code and take appropriate action.
Check for compatibility issues when next errors are IMP-10 or IMP-69.
IMP-23 : Import views not installed, please notify your DBA
Cause : Import views not installed.
Action : Notify DBA to install import views.
IMP-69 : Could not convert to environment national character set's handle
Cause : Internal error.
Action : Contact Worldwide support.
注意事項.
------
1. 使用匯出工具,必須具有CREATE SESSION的資料庫許可權。匯出其他所有者的表,必須有EXP_FULL_DATABASE角色許可權,該角色已經授予所有DBA使用者。
2. 在一個更新的資料庫版本上使用舊版的匯出工具,應該使用SQL*Net 或 Net8訪問資料庫:
EXP /@ ...
3. 當在Oracle8i或更高版本資料庫上使用Oracle7或更低版本的匯出工具時,你必須使用預設的慣用路徑匯出(即:不要指定DIRECT=YES引數),慣用路徑匯出
使用SELECT語句提取表資料,直接路徑的匯出將直接讀取資料,略過SQL命令處理層(解析緩衝)。同樣注意使用Oracle 8.0匯出工具指定(DIRECT=Y)從Oracle 8i
或更高版本資料庫匯出資料庫時不能匯出包含物件和LOBs的資料行
4. 從Oracle10g Release 1 (10.1.0.x)開始我們推出一種新的資料匯出Export DataPump (expdp) 和匯入 Import DataPump (impdp)工具。將來的版本中最初的
匯出工具(exp)會逐步停止使用,然後被export DataPump utility (expdp)代替。最初的匯入工具(imp)仍然會繼續提供以便於匯入最初匯出客戶端建立的匯出
檔案(例如:從Oracle9i匯出),停止使用最初版本的匯出客戶端的準確版本還沒有確定。
5. 為了檢查匯出/匯入檢視的修訂版本,裡可以用一下語句查詢表 sys.props$ :
SQL> SELECT * FROM sys.props$ WHERE name LIKE 'EXPORT%';
NAME VALUE$ COMMENT$
------------------------- ----------- ------------------------
EXPORT_VIEWS_VERSION 8 Export views revision #
EXPORT_VIEWS_VERSION 的值對應如下含義:
+-------------------------------+
| EXPORT_VIEWS_VERSION |
+-------+-----------------------+
| Value | Introduced in Release |
+-------+-----------------------+
| *)| 7.0.* | *) 不相容 - 假設0
| 1 | 7.1.3 |
| 2 | 7.2.1 |
| 3 | 7.2.3 |
| 4 | 8.0.1 |
| 5 | 8.0.2 |
| 6 | 8.0.3 |
| 7 | 8.0.4 |
| 8 | 8.1.6 |
+-------+-----------------------+
6. 欲瞭解匯出/匯入時環境變數NLS_LANG的詳細衝突資訊,見下面FAQ:
Note 227332.1 "NLS considerations in Import/Export - Frequently Asked
Questions"
相關文件
-----------------
Note 291024.1 Compatibility and New Features when Transporting Tablespaces
with Export and Import
Note 277650.1 How to Use Export and Import when Transferring Data Across
Platforms or Across 32-bit and 64-bit Servers
Note 61949.1 Overview of Export and Import in Oracle7
Note 76542.1 NT: Exporting from Oracle8, Importing Into Oracle7
Note 1012189.6 Errors trying to Import Transferred Export File
Note 155477.1 Parameter DIRECT: Conventional Path Export Versus Direct Path
Note 227332.1 NLS considerations in Import/Export - FAQ
A32541-01 "Oracle7 Server Utilities Release 7.3"
Chapter 1 "Export" and Chapter 2 "Import"
A58244-01 "Oracle8 Utilities Release 8.0"
Chapter 1 "Export" and Chapter 2 "Import"
A76955-01 "Oracle8i Utilities Release 2 (8.1.6)"
Chapter 1 "Export" and Chapter 2 "Import"
A90192-01 "Oracle9i Database Utilities Release 1 (9.0.1)"
Chapter 1 "Export" and Chapter 2 "Import"
A96652-01 "Oracle9i Database Utilities Release 2 (9.2)"
Chapter 1 "Export" and Chapter 2 "Import"
B10825-01 "Oracle Database Utilities 10g Release 1 (10.1)"
Chapter 2 "Data Pump Export", Chapter 3 "Data Pump Import",
and Chapter 20 "Original Export and Import"
B14215-01 "Oracle Database Utilities 10g Release 2 (10.2)"
Chapter 2 "Data Pump Export", Chapter 3 "Data Pump Import",
and Chapter 20 "Original Export and Import"
A86632-01 "Oracle8i Migration Release 3 (8.1.7)"
Chapter 9 "Compatibility".
A90191-01 "Oracle9i Database Migration Release 1 (9.0.1)"
Chapter 7 "Upgrading from an Older Release of Oracle to
the New Oracle9i Release"
A96530-01 "Oracle9i Database Migration Release 2 (9.2)"
Chapter 2 "Preparing to Upgrade"
B10763-01 "Oracle Database Upgrade Guide 10g Release 1 (10.1)"
Chapter 2 "Preparing to Upgrade"
B14238-01 "Oracle Database Upgrade Guide 10g Release 2 (10.2)"
Chapter 2 "Preparing to Upgrade"
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/241379/viewspace-680746/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- RMAN 相容性矩陣及版本比較矩陣
- oracle Export/Import工具使用OracleExportImport
- Oracle RMAN 相容性 及 不同版本和不同平臺之間使用 常見問題說明Oracle
- oracle Export and Import 簡介(轉)OracleExportImport
- Export And Import Between Different Oracle VersionsExportImportOracle
- oracle不同版本之間exp/imp規則Oracle
- export/importExportImport
- Oracle 10.2.0.1 exp 之 full database export and import(實戰)OracleDatabaseExportImport
- 升級到oracle 12c 的相容性矩陣Oracle矩陣
- For Update操作分析——不同Oracle版本之間的差異研究Oracle
- mysql export & importMySqlExportImport
- mysql import and exportMySqlImportExport
- Oracle 12c full transportable export & importOracleExportImport
- statistics的export與import!ExportImport
- DLL的Export和ImportExportImport
- 矩陣-DirectX與OpenGL的不同矩陣
- import,export的支援[nodejs]ImportExportNodeJS
- CUDA 版本矩陣乘矩陣
- OpenMP版本矩陣相乘矩陣
- ES6模組化之export和import的用法ExportImport
- import、require 、export、export default、exports、module exportsImportUIExport
- ES6 import exportImportExport
- DB2 export and importDB2ExportImport
- module.exports、exports 、export default之間的差異區別及與require、import的使用ExportUIImport
- module.exports 、 exports 和 export 、 export default 、 importExportImport
- 新手關於import/export的理解ImportExport
- Import Error: cannot import name ‘export_saved_modelImportErrorExport
- 不同Oracle版本下物化檢視註釋的不同之處Oracle
- 如何防止jQuery庫不同版本之間的衝突jQuery
- Export/import Datas To/from a Csv FileExportImport
- full database export and import(實戰)DatabaseExportImport
- DataPump Export/Import Of LOBs Are Not Executed in ParallelExportImportParallel
- Data Utilities : Export and Import Utilities (57)ExportImport
- javascript引入了不同版本的多個jquery,如何不同版本之間不互相影響JavaScriptjQuery
- Oracle817 版本 不同字符集之間的資料庫匯入 (轉)Oracle資料庫
- aix不同版本安裝oracle的不同版本時的要求AIOracle
- CUDA版本稀疏矩陣向量乘矩陣
- OpenMP 版本稀疏矩陣向量乘矩陣