expdp 詳解及實例

1.數據泵expdp導出工具與傳統的exp導出工具的區別
1)exp是客戶端程序,既可以在客戶端使用,也可以在服務器端使用;
2)expdp是服務器端工具,只能在ORACLE服務器端使用,不能在客戶端使用;
3)這兩個工具生成的備份文件不能被對方與之對應的導入工具使用;
4)expdp在靈活性和功能性上與exp相比,有質上的飛躍。

2.expdp命令行選項列表
使用“-help”選項獲得expdp命令可用的選項列表和簡單的註釋信息。
ora10g@linux5 /expdp$ expdp help=y
……
Keyword               Description (Default)
------------------------------------------------------------------------------
ATTACH                Attach to existing job, e.g. ATTACH [=job name].
COMPRESSION           Reduce size of dumpfile contents where valid
                      keyword values are: (METADATA_ONLY) and NONE.
CONTENT               Specifies data to unload where the valid keywords are:
                      (ALL), DATA_ONLY, and METADATA_ONLY.
DIRECTORY             Directory object to be used for dumpfiles and logfiles.
DUMPFILE              List of destination dump files (expdat.dmp),
                      e.g. DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp.
ENCRYPTION_PASSWORD   Password key for creating encrypted column data.
ESTIMATE              Calculate job estimates where the valid keywords are:
                      (BLOCKS) and STATISTICS.
ESTIMATE_ONLY         Calculate job estimates without performing the export.
EXCLUDE               Exclude specific object types, e.g. EXCLUDE=TABLE:EMP.
FILESIZE              Specify the size of each dumpfile in units of bytes.
FLASHBACK_SCN         SCN used to set session snapshot back to.
FLASHBACK_TIME        Time used to get the SCN closest to the specified time.
FULL                  Export entire database (N).
HELP                  Display Help messages (N).
INCLUDE               Include specific object types, e.g. INCLUDE=TABLE_DATA.
JOB_NAME              Name of export job to create.
LOGFILE               Log file name (export.log).
NETWORK_LINK          Name of remote database link to the source system.
NOLOGFILE             Do not write logfile (N).
PARALLEL              Change the number of active workers for current job.
PARFILE               Specify parameter file.
QUERY                 Predicate clause used to export a subset of a table.
SAMPLE                Percentage of data to be exported;
SCHEMAS               List of schemas to export (login schema).
STATUS                Frequency (secs) job status is to be monitored where
                      the default (0) will show new status when available.
TABLES                Identifies a list of tables to export - one schema only.
TABLESPACES           Identifies a list of tablespaces to export.
TRANSPORT_FULL_CHECK  Verify storage segments of all tables (N).
TRANSPORT_TABLESPACES List of tablespaces from which metadata will be unloaded.
VERSION               Version of objects to export where valid keywords are:
                      (COMPATIBLE), LATEST, or any valid database version.

The following commands are valid while in interactive mode.
Note: abbreviations are allowed

Command               Description
------------------------------------------------------------------------------
ADD_FILE              Add dumpfile to dumpfile set.
CONTINUE_CLIENT       Return to logging mode. Job will be re-started if idle.
EXIT_CLIENT           Quit client session and leave job running.
FILESIZE              Default filesize (bytes) for subsequent ADD_FILE commands.
HELP                  Summarize interactive commands.
KILL_JOB              Detach and delete job.
PARALLEL              Change the number of active workers for current job.
                      PARALLEL=.
START_JOB             Start/resume current job.
STATUS                Frequency (secs) job status is to be monitored where
                      the default (0) will show new status when available.
                      STATUS[=interval]
STOP_JOB              Orderly shutdown of job execution and exits the client.
                      STOP_JOB=IMMEDIATE performs an immediate shutdown of the
                      Data Pump job.


3.簡單給出expdp命令行選項的註釋
1)ATTACH
該選項用於與已存在導出作業建立關聯。語法如下:
ATTACH [=[schema_name.]job_name]
schema_name表示用戶名,job_name表示導出的作業名。注意,如果使用ATTACH選項,在命令行除了連接字符串和ATTACH選項外,不能指定任何其他選項。可以通過查詢DBA_DATAPUMP_JOBS獲得系統中現有的作業信息。
示例如下:
expdp secooler/secooler ATTACH=secooler.export_job

2)COMPRESSION
表示是否壓縮數據庫對象的元數據,這裏只提供兩個選項:METADATA_ONLY和NONE。在10g這個版本中這個選項的意義不大,因爲元數據本身很小,壓縮與否對最終導出的文件大小的影響甚微。11g中對這個選項進行了增強,真正的提供了數據壓縮的功能。具體請參考文章《【COMPRESS】11g中表壓縮技術的長足進步》(http://space.itpub.net/519536/viewspace-662005)。
COMPRESSION=(METADATA_ONLY | NONE)

3)CONTENT
該選項用於指定要導出的內容。默認值爲ALL。
CONTENT={ALL | DATA_ONLY | METADATA_ONLY}
當設置CONTENT爲ALL時,會導出對象元數據及對象數據;當設置爲DATA_ONLY時,只導出對象數據;當設置爲METADATA_ONLY時,只導出對象元數據。
示例如下:
expdp secooler/secooler DIRECTORY=dump_dir DUMPFILE=test.dump CONTENT=METADATA_ONLY

4)DIRECTORY
指定轉儲文件和日誌文件所在的目錄,給定的參數是一個DIRECTORY數據庫對象,是通過CREATE DIRECTORY語句建立的。後文會有這方面的演示。
DIRECTORY=directory_object
示例如下:
expdp secooler/secooler DIRECTORY=dump_dir DUMPFILE=test.dump

5)DUMPFILE
用於指定轉儲文件的名稱,默認名稱爲expdat.dmp。
DUMPFILE=[directory_object:]file_name [, ...]
directory_object用於指定目錄對象名,file_name用於指定轉儲文件名。如果不給定directory_object,導出工具會自動使用DIRECTORY選項指定的目錄對象。
這個參數可以結合FILESIZE參數一起使用,達到生成多個轉儲文件的目的。
注意,如果指定路徑下已經存在待生成的導出文件,導出過程中將會報錯退出。
expdp secooler/secooler DIRECTORY=dump_dir1 DUMPFILE=dump_dir2:test.dmp

6)ENCRYPTION_PASSWORD
該參數需要和Oracle的透明數據加密特性(TDE)一同使用,因爲expdp本身是不支持加解密的。
ENCRYPTION_PASSWORD = password

7)ESTIMATE
用於估算被導出的表佔用的空間大小(不包含表的元數據)。默認值是BLOCKS。
ESTIMATE={BLOCKS | STATISTICS}
設置爲BLOCKS時,oracle會按照目標對象所佔用的數據塊個數乘以數據塊尺寸估算對象佔用的空間;設置爲STATISTICS時,會根據最近的統計值給出對象佔用空間,這種方法的誤差會比較大。無論使用哪種選項值,都會有誤差。
示例如下:
expdp secooler/secooler DIRECTORY=dump_dir ESTIMATE=STATISTICS  DUMPFILE=test.dump

8)EXTIMATE_ONLY
指定是否只估算導出作業所佔用的磁盤空間,默認值爲N
ESTIMATE_ONLY={y | n}
設置爲Y時,導出操作僅估算對象所佔用的磁盤空間,不會執行導出作業,注意此時不要使用DUMPFILE選項;設置爲N時,會估算對象所佔用的磁盤空間,同時還會執行導出操作。
示例如下:
expdp secooler/secooler ESTIMATE_ONLY=y

9)EXCLUDE
用於控制在導出過程中哪些數據庫對象不被導出。
EXCLUDE=object_type[:name_clause] [, ...]
object_type用於指定要排除的對象類型,name_clause用於指定要排除的具體對象名稱。注意EXCLUDE選項和INCLUDE選項不能同時使用。
該選項支持模糊匹配,非常好用的功能。另外,被指定不被導出的表上的約束、索引、觸發器等均不會被導出。
示例如下:
expdp secooler/secooler DIRECTORY=dump_dir DUMPFILE=a.dup EXCLUDE=VIEW

10)FILESIZE
限定單個轉儲文件的最大容量,默認值是0,表示沒有文件尺寸的限制。該選項與DUMPFILE選項一同使用。
FILESIZE=integer[B | K | M | G]

11)FLASHBACK_SCN
使用Flashback Query特性指定導出特定SCN時刻的表數據。
FLASHBACK_SCN=scn_value
scn_value用於給出SCN值。注意:FLASHBACK_SCN選項和FLASHBACK_TIME選項不能同時使用。
示例如下:
expdp secooler/secooler DIRECTORY=dump_dir DUMPFILE=test.dmp FLASHBACK_SCN=358523

12)FLASHBACK_TIME
使用Flashback Query特性指定導出特定時間點的表數據。
FLASHBACK_TIME="TO_TIMESTAMP(time-value)"
注意:FLASHBACK_TIME選項和FLASHBACK_SCN選項不能同時使用。
示例如下:
expdp secooler/secooler DIRECTORY=dump_dir DUMPFILE=test.dmp FLASHBACK_TIME="TO_TIMESTAMP('23-09-2010 14:35:00','DD-MM-YYYY HH24:MI:SS')"

13)FULL
是否以全庫模式導出數據庫。默認爲N。
FULL={y | n}
爲Y時,表示執行數據庫的全庫導出。

14)HELP
指定是否顯示expdp命令行選項的幫助信息,默認爲N
HELP = {y | n}
當設置爲y時。會給出expdp的幫助信息,正如文章開始處使用的方法一樣。

15)INCLUDE
指定導出哪些數據庫對象類型或數據庫對象。與EXCLUDE選項用法相同,功能相反。
注意INCLUDE選項和EXCLUDE選項不能同時使用。
INCLUDE = object_type[:name_clause] [, ...]

16)JOB_NAME
指定要導出作業的名稱。默認爲SYS_EXPORT_[mode]_[nn]
JOB_NAME=jobname_string
對應的作業信息可以通過DBA_DATAPUMP_JOBS視圖獲得。

17)LOGFILE
指定導出過程中日誌文件的名稱,默認值爲export.log。
LOGFILE=[directory_object:]file_name
directory_object指定目錄對象的名稱,file_name用於指定導出日誌文件的名稱。如果不指定directory_object,會自動使用DIRECTORY選項的值。
expdp secooler/secooler DIRECTORY=dump_dir DUMPFILE=test.dmp logfile=test.log

18)NETWORK_LINK
結合數據庫鏈,完成遠程數據庫對象的導出。
NETWORK_LINK=source_database_link

19)NOLOGFILE
控制是否禁止生成導出日誌文件,默認值爲N。
如果設置爲Y,表示不輸出日誌。
NOLOGFILE={y | n}

20)PARALLEL
指定執行導出操作的並行度,默認值爲1。
PARALLEL=integer
注意,這個參數給出的並行度是一個真正能啓用進程數的最大值。具體會啓用多少個進程並行處理會受很多因素影響,例如生成轉儲文件的多少(不能多於文件數)、導出的數據量大小、CPU資源還有系統I/O資源等因素影響。另外,這個參數只有在Oracle 10g的企業版本中纔可以使用。

21)PARFILE
指定導出操作使用到的參數文件的名稱。使用這個參數可以編寫出比較通用的導出腳本。
PARFILE=[directory_path]file_name

22)QUERY
用來指定類似where語句限定導出的記錄。相比exp命令的QUERY選項,這裏更加的靈活,可以同時針對每張表進行條件限制。
QUERY = [schema.][table_name:] query_clause
因爲該參數目的是限制導出數據的多少,因此不能和CONTENT=METADATA_ONLY、ESTIMATE_ONLY還有TRANSPORT_TABLESPACES一起使用。
示例如下:
expdp secooler/secooler directory=dump_dir dumpfiel=test.dmp tables=emp query='WHERE deptno=66'

23)SAMPLE
給出導出表數據的百分比,參數值可以取.000001~100(不包括100)。不過導出過程不會和這裏給出的百分比一樣精確,是一個近似值。
語法如下:
SAMPLE=[[schema_name.]table_name:]sample_percent
示例如下:
SAMPLE="HR"."EMPLOYEES":50

24)SCHEMAS
按照SCHEMA模式導出,默認爲當前用戶。很常用,不做更多的解釋。
SCHEMAS=schema_name [, ...]

25)STATUS
指定顯示導出作業進程的詳細狀態,默認值爲0。
STATUS=[integer]
示例如下:
expdp hr/hr DIRECTORY=dpump_dir1 SCHEMAS=hr,sh STATUS=300

26)TABLES
以表模式導出數據。可以同時導出多個表;支持通配符格式的導出;也支持只導出分區表中的某個分區。
TABLES=[schema_name.]table_name[:partition_name] [, ...]
schema_name用於指定用戶名,table_name用於指定導出的表名,partition_name用於指定要導出的分區名。

27)TABLESPACES
指定需要導出哪個表空間中的表數據。注意:Only the tables contained in a specified set of tablespaces are unloaded.也就是說,只有表空間裏的表數據會被導出。
TABLESPACES=tablespace_name [, ...]

28)TRANSPORT_FULL_CHECK
用來檢查被傳輸的表空間是否爲嚴格的自包含,默認爲N。

29)TRANSPORT_TABLESPACES
指定傳輸表空間指定的表空間列表。
TABLESPACES=tablespace_name [, ...]

30)VERSION
該選項用來指定數據庫生成的轉儲文件最低兼容的版本,默認值爲COMPATIBLE。
VERSION={COMPATIBLE | LATEST | version_string}
當值爲COMPATIBLE時,會以初始化參數中COMPATIBLE參數內容爲準;爲LATEST時,表示最高版本與數據庫版本保持一致;version_string是用於指定具體數據庫版本的字符串。

4.expdp工具使用示例
使用expdp工具時,其轉儲文件只能被存放在DIRECTORY對象對應的OS目錄中,而不能直接指定轉儲文件所在的OS目錄.因此,使用 expdp工具時,必須首先建立DIRECTORY對象.並且需要爲數據庫用戶授予使用DIRECTORY對象權限.
sys@ora10g> create or replace directory dump_dir as '/expdp';

Directory created.

sys@ora10g> grant read,write on directory dump_dir to sec;

Grant succeeded.

1)導出表(tables)
ora10g@linux5 /expdp$ expdp sec/sec directory=dump_dir dumpfile=tab.dmp tables=test,test1

Export: Release 10.2.0.4.0 - Production on Thursday, 23 September, 2010 21:19:39

Copyright (c) 2003. 2007, Oracle.  All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, Data Mining and Real Application Testing options
Starting "SEC"."SYS_EXPORT_TABLE_01":  sec/******** directory=dump_dir dumpfile=tab.dmp tables=test,test1
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 128 KB
Processing object type TABLE_EXPORT/TABLE/TABLE
. . exported "SEC"."TEST"                                5.242 KB       4 rows
. . exported "SEC"."TEST1"                               5.242 KB       4 rows
Master table "SEC"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SEC.SYS_EXPORT_TABLE_01 is:
  /expdp/tab.dmp
Job "SEC"."SYS_EXPORT_TABLE_01" successfully completed at 21:19:47


2)導出具體用戶的數據
ora10g@linux5 /expdp$ expdp sec/sec directory=dump_dir dumpfile=schema.dmp schemas=sec;

Export: Release 10.2.0.4.0 - Production on Thursday, 23 September, 2010 21:23:55

Copyright (c) 2003. 2007, Oracle.  All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, Data Mining and Real Application Testing options
Starting "SEC"."SYS_EXPORT_SCHEMA_01":  sec/******** directory=dump_dir dumpfile=schema.dmp schemas=sec
Estimate in progress using BLOCKS method...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 192 KB
Processing object type SCHEMA_EXPORT/USER
Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/COMMENT
. . exported "SEC"."TEST"                                5.242 KB       4 rows
. . exported "SEC"."TEST1"                               5.242 KB       4 rows
. . exported "SEC"."TEST2"                               5.242 KB       4 rows
Master table "SEC"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SEC.SYS_EXPORT_SCHEMA_01 is:
  /expdp/schema.dmp
Job "SEC"."SYS_EXPORT_SCHEMA_01" successfully completed at 21:24:38

3)導出表空間
ora10g@linux5 /expdp$ expdp system/sys directory=dump_dir dumpfile=talespace.dmp tablespaces=sec_d

Export: Release 10.2.0.4.0 - Production on Thursday, 23 September, 2010 21:25:47

Copyright (c) 2003. 2007, Oracle.  All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, Data Mining and Real Application Testing options
Starting "SYSTEM"."SYS_EXPORT_TABLESPACE_01":  system/******** directory=dump_dir dumpfile=tablespace.dmp tablespaces=sec_d
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 192 KB
Processing object type TABLE_EXPORT/TABLE/TABLE
. . exported "SEC"."TEST"                                5.242 KB       4 rows
. . exported "SEC"."TEST1"                               5.242 KB       4 rows
. . exported "SEC"."TEST2"                               5.242 KB       4 rows
Master table "SYSTEM"."SYS_EXPORT_TABLESPACE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SYSTEM.SYS_EXPORT_TABLESPACE_01 is:
  /expdp/talespace.dmp
Job "SYSTEM"."SYS_EXPORT_TABLESPACE_01" successfully completed at 21:26:25


4)導出數據庫
ora10g@linux5 /expdp$ expdp system/sys directory=dump_dir dumpfile=full.dmp full=y

5.小結
有關10g版本expdp工具選項的詳細解釋最佳參考資料是Oracle官方文檔。鏈接:http://download.oracle.com/docs/cd/B19306_01/server.102/b14215/dp_export.htm#sthref83
expdp作爲一款非常優秀的服務器端邏輯備份工具,爲我們完成數據遷移帶來了極大的便利。善用之。
發佈了5 篇原創文章 · 獲贊 11 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章