http://blog.sina.com.cn/s/blog_62f8bf9b0100w9ux.html
Data Pump是服務端工具,只能在服務器上使用。這與exp工具不同。
Data Pump有以下些優點:
1.PARALLEL 並行
2.START_JOB 可控制job進行import作業
3.ATTACH
4.NETWORK_LINK 可以直接通過網絡dblink導入到備庫
5.REMAP_DATAFILE 轉換數據文件的名字
6.REMAP_TABLESPACE 轉換數據所在表空間的名字
7.INCLUDE and EXCLUDE 過濾要導入或不導入的數據
8.可使用交互命令監控expdp和impdp作業過程
9.ESTIMATE_ONLY 空間的估計而不實際導出數據
10.VERSION data pump的版本可兼容的
用戶需要有EXP_FULL_DATABASE或IMP_FULL_DATABASE權限
使用expdp進行導出:
5種模式:
全庫模式(full export)
用戶模式(schema)
表模式(table)
表空間模式(tablespace)
傳輸表空間模式(transportable tablespace)
網絡需要考慮的(Network Considerations)
1.通過@tnsnames連接字符串導出遠程的數據庫,directory使用源數據庫創建的,生成的文件存放在服務端。
expdp hr/hr@inst1 DIRECTORY=dpump_dir1 DUMPFILE=hr.dmp TABLES=employees
2.通過database link導出遠程的數據庫到本地(創建directory及授權,然後expdp)
導出操作中的過濾選項:
數據過濾:
QUERY 和SAMPLE
元數據(對象定義等)過濾:
EXCLUDE 和INCLUDE
1、創建DIRECTORY
create directory dir_dp as '/oradata/expdp';
2、授權
Grant read,write on directory dir_dp to yeyj;
參數:
ATTACH
重新登錄到後臺進行的job操作。
如果使用ATTACH選項,在命令行除了連接字符串和ATTACH選項外,不能指定任何其他選項,示例如下:
Expdp hr/hr ATTACH=hr.export_job
例:
impdp ggs/ggs@oramview network_link=oracl schemas=HZ logfile=imp_tmp1.log
退出界面後可以重新登錄進去
SQL> select job_name from DBA_DATAPUMP_JOBS;
JOB_NAME
------------------------------
SYS_IMPORT_SCHEMA_01
impdp ggs/ggs attach=SYS_IMPORT_SCHEMA_01
COMPRESSION
Default: METADATA_ONLY
可選:METADATA_ONLY / NONE
導出的時候會對元數據進行壓縮
CONTENT
Default: ALL
可選:CONTENT={ALL | DATA_ONLY | METADATA_ONLY}
ALL:將導出對象定義及其所有數據
DATA_ONLY:只導出對象數據
METADATA_ONLY:只導出對象定義 (相當於export裏的ROWS=N)
DIRECTORY
Default: DATA_PUMP_DIR
指定轉儲文件和日誌文件所在的目錄,目錄對象是使用CREATE DIRECTORY語句建立的對象
建立目錄:
CREATE DIRECTORY dump as '/home/oracle/expdp/';
查詢創建了那些子目錄:
SELECT * FROM dba_directories;
DUMPFILE
用於指定轉儲文件的名稱,默認名稱爲expdat.dmp
DUMPFILE=[directory_object:]file_name [, ...]
Directory_object用於指定目錄對象名,file_name用於指定轉儲文件名。
需要注意,如果不指定directory_object,導出工具會自動使用DIRECTORY選項指定的目錄對象
如果指定[directory_object:],會以該DIRECTORY位置爲準。
expdp hr/hr SCHEMAS=hr DIRECTORY=dpump_dir1 DUMPFILE=dpump_dir2:exp1.dmp,exp2%U.dmp PARALLEL=3(dmp文件會放在dpump_dir2目錄下)
ENCRYPTION_PASSWORD
Default: none
ENCRYPTION_PASSWORD = password
給導出的dmp文件中的行數據加密
ESTIMATE
Default: BLOCKS
ESTIMATE={BLOCKS | STATISTICS}
指定估算被導出表所佔用磁盤空間的方法(bytes)
設置爲BLOCKS時,oracle會按照目標對象所佔用的數據塊個數乘以數據塊尺寸估算對象佔用的空間,
設置爲STATISTICS時,根據最近統計值估算對象佔用空間
限制:當數據庫包含壓縮表時,ESTIMATE=BLOCKS得出的結果會不準確,此時建議使用ESTIMATE=STATISTICS
ESTIMATE_ONLY
Default: n
ESTIMATE_ONLY={y | n}
指定是否只估算導出作業所佔用的磁盤空間
expdp hr/hr ESTIMATE_ONLY=y NOLOGFILE=y
EXCLUDE
Default: none
指定執行操作時釋放要排除對象類型或相關對象
EXCLUDE=object_type[:name_clause] [, ...]
object_type用於指定要排除的對象類型
name_clause用於指定要排除的具體對象
舉例:EXCLUDE=INDEX:"LIKE 'EMP%'" 排除所有的以emp開頭的索引
可指定多個EXCLUDE語句,參考include
EXCLUDE和INCLUDE不能同時使用
FILESIZE
Default: 0 (unlimited)
FILESIZE=integer[B | K | M | G]
指定導出文件的最大尺寸
限制:指定的最小的size需要是Data Pump block size的10倍,即:4K*10
FLASHBACK_SCN
Default: none
指定導出到特定SCN時刻的表數據
FLASHBACK_SCN=scn_value
當使用NETWORK_LINK,SCN來源於源數據庫
例:expdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=hr_scn.dmp FLASHBACK_SCN=384632
FLASHBACK_TIME
Default: none
指定導出到特定時間的表數據
FLASHBACK_TIME="TO_TIMESTAMP(time-value)"
FLASHBACK_TIME和FLASHBACK_SCN不能共用。
例:
expdp hr/hr PARFILE=flashback.par
flashback.par:
DIRECTORY=dpump_dir1
DUMPFILE=hr_time.dmp
FLASHBACK_TIME="TO_TIMESTAMP('25-08-2003 14:35:00', 'DD-MM-YYYY HH24:MI:SS')"
FULL
Default: n
指定是否進行全庫導出
FULL={y | n}
需要有EXP_FULL_DATABASE權限
HELP
Default: N
HELP = {y | n}
顯示幫助信息
expdp HELP = y
INCLUDE
Default: none
指定導出時要包含的對象類型及相關對象
object_type[:name_clause] [, ...]
參數可查詢DATABASE_EXPORT_OBJECTS, SCHEMA_EXPORT_OBJECTS, 和 TABLE_EXPORT_OBJECTS
sys下的對象不會被導出。
例:
hr.par:
SCHEMAS=HR
DUMPFILE=expinclude.dmp
DIRECTORY=dpump_dir1
LOGFILE=expinclude.log
INCLUDE=TABLE:"IN ('EMPLOYEES', 'DEPARTMENTS')"
INCLUDE=PROCEDURE
INCLUDE=INDEX:"LIKE 'EMP%'"
或
expdp hr/hr INCLUDE=TABLE DUMPFILE=dpump_dir1:exp_inc.dmp NOLOGFILE=y
JOB_NAME
Default: system-generated name of the form SYS_EXPORT_<mode>_NN (SYS_XXX)
指定要導出作用的名稱
JOB_NAME=jobname_string
可以通過DBA_DATAPUMP_JOBS視圖來查看expdp的job_name,用於expdp的attach參數
LOGFILE
Default: export.log
指定導出日誌文件文件的名稱
LOGFILE=[directory_object:]file_name
只有當指定NOLOGFILE=y時,logfile纔不會被創建。
例:expdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=hr.dmp LOGFILE=hr_export.log
NETWORK_LINK
Default: none
指定數據庫鏈名,如果要將遠程數據庫對象導出到本地例程的轉儲文件中,必須設置該選項
NETWORK_LINK=source_database_link
從dblink連接到遠程數據庫進行操作dba_db_links
create database link test connect to ad1 identified by ad1 using 'yeyj11g';
例:
expdp hr/hr DIRECTORY=dpump_dir1 NETWORK_LINK=source_database_link
DUMPFILE=network_export.dmp LOGFILE=network_export.log
NOLOGFILE
Default: n
指定是否記錄日誌(禁止生成導出日誌文件),默認爲記錄,即:NOLOGFILE=n
NOLOGFILE={y | n}
PARALLEL
Default: 1
指定執行導出操作的並行進程個數,默認值爲1,必須小於或等於dump文件個數
例如:
expdp hr/hr DIRECTORY=dpump_dir1 LOGFILE=parallel_export.log
JOB_NAME=par4_job DUMPFILE=par_exp%u.dmp PARALLEL=4
PARFILE
Default: none
指定導出參數文件的名稱
PARFILE=[directory_path]file_name
例如hr.par內容:
SCHEMAS=HR
DUMPFILE=exp.dmp
DIRECTORY=dpump_dir1
LOGFILE=exp.log
QUERY
Default: none
指定過濾導出數據的where條件
QUERY = [schema.][table_name:] query_clause
例:QUERY=employees:'"WHERE department_id > 10 AND salary > 10000"'
不得與以下子句同時使用:
CONTENT=METADATA_ONLY
ESTIMATE_ONLY
TRANSPORT_TABLESPACES
SAMPLE
Default: None
SAMPLE=[[schema_name.]table_name:]sample_percent
例:SAMPLE="HR"."EMPLOYEES":50
指50%的表HR.EMPLOYEES會被導出。
expdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=sample.dmp SAMPLE=70
SCHEMAS
Default: current user's schema
用於指定執行方案模式導出,默認爲當前用戶方案
SCHEMAS=schema_name [, ...]
例:
expdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=expdat.dmp SCHEMAS=hr,sh,oe
STATUS
Default: 0
指定顯示導出作用進程的詳細狀態,默認值爲0
例:
expdp hr/hr DIRECTORY=dpump_dir1 SCHEMAS=hr,sh STATUS=300
expdp會每隔300秒界面上顯示導出的狀態。
TABLES
Default: none
指定表模式導出
TABLES=[schema_name.]table_name[:partition_name] [, ...]
Schema_name用於指定方案名,table_name用於指定導出的表名,partition_name用於指定要導出的分區名.
限制:
分區表(table partitions)不支持使用NETWORK_LINK進行導出
TABLESPACES
Default: none
指定要導出表空間列表
TABLESPACES=tablespace_name [, ...]
例:
expdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=tbs.dmp TABLESPACES=tbs_4, tbs_5, tbs_6
TRANSPORT_FULL_CHECK
Default: n
該選項用於指定被傳輸表空間和未傳輸表空間關聯關係的檢查方式,默認爲N.
當設置爲Y時,導出作用會檢查表空間直接的完整關聯關係,如果表空間所在表空間或其索引所在的表空間只有一個表空間被搬移,將顯示錯誤信息.當設置爲N時, 導出作用只檢查單端依賴,如果搬移索引所在表空間,但未搬移表所在表空間,將顯示出錯信息,如果搬移表所在表空間,未搬移索引所在表空間,則不會顯示錯誤信息
TRANSPORT_FULL_CHECK={y | n}
TRANSPORT_TABLESPACES
Default: none
指定表空間模式導出元數據
限制:導出job不能停止後再運行;併發(parallelism)只能爲1
例:expdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=tts.dmp TRANSPORT_TABLESPACES=tbs_1 TRANSPORT_FULL_CHECK=y LOGFILE=tts.log
VERSION
Default: COMPATIBLE
被導出對象的數據庫版本,默認值爲COMPATIBLE
VERSION={COMPATIBLE | LATEST | version_string}
爲COMPATIBLE時,會根據初始化參數COMPATIBLE生成對象元數據;爲LATEST時,會根據數據庫的實際版本生成對象元數據.version_string用於指定數據庫版本字符串
========================================================================================================
expdp和export工具相比除了速度上有了大幅度的提高外還有個更大的好處是交互式界面,可以更爲自由方便
交互式界面
1.從連接界面Ctrl+C
2.使用ATTACH子句連接進入job
交互式命令:
ADD_FILE
ADD_FILE=[directory_object]file_name [,...]
文件名可以包括替代變量%U
根據FILESIZE來自動控制
Export> ADD_FILE=hr2.dmp, dpump_dir2:hr3.dmp
CONTINUE_CLIENT
從交互式界面進入到登錄模式
Export> CONTINUE_CLIENT
EXIT_CLIENT
離開當前交互式界面。對expdp狀態可以從log日誌或者查詢USER_DATAPUMP_JOBS或V$SESSION_LONGOPS視圖
FILESIZE
FILESIZE=number
參見expdp命令FILESIZE
HELP
交互式界面的幫助信息
KILL_JOB
會殺死當前的job,同時離開expdp界面。job不能再重新開始,dmp文件會被自動刪除,但log日誌仍保留
PARALLEL
參見expdp命令PARALLEL
START_JOB
開始當前attach連接的job,一般在stop_job後使用
STOP_JOB
STOP_JOB[=IMMEDIATE]
STATUS
STATUS[=integer]
參見expdp命令STATUS
expdp導出的流程圖解
exp初始(ExpInit)
exp導出文件相關的選項(ExpFileOpts)
exp交互式界面的相關選項(CTRL+C)(ExpDynOpts)