oracle 導入導出功能


關於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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM