了解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=<number of workers>.
START_JOB Start/resume current job.
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. 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
指定傳輸表空間指定的表空間清單。
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
Starting "SEC"."SYS_EXPORT_SCHEMA_01": sec/ directory=dump_dir dumpfile=schema.dmp schemas=sec
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"."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
Starting "SYSTEM"."SYS_EXPORT_TABLESPACE_01": system/ directory=dump_dir dumpfile=tablespace.dmp tablespaces=sec_d
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 --