【expdp】10g資料泵expdp工具選項詳解及應用示例

secooler發表於2010-09-23
理解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官方文件。連結:
expdp作為一款非常優秀的伺服器端邏輯備份工具,為我們完成資料遷移帶來了極大的便利。善用之。


Good luck.

secooler
10.09.23

-- The End --

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-557370/,如需轉載,請註明出處,否則將追究法律責任。

相關文章