1. su - oracle
2. sqlplus / as sysdba
expdp 详解及实例
1.数据泵expdp导出工具与传统的exp导出工具的区别
1)exp是客户端程序,既可以在客户端使用,也可以在服务器端使用;
2)expdp是服务器端工具,只能在ORACLE服务器端使用,不能在客户端使用;
3)这两个工具生成的备份文件不能被对方与之对应的导入工具使用;
4)expdp在灵活性和功能性上与exp相比,有质上的飞跃。
2.expdp命令行选项列表
使用“-help”选项获得expdp命令可用的选项列表和简单的注释信息。
ora10g@linux5 /expdp$ expdp help=y
……
Keyword
------------------------------------------------------------------------------
ATTACH
COMPRESSION
CONTENT
DIRECTORY
DUMPFILE
ENCRYPTION_PASSWORD
ESTIMATE
ESTIMATE_ONLY
EXCLUDE
FILESIZE
FLASHBACK_SCN
FLASHBACK_TIME
FULL
HELP
INCLUDE
JOB_NAME
LOGFILE
NETWORK_LINK
NOLOGFILE
PARALLEL
PARFILE
QUERY
SAMPLE
SCHEMAS
STATUS
TABLES
TABLESPACES
TRANSPORT_FULL_CHECK
TRANSPORT_TABLESPACES List of tablespaces from which metadata willbe unloaded.
VERSION
The following commands are valid while in interactivemode.
Note: abbreviations are allowed
Command
------------------------------------------------------------------------------
ADD_FILE
CONTINUE_CLIENT
EXIT_CLIENT
FILESIZE
HELP
KILL_JOB
PARALLEL
START_JOB
STATUS
STOP_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.dumpCONTENT=METADATA_ONLY
4)DIRECTORY
指定转储文件和日志文件所在的目录,给定的参数是一个DIRECTORY数据库对象,是通过CREATEDIRECTORY语句建立的。后文会有这方面的演示。
DIRECTORY=directory_object
示例如下:
expdp secooler/secooler DIRECTORY=dump_dirDUMPFILE=test.dump
5)DUMPFILE
用于指定转储文件的名称,默认名称为expdat.dmp。
DUMPFILE=[directory_object:]file_name [, ...]
directory_object用于指定目录对象名,file_name用于指定转储文件名。如果不给定directory_object,导出工具会自动使用DIRECTORY选项指定的目录对象。
这个参数可以结合FILESIZE参数一起使用,达到生成多个转储文件的目的。
注意,如果指定路径下已经存在待生成的导出文件,导出过程中将会报错退出。
expdp secooler/secooler DIRECTORY=dump_dir1DUMPFILE=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_dirESTIMATE=STATISTICS
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.dupEXCLUDE=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.dmpFLASHBACK_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.dmpFLASHBACK_TIME="TO_TIMESTAMP('23-09-2010 14:35:00','DD-MM-YYYYHH24: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.dmplogfile=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资源等因素影响。另外,这个参数只有在Oracle10g的企业版本中才可以使用。
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.dmptables=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,shSTATUS=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 oftablespaces 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 tosec;
Grant succeeded.
1)导出表(tables)
ora10g@linux5 /expdp$ expdp sec/sec directory=dump_dirdumpfile=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.
Connected to: Oracle Database 10g Enterprise Edition Release10.2.0.4.0 - Production
With the Partitioning, Data Mining and Real Application Testingoptions
Starting "SEC"."SYS_EXPORT_TABLE_01":
Estimate in progress using BLOCKS method...
Processing object typeTABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 128 KB
Processing object type TABLE_EXPORT/TABLE/TABLE
. . exported"SEC"."TEST"
. . exported"SEC"."TEST1"
Master table "SEC"."SYS_EXPORT_TABLE_01" successfullyloaded/unloaded
******************************************************************************
Dump file set for SEC.SYS_EXPORT_TABLE_01 is:
Job "SEC"."SYS_EXPORT_TABLE_01" successfully completed at21:19:47
2)导出具体用户的数据
ora10g@linux5 /expdp$ expdp sec/sec directory=dump_dirdumpfile=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.
Connected to: Oracle Database 10g Enterprise Edition Release10.2.0.4.0 - Production
With the Partitioning, Data Mining and Real Application Testingoptions
Starting "SEC"."SYS_EXPORT_SCHEMA_01":
Estimate in progress using BLOCKS method...
Processing object typeSCHEMA_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 typeSCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object typeSCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object typeSCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object typeSCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/COMMENT
. . exported"SEC"."TEST"
. . exported"SEC"."TEST1"
. . exported"SEC"."TEST2"
Master table "SEC"."SYS_EXPORT_SCHEMA_01" successfullyloaded/unloaded
******************************************************************************
Dump file set for SEC.SYS_EXPORT_SCHEMA_01 is:
Job "SEC"."SYS_EXPORT_SCHEMA_01" successfully completed at21:24:38
3)导出表空间
ora10g@linux5 /expdp$ expdp system/sys directory=dump_dirdumpfile=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.
Connected to: Oracle Database 10g Enterprise Edition Release10.2.0.4.0 - Production
With the Partitioning, Data Mining and Real Application Testingoptions
Starting "SYSTEM"."SYS_EXPORT_TABLESPACE_01":
Estimate in progress using BLOCKS method...
Processing object typeTABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 192 KB
Processing object type TABLE_EXPORT/TABLE/TABLE
. . exported"SEC"."TEST"
. . exported"SEC"."TEST1"
. . exported"SEC"."TEST2"
Master table "SYSTEM"."SYS_EXPORT_TABLESPACE_01" successfullyloaded/unloaded
******************************************************************************
Dump file set for SYSTEM.SYS_EXPORT_TABLESPACE_01is:
Job "SYSTEM"."SYS_EXPORT_TABLESPACE_01" successfully completed at21:26:25
4)导出数据库
ora10g@linux5 /expdp$ expdp system/sys directory=dump_dirdumpfile=full.dmp full=y
5.小结
有关10g版本expdp工具选项的详细解释最佳参考资料是Oracle官方文档。链接:http://download.oracle.com/docs/cd/B19306_01/server.102/b14215/dp_export.htm#sthref83
expdp作为一款非常优秀的服务器端逻辑备份工具,为我们完成数据迁移带来了极大的便利。善用之。