在window平台下面:
查看協助:exp/imp help=y 可以查看命令參數和參數預設值說明。
同樣有expdp/impdp help=y。exp/imp早在9i就有這樣的用法。expdp/impdp在oracle 10g才出現的用法。oracle 10g版本也支援exp/imp這樣的用法。
exp/imp,expdp/impdp用於資料的邏輯備份。
按照給定的exp/expdp參數說明:可以分別針對錶(查詢),使用者,資料表空間,完整庫的匯入和匯出。
在使用這些命令的時候,最後指定匯出記錄檔的位置(和資料檔案放在一起),這樣即使檔案匯出很長的時間,也記得當時匯出的格式。
下面這些摘自:http://www.cnblogs.com/furenjun/archive/2008/05/20/oracleImpExp.html
資料的匯出
1 將資料庫SampleDB完全匯出,使用者名稱system 密碼manager 匯出到E:/SampleDB.dmp中
exp system/manager@TestDB file=full.dmp full=y log=full.log
--file也可以就寫個檔案名稱:full.dmp,這樣匯出檔案在當前的檔案夾下面。
從匯出的日誌來看 依次匯出有:
. 正在匯出資料表空間定義
. 正在匯出設定檔
. 正在匯出使用者定義
. 正在匯出角色
. 正在匯出資源成本
. 正在匯出回退段定義
. 正在匯出資料庫連結
. 正在匯出序號
. 正在匯出目錄別名
. 正在匯出上下文名空間
. 正在匯出外部函數庫名稱
. 匯出 PUBLIC 類型同義字
. 匯出私人類型同義字
. 正在匯出物件類型定義
. 正在匯出系統過程對象和操作
. 正在匯出 pre-schema 過程對象和操作
. 正在匯出群集定義
. 即將匯出 SYSTEM 的表通過常規路徑 ...
. . 正在匯出表
....
. . 正在匯出分區 COSTS_Q1_1998 57879 行被匯出
. 正在匯出同義字
. 正在匯出視圖
. 正在匯出參考完整性約束條件
. 正在匯出儲存的過程
. 正在匯出運算子
. 正在匯出索引類型
. 正在匯出位元影像, 功能性索引和可擴充索引
. 正在匯出後期表活動
. 正在匯出觸發器
. 正在匯出實體化視圖
. 正在匯出快照日誌
. 正在匯出作業隊列
. 正在匯出重新整理組和子組
. 正在匯出維
. 正在匯出 post-schema 過程對象和操作
. 正在匯出使用者記錄表
. 正在匯出預設值和系統審計選項
. 正在匯出統計
2 將資料庫中system使用者與sys使用者的表匯出
exp system/manager@TestDB file=E:/sampleDB.dmp owner=(system,sys)
3 將資料庫中的表 TableA,TableB 匯出
exp system/manager@TestDB file=E:/sampleDB.dmp tables=(TableA,TableB)
4 將資料庫中的表tableA中的欄位filed1 值為 "王五" 的資料匯出
exp hr/hr tables=(employees) file=query.dmp log=query.log query='where employee_id ">" 110 '
--將會匯出匯出滿足條件的資料。
下面是一些特殊字元的轉化
windows下面的處理:
exp ... query='where deptno=10'
exp ... query='where deptno=''10'''
exp ... query='where deptno"<"10'
在Solaris(C shell)下, 如何指定query參數:
exp ..... query=/"where col1 /< 1000/"
exp ..... query=/"where col1 /< '1000'/"
如果想對dmp檔案進行壓縮,可以在上面命令後面 加上 compress=y 來實現。
資料的匯入
1 將備份資料庫檔案中的資料匯入指定的資料庫SampleDB 中,如果 SampleDB 已存在該表,則不再匯入;
imp system/manager@TEST file=E:/sampleDB.dmp full=y ignore=y
2 將d:/daochu.dmp中的表table1 匯入
imp system/manager@TEST file=E:/sampleDB.dmp tables=(table1)
3. 匯入一個完整資料庫
imp system/manager file=bible_db log=dible_db full=y ignore=y
4. 匯入一個或一組指定使用者所屬的全部表、索引和其他對象
imp system/manager file=seapark log=seapark fromuser=seapark
imp system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)
5. 將一個使用者所屬的資料匯入另一個使用者
imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copy
imp system/manager file=tank log=tank fromuser=(seapark,amy) touser=(seapark1, amy1)
6. 匯入一個表
imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)
7. 從多個檔案匯入
imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4)
log=paycheck, filesize=1G full=y
8. 使用參數檔案
imp system/manager parfile=bible_tables.par
bible_tables.par參數檔案:
#Import the sample tables used for the Oracle8i Database Administrator's
Bible. fromuser=seapark touser=seapark_copy file=seapark log=seapark_import
例 import9.par 內容如下:
FROMUSER=TGPMS
TOUSER=TGPMS2 (註:把表的擁有者由FROMUSER改為TOUSER,FROMUSER和TOUSER的使用者可以不同)
ROWS=Y
INDEXES=Y
GRANTS=Y
CONSTRAINTS=Y
BUFFER=409600
file==/backup/ctgpc_20030623.dmp
log==/backup/import_20030623.log
9. 增量匯入
imp system./manager inctype= RECTORE FULL=Y FILE=A
不少情況下要先將表徹底刪除,然後匯入。
EXP常規模式、EXP直接路徑模式和EXPDP三種方式匯出的效能對比
exp常規模式格式:(不指定exp命令中的direct 參數,預設為N)
exp zhejiang/zhejiang file=/data1_regular.dmp buffer=20480000
EXP直接路徑模式:
exp zhejiang/zhejiang file=/data1_regular.dmp buffer=20480000 direct =y
EXPDP資料泵:
expdp zhejiang/zhejiang dumpfile=zj_datapump.dp directory=d_test schemas=zhejiang