爲了區別於Oracle 10g引入的書庫泵導出和導入實用程序,將以前的導入和導出實用程序稱爲原始導出和導入實用程序。原始導入和導出實用程序,調用EXP和IMP命令。數據泵導出和導入實用程序,調用EXPDB和IMPDB命令。接下來,將詳細介紹原始導出和導入實用程序的用法。
1.導出和導入實用程序
導出和導入實用程序提供一種在Oracle數據庫之間傳遞數據對象的簡單方式,即使他們駐留在不同的硬件和軟件配置平臺上。
當你在數據庫中運行導出時,對象(例如表)以及相關聯的對象(例如,索引,註釋和授權)被提取。這些提取數據被寫入到一個導出備份文件中。導入實用程序從這備份文件中讀取對象定義和表數據。
導出文件是Oracle二進制格式的備份文件,通常位於磁盤或磁帶上。
導出備份文件只能由Oracle導入實用程序讀取。導入實用程序的版本不能早於導出實用程序用於創建備份文件的版本。
2.使用導出和導入之前
在使用導出和導入之前,必須確保以下項目:
- 運行 catexp.sql或 catalog.sql腳本。
- 確保有足夠的磁盤或磁盤存儲導出文件寫入
- 驗證你是否有所需訪問權限。
3.運行 catexp.sql或 catalog.sql腳本
爲了使用導出和導入,你必須運行腳本 catexp.sql或 catalog.sql。Oracle 10g之後的數據庫已經創建,不需要手動運行。
catexp.sql或 catalog.sql腳本只需要在數據庫上運行一次。爲了數據庫準備導出和導入操作,該腳本執行以下任務:
- 在數據字典中創建導出和導入必需的視圖。
- 創建EXP_FULL_DATABASE角色。
- 爲EXP_FULL_DATABASE和IMP_FULL_DATABASE角色分配必需的權限。
- 爲DBA角色分配EXP_FULL_DATABASE和IMP_FULL_DATABASE角色。
- 記錄安裝的CATEXP.SQL版本。
4.導出和導入操作訪問權限
爲了導出和導入,必須有 CREATE SESSION
權限。這個權限屬於CONNECT角色,CONNECT角色在數據庫創建時被建立。爲了導出其他用戶的表,必須要有 EXP_FULL_DATABASE
權限。這些角色是被DBA授權的。
如果系統權限中沒有包含EXP_FULL_DATABASE角色,不能導出包含其他用戶模式的對象。例如,你不能導出其他用戶模式的一張表,即使給這張創建了同義詞。
一些系統模式不能被導出,因爲它們不是用戶模式。它們包含了Oracle管理數據和元數據,不能被導出的模式包括SYS,ORDSYS和MDSYS。
你可以執行導入操作,即使你不能創建導出文件。記住通過
EXP_FULL_DATABASE
角色用戶創建的導出文件,必須使用IMP_FULL_DATABASE 角色導入。這兩個角色通常都是DBA分配的。
5.調用導出和導入
你可以通過以下任意一種方法調用導出和導入:
- 命令行輸入
- 參數文件
- 交互模式
6.導出和導入模式
導入和導入功能支持4中操作模式:
- FULL:導出和導入整個數據庫。只有擁有EXP_FULL_DATABASE和IMP_FULL_DATABASE角色的用戶可以使用此模式。使用FULL參數指定此模式。
- Tablespace:允許有權限的用戶將一組表空間從Oracle一個用戶移到另一用戶。使用TRANSPORT_TABLESPACE參數指定此模式。
- User:允許你導出和導入屬於你的所有對象(例如,表,索引,授權和存儲過程)。有權限的用戶在用戶模式可以導入一組指定用戶模式的所有對象。使用OWNER參數在導出時指定此模式,使用FROMUSER參數在導入時指定此模式。
- Table:允許你導入和導致指定表和分區。有權限的用戶可以通過指定模式包含限定的表。未指定任何表的模式名稱,默認是導出者模式名稱。使用TABLES參數指定此模式。
7.導出參數
在WINDOWS平臺上,可以在DOS命令框下輸入exp help=y,查看exp命令的參數:
例如:
C:\Users\chiclewu>exp help=y
Export: Release 11.1.0.6.0 - Production on 星期一 11月 18 10:12:18 2013
Copyright (c) 1982, 2007, Oracle. All rights reserved.
通過輸入 EXP 命令和您的用戶名/口令, 導出
操作將提示您輸入參數:
例如: EXP SCOTT/TIGER
或者, 您也可以通過輸入跟有各種參數的 EXP 命令來控制導出
的運行方式。要指定參數, 您可以使用關鍵字:
格式: EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
例如: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)
或 TABLES=(T1:P1,T1:P2), 如果 T1 是分區表
USERID 必須是命令行中的第一個參數。
關鍵字 說明 (默認值) 關鍵字 說明 (默認值)
--------------------------------------------------------------------------
USERID 用戶名/口令 FULL 導出整個文件 (N)
BUFFER 數據緩衝區大小 OWNER 所有者用戶名列表
FILE 輸出文件 (EXPDAT.DMP) TABLES 表名列表
COMPRESS 導入到一個區 (Y) RECORDLENGTH IO 記錄的長度
GRANTS 導出權限 (Y) INCTYPE 增量導出類型
INDEXES 導出索引 (Y) RECORD 跟蹤增量導出 (Y)
DIRECT 直接路徑 (N) TRIGGERS 導出觸發器 (Y)
LOG 屏幕輸出的日誌文件 STATISTICS 分析對象 (ESTIMATE)
ROWS 導出數據行 (Y) PARFILE 參數文件名
CONSISTENT 交叉表的一致性 (N) CONSTRAINTS 導出的約束條件 (Y)
OBJECT_CONSISTENT 只在對象導出期間設置爲只讀的事務處理 (N)
FEEDBACK 每 x 行顯示進度 (0)
FILESIZE 每個轉儲文件的最大大小
FLASHBACK_SCN 用於將會話快照設置回以前狀態的 SCN
FLASHBACK_TIME 用於獲取最接近指定時間的 SCN 的時間
QUERY 用於導出表的子集的 select 子句
RESUMABLE 遇到與空格相關的錯誤時掛起 (N)
RESUMABLE_NAME 用於標識可恢復語句的文本字符串
RESUMABLE_TIMEOUT RESUMABLE 的等待時間
TTS_FULL_CHECK 對 TTS 執行完整或部分相關性檢查
TABLESPACES 要導出的表空間列表
TRANSPORT_TABLESPACE 導出可傳輸的表空間元數據 (N)
TEMPLATE 調用 iAS 模式導出的模板名
成功終止導出, 沒有出現警告。
8.導出例子
分別使用4種模式導出數據庫。
8.1導出整個數據庫
C:\Users\chiclewu>exp system/manager@REDHAT_VIRTUAL file='D:\oradata\backup\dba.dmp' full=y
8.2導出SYSTEM和USERS表空間
C:\Users\chiclewu>exp system/manager@REDHAT_VIRTUAL file='D:\oradata\backup\dba.dmp' tablespaces=(SYSTEM,USERS)
8.3 導出SYSTEM和SCOTT用戶
C:\Users\chiclewu>exp system/manager@REDHAT_VIRTUAL file='D:\oradata\backup\dba.dmp' owner=(SYSTEM,SCOTT)
8.4導出SCOTT用戶下EMP表和DEPT表
C:\Users\chiclewu>exp scott/tiger@REDHAT_VIRTUAL file='D:\oradata\backup\scott.dmp' tables=(emp,dept)
9.導入參數
在WINDOWS平臺上,可以在DOS命令框下輸入imp help=y,查看imp命令的參數:
C:\Users\chiclewu>imp help=y
Import: Release 11.1.0.6.0 - Production on 星期一 11月 18 22:01:21 2013
Copyright (c) 1982, 2007, Oracle. All rights reserved.
通過輸入 IMP 命令和您的用戶名/口令, 導入
操作將提示您輸入參數:
例如: IMP SCOTT/TIGER
或者, 可以通過輸入 IMP 命令和各種參數來控制導入
的運行方式。要指定參數, 您可以使用關鍵字:
格式: IMP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
例如: IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N
或 TABLES=(T1:P1,T1:P2), 如果 T1 是分區表
USERID 必須是命令行中的第一個參數。
關鍵字 說明 (默認值) 關鍵字 說明 (默認值)
-----------------------------------------------------------------------
USERID 用戶名/口令 FULL 導入整個文件 (N)
BUFFER 數據緩衝區大小 FROMUSER 所有者用戶名列表
FILE 輸入文件 (EXPDAT.DMP) TOUSER 用戶名列表
SHOW 只列出文件內容 (N) TABLES 表名列表
IGNORE 忽略創建錯誤 (N) RECORDLENGTH IO 記錄的長度
GRANTS 導入權限 (Y) INCTYPE 增量導入類型
INDEXES 導入索引 (Y) COMMIT 提交數組插入 (N)
ROWS 導入數據行 (Y) PARFILE 參數文件名
LOG 屏幕輸出的日誌文件 CONSTRAINTS 導入限制 (Y)
DESTROY 覆蓋表空間數據文件 (N)
INDEXFILE 將表/索引信息寫入指定的文件
SKIP_UNUSABLE_INDEXES 跳過不可用索引的維護 (N)
FEEDBACK 每 x 行顯示進度 (0)
TOID_NOVALIDATE 跳過指定類型 ID 的驗證
FILESIZE 每個轉儲文件的最大大小
STATISTICS 始終導入預計算的統計信息
RESUMABLE 在遇到有關空間的錯誤時掛起 (N)
RESUMABLE_NAME 用來標識可恢復語句的文本字符串
RESUMABLE_TIMEOUT RESUMABLE 的等待時間
COMPILE 編譯過程, 程序包和函數 (Y)
STREAMS_CONFIGURATION 導入流的一般元數據 (Y)
STREAMS_INSTANTIATION 導入流實例化元數據 (N)
下列關鍵字僅用於可傳輸的表空間
TRANSPORT_TABLESPACE 導入可傳輸的表空間元數據 (N)
TABLESPACES 將要傳輸到數據庫的表空間
DATAFILES 將要傳輸到數據庫的數據文件
TTS_OWNERS 擁有可傳輸表空間集中數據的用戶
成功終止導入, 沒有出現警告。
10.導入例子
分別使用4種模式導出數據庫。
10.1導入整個數據庫
C:\Users\chiclewu>imp system/manager@REDHAT_VIRTUAL file='D:\oradata\backup\dba.dmp' full=y ignore=y
10.2導入SYSTEM和USERS表空間
C:\Users\chiclewu>imp system/manager@REDHAT_VIRTUAL file='D:\oradata\backup\dba.dmp' tablespaces=(SYSTEM,USERS) ignore=y
10.3 導入SYSTEM和SCOTT用戶
C:\Users\chiclewu>imp system/manager@REDHAT_VIRTUAL file='D:\oradata\backup\dba.dmp' fromuser=(SYSTEM,SCOTT) ignore=y
10.4導入SCOTT用戶下EMP表和DEPT表
C:\Users\chiclewu>imp scott/tiger@REDHAT_VIRTUAL file='D:\oradata\backup\scott.dmp' tables=(emp,dept) ignore=y