当前位置: 代码迷 >> PowerDesigner >> expdp 详解及范例
  详细解决方案

expdp 详解及范例

热度:1933   发布时间:2013-02-26 00:00:00.0
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=<number of workers>.
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作为一款非常优秀的服务器端逻辑备份工具,为我们完成数据迁移带来了极大的便利。善用之。