關於expdp和impdp 使用EXPDP和IMPDP時應該注意的事項:
EXP和IMP是客戶端工具程序,它們既可以在客戶端使用,也可以在服務端使用。 - EXPDP和IMPDP是服務端的工具程序,他們只能在ORACLE服務端使用,不能在客戶端使用。
IMP只適用於EXP導出的文件,不適用於EXPDP導出文件;
IMPDP只適用於EXPDP導出的文件,而不適用於EXP導出文件。
*初次導入導出庫時必須先創建 DIRECTORY (指定轉儲文件和日志文件所在的目錄),否則會報錯:LRM-00112: 參數 ‘directory’ 不允許有多個值
*導入導出應在cmd的dos命令提示符下執行,而不是在sqlplus里面,否則會報錯:sp2-0734:未知的命令開頭’imp 忽略了剩余行默認分類
*導入導出時,用戶必須需要dba權限,否則導入導出失敗,會報權限不足。
1.給用戶授予dba權限:grant dba to username;(一般正式環境不允許給普通用戶授予dba權限,可以臨時授予權限,執行完導入導出再刪除)
2.導入導出語句增加dba權限
expdp userid='username/passname as sysdba' schemas=username ... impdp userid='username/passname@orcl as sysdba' schemas=username ...
- 1
- 2
一、創建邏輯目錄
1.創建邏輯目錄,該命令不會在操作系統創建真正的目錄,最好以system等管理員創建。
create directory PUMPDRA as ‘D:\app\admin\orcl\dpdump’
2查看管理理員目錄(同時查看操作系統是否存在,因為Oracle並不關心該目錄是否存在,如果不存在,則出錯)
select * from dba_directories;
3、給moe用戶賦予在指定目錄的操作權限,最好以system等管理員賦予。
(sys是超級管理員,system是管理員)
grant read,write on directory PUMPDRA to moe;
二、 導出數據庫
1、只導出本版本的庫(本版本:導出的庫和導入的庫的版本號一致)
1)按用戶導
expdp moe/root@orcl schemas=moe dumpfile=expdp.dmp
DIRECTORY=PUMPDRA ;將數據庫moe完全導出,用戶名moe,密碼root,SID=orcl ,導出文件名dumpfile,導出邏輯目錄directory,
schemas該方案用於指定執行方案模式導出,默認為當前用戶方案.
2)並行進程parallel
expdp moe/root@orcl directory=pumpdra dumpfile=expdp.dmp
parallel=40 job_name=moe3
3)按表名導
expdp moe/root@orcl TABLES=table1,table2 dumpfile=expdp.dmp
directory=pumpdra;
4)按查詢條件導 (導出表table1中table_id為20的數據)
expdp moe/root@orcl directory=pumpdra dumpfile=expdp.dmp Tables=table1
query=’where table_id=20’;
5)按表空間導
expdp moe/root DIRECTORY=pumpdra DUMPFILE=tablespace.dmp
TABLESPACES=temp,example;tablespaces指定要導出表空間列表
6)導整個數據庫
expdp moe/root DIRECTORY=pumpdra DUMPFILE=full.dmp FULL=y;
full=y 表示全庫導出。full總共有2個可選項yes(y)/no(n),缺省情況下full=no,這時只會將該用戶下的對象導出。
2.導出到不同版本(version指定的是 執行導入 數據庫的版本)
10g導入11g數據庫
expdp moe/root@orcl schemas=moe dumpfile=expdp.dmp
DIRECTORY=PUMPDRA VERSION=11.2.0.1.0或者11g導入10g數據庫
expdp userid=’moe/root@orcl as sysdba’ schemas=moe directory= pumpdra dumpfile=expdp.dmp logfile=expdp.log version=10.2.0.1.0
VERSION指定被導出對象的數據庫版本,默認值為COMPATIBLE.
三、導入數據庫
后綴名是大寫的DMP則是通過expdp導出的
1.通過impdp導入(只導入本版本的庫,庫是通過expdp導出)
1)導入到moe用戶,密碼為root,SID=orcl
impdp moe/root@orcl DIRECTORY=db_bak DUMPFILE=expdp.dmp SCHEMAS=moe;
或者
impdp userid=’moe/root@orcl as sysdba’ schemas=moe directory=db_bak dumpfile=HBHY20161230.DMP
如果要導入的目標數據庫用戶名,與新建的用戶名不一樣,增加參數REMAP_SCHEMA 即:
impdp userid=’moe/root@orcl as sysdba’ schemas=moe directory=db_bak dumpfile=HBHY20161230.DMP logfile= HBHY20161230.log REMAP_SCHEMA=moe:MOE_TEST
其中USERID值中的 moe 是 要導入的目標數據庫用戶名,MOE_TEST是新建的用戶名
如果表空間不同,需要增加 remap_tablespace=源表空間:目標表空間
如果是11g數據庫導入到10g數據庫,則增加參數version
impdp userid=’moe/root@orcl as sysdba’ schemas=moe directory=db_bak dumpfile=HBHY20161230.DMP version=10.2.0.1.0
3)導入表空間SOA
impdp moe/root@orcl DIRECTORY=db_bak DUMPFILE=tablespace.dmp TABLESPACES=SOA;
4)追加數據
impdp moe/root DIRECTORY=db_bak DUMPFILE=expdp.dmp SCHEMAS=moe TABLE_EXISTS_ACTION=append;
2、通過exp導出
1)將數據庫orcl完全導出,導出到d:\daochu.dmp文件中
exp moe/root@orcl file=d:\daochu.dmp full=y
2)將數據庫orcl中moe用戶與jyb用戶的對象導出
exp moe/root@orcl file=d:\daochu.dmp owner=(moe,jyb)
3)將數據庫orcl中的moe用戶的表table1、table2導出
exp moe/root@orcl file= d:\daochu.dmp tables=(table1,table2)
4、將數據庫orcl中的表空間testSpace導出
exp moe/root@orcl file=d:\daochu.dmp tablespaces=(testSpace)
通過imp導入
1 將D:\daochu.dmp 中的數據導入 orcl數據庫中。
imp moe/root@orcl file=d:\daochu.dmp
如果moe用戶下已經存在導入的表,需增加參數ignore,覆蓋導入
imp moe/root@orcl file=d:\daochu.dmp ignore=y
2 將d:\daochu.dmp中的表table1 導入
imp moe/root@orcl file=d:\daochu.dmp tables=(table1)
轉至 https://blog.csdn.net/queen_xzx/article/details/53842092