一、資料泵介紹
1、資料泵優點:
①改進性能(較傳統的exp/imp速度提高1-2個數量級)
②重新開機作業能力
③并行執行能力
④關聯運作作業能力
⑤估算空間需求能力
⑥操作網絡方式
2、資料泵組成部分:
①資料泵核心部分程式包:DBMS_DATAPUMP
②提供中繼資料的程式包:DBMS_MATADATA
③指令行客戶機(實用程式):EXPDP,IMPDP
3、資料泵檔案:
①轉儲檔案:此檔案包含對象資料
②日志檔案:記錄操作資訊和結果
③SQL檔案:将導入作業中的DDL語句寫入SQLFILE指定的參數檔案中
4、資料泵的目錄及檔案位置
以sys或system使用者完成資料泵的導入導出時,可以使用預設的目錄 DATA_PUMP_DIR通過dba_directories表可以檢視;DATA_PUMP_DIR預設目錄位置是:$ORACLE_HOME/admin/database_name/dpdump
二、資料泵導入導出
資料泵的對象可以是表、表空間和使用者
1、資料泵導出
1)按表導出
①全表導出
②按查詢條件導出表
2)按表空間導出
3)按使用者導出
4)導出全庫
2、資料泵導入
1)導入表
①導入表,不改變schema
②導入表,改變schema
2)導入表空間
3)導入到具體使用者
①導入使用者,不改變schema
②導入使用者,改變schema
4)導入全庫
三、資料泵測試
源端
環境:
Oracle 11.2.0.1
源資料庫: vbox88
目标資料庫:vbox99
檢視資料泵目錄:
1)select * from dba_directories;
DATA_PUMP_DIR是預設的,也可以自己建立一個新的目錄

2)建立一個目錄
create directory data_pump as '/u01/data_pump';
其中/u01/data_pump這個目錄要在linux系統中存在,沒有的話先建立這個目錄。
(删除目錄為:drop directory DATA_PUMP;)
3)将目錄DATA_PUMP的讀寫權限賦予scott使用者
grant read,write on directory DATA_PUMP to scott;
1、按表導出
導出表時應檢視下表的大小
1)全表導出
expdp scott/tiger directory=DATA_PUMP dumpfile=emp1.dmp tables=emp1,dept1;
2)按查詢條件導出表
将emp1表deptno為10的資料導出
expdp scott/tiger directory=DATA_PUMP dumpfile=condition.dmp logfile=condition.log tables=emp1 query=\' WHERE deptno\=\10\'
2、按表空間導出
導出前檢視下表空間對應資料檔案的大小
1)expdp \' / as sysdba \' directory=DATA_PUMP dumpfile=soe_tbs.dmp tablespaces=soe;
3、按使用者導出
在導出使用者時應檢視使用者所在的表空間以及表空間的大小
1)expdp \' / as sysdba \' directory=DATA_PUMP dumpfile=scott.dmp schemas=scott;
4、全庫導出
導整個資料庫
expdp system/manager@orcl directory=dump_dir dumpfile=full.dmp full=y;
目标端
1)将源端的資料拷貝到目标端的目錄下
①select * from dba_directories;
② scp 192.168.3.88:/u01/data_pump/* /u01/oracle/dir
1、按表導入
①導入表,不改變schema
impdp scott/tiger directory=DIR pumpfile=emp1.dmp
②導入表,改變schema
impdp \'/ as sysdba \' directory=DIR dumpfile=emp1.dmp remap_schema=scott:wr
2、按表空間導入
在源端檢視有哪些表在使用soe表空間以及其所屬使用者,如果表所在的使用者在目标端沒有則應建立相應使用者,否則在導入的時候會報錯。
1)impdp \' / as sysdba \' directory=DIR dumpfile=soe_tbs.dmp tablespaces=soe
3、按使用者導入
①導入使用者,不改變schema
impdp \' / as sysdba \' directory=DIR dumpfile=scott.dmp
②導入使用者,改變schema
impdp \' / as sysdba \' directory=DIR dumpfile=scott.dmp remap_schema=scott:wr
四、目标庫遠端連接配接源庫導入
①create directory data_pump as '/u01/data_pump';
②grant read,write on directory DATA_PUMP to zyz;
③配置tnsnames
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = xxbora)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
④建立dblink
create public database link orcl18 connect to zyz identified by zyz using 'ORCL18';
select count(*) from zyz.userinfo@orcl18;
⑤導入資料
impdp zyz/zyz directory=data_pump network_link=orcl18 schemas=zyz logfile=zyz.log remap_tablespace=JCTABLESPACE:ZYZTABLESPACE exclude=statistics
⑥收集統計資料
exec dbms_stats.gather_schema_stats(ownname=>'ZYZ',estimate_percent=>10,degree=>8,cascade=>true,granularity=>'ALL');