Data Pump(數據泵) 是從oracle10g 引入的全新的,用於快速遷移數據的方式。Data Pump與exp/imp最大的區別是,Data Pump是一個位於服務器端的工具,經過Data Pump導出的轉儲文件只能位於數據庫服務器端,而不能將該轉儲文件導出導客戶端。 Data Pump 有如下優勢:sql
1) 任務能夠暫停,重啓數據庫
2) 能夠只處理某些對象,不處理某些對象,或者只處理某些對象中知足條件的數據。服務器
3) 在不實際執行導出的狀況下,估計須要的磁盤空間oracle
4) 經過db link 將遠程數據庫導出到轉儲文件ide
5) 經過db link,直接將遠程數據庫中的數據導入到當前數據庫工具
6) 導入時能夠修改數據所在的schema名稱,表空間名稱以及數據文件名稱。spa
7) 經過採樣,導出部分數據。3d
8) 只導出元數據。日誌
9) 並行操做。對象
1、expdp - 數據導出
Data Pump導出程序expdp可以按照幾種方式進行,其中包括數據庫、對象模式、表和表空間.
Data Pump經過指定目錄對象(directory object)來控制生成的轉儲文件應該放在服務器哪一個目錄下。
使用create directory語句建立目錄對象
SQL>create directory dump_dir as ‘/oracle/datapump/dumps’
SQL>create directory log_dir as ‘/oracle/datapump/logs’
將目錄對設置爲公共讀寫
SQL>grant read,write on directory dump_dir to public;
受權
SQL>grant read,write on directory dump_dir to scott
一、數據庫導出方式
$expdp system/passwd directory= dump_dir dumpfile=alldb.dmp full=y
二、對象模式導出方式
$expdp scott/tiger directory= dump_dir dumpfile=scott.dmp schemas=scott
三、表導出方式
$expdp scott/tiger directory= dump_dir dumpfile=tables.dmp nologfile=y content=metadata_only
參數說明
nologfile:表示不會操做日誌寫入磁盤
content=metadata_only:表示僅是導出元數據,而不會導出表中的數據,若是content=data_only則剛好相
反,默認狀況下兩者所有導出
四、表空間導出方式
$expdp system/passwd dumpifle=backup:users_ts.dmp logifle=backup:users_ts.log tablespaces=users;
2、impdp - 數據導入
Data Pump導入程序impdp一樣能夠按照所有、對象、表和表空間四種方式。在使用導入數據泵時,比較經常使用的選項爲轉換參數,以下:
REMAP_TABLESPACE:用於將對象從一個表空間導入到另外一個表空間,好比指定
remap_tablespace=users:example
說明將位於users表空間中的對象導入到example表空間
REMAP_SCHEMA:用於將對象跨用戶遷移。例如
remap_schema=hr:scott
指定將hr用戶下的對象遷移到scott用戶下。
舉例:
1.導入指定的表
$impdp user1/passwd directory=backup dumpfile=exp01.dmp tables=(emp) remap_schema=hr:user1 remap_tablespace=users:example
2.導入整個數據庫
$impdp system/passwd full=y dumpfile=backup:alldb.dmp nologfile=y sqlfile=backup:alldb.sql
參數sqlfile=backup:alldb.sql表示將元數據(DDL數據)寫入到指定目錄文件中。backup是一個數據庫目
錄對象
3. 經過db link 進行跨平臺的數據遷移
建立數據庫連接:
SQL>create database link orcl connect to user1 identified by passwd using ‘orcl’
建立impdb 參數文件:imp_par.txt
network_link = orc1
remap_schema = user1:hr
remap_tablespace = example:users
schemas = user1
job_name = cross_network
上述參數文件的目的是將遠程數據庫orcl中用戶user1下的全部對象導出到當前數據庫中hr用戶下。