1.Data Pump特性

(1) 支持并行处理导入导出任务

(2) 支持暂停和重启导入导出任务

(3) 支持通过database link方式导入或导出远端数据库中对象

(4) 支持在导入通过REMAP_SCHEMA、REMAP_DATAFILE、REMAP_TABLESPACE几个参数实现导入过程中自动修改对象属主、数据文件或所在表空间。

(5) 导出和导入时提供了非常细粒度的对象控制。Imp/exp时最多控制是否导入索引、约束、授权信息等有限的对象类型,在data pump中不仅可以精确到对象类型,通过include或exclude两个参数,可以详细指定是否包含或不包含某个对象。

2.Data Pump规则

通过DUMPFILE参数指定文件时,并不是指定本地的详细路径,而是指定文件名,IMPDP和EXPDP命令另外有一个参数叫DIRECTORY用来指定dump文件所在路径。注意DIRECTORY参数也并非直接指定本地磁盘路径,而是指定Oracle数据库中的directory对象。

Directory对象是一个指向,指向操作系统中的一个路径。每一个directory对象都有read/write两个权限,可以通过grant命令授予给指定的用户和角色。拥有directory对象read/write权限的用户就可以读、写该directory对象指定的操作系统路径下的文件。

3.DIRECTORY对象使用

第一步:查询现有的directory

SQL> select * from dba_directories;

OWNER DIRECTORY_NAME DIRECTORY_PATH

---------- -------------------- ------------------------------

SYS DATA_PUMP_DIR /u01/app/oracle/admin/orcl/dpdump/

第二步,创建新的directory

SQL> create directory dump_file_dir as '/backup/dump/';

第三步,给新建的directory授权

SQL> grant read,write on directory dump_file_dir to scott;

OK,现在新建的directory可以使用了

4.调用方式

同exp一样,expdp调用方式同时支持命令行和参数文件方式调用

(1) 命令行方式调用

直接执行命令

例如:$ expdp scott/tiger tables=emp directory=dump_dir dumpfile=scott_emp.dmp log=scott_emp.log

(2) 参数文件方式调用

第一步,编辑一个文件

$ vi scott_emp.dat

directory=dump_dir

Tables=emp

Buffer=20480

log=scott_emp.log

第二步,然后在执行命令时调用这个文件

$ expdp scott/tiger parfile=scott_emp.dat

5.举例说明

(1)全库导出

$ expdp sys/oracle directory=dump_file_dir logfile=database_full.dmp logfile=database_full.log full=y

(2)并行方式导出

并行方式导出采用的是parallel参数。注意使用该参数时,当数据量很大的时候,可以起到正作用,当数据量很小的时候,parallel参数会起反作用

$ expdp sys/oracle directory=dump_file_dir logfile=database_full.dmp logfile=database_full.log parallel=3

(3)导出scott用户所有表

$ expdp scott/tiger directory=dump_file_dir logfile=scott_tables.dmp logfile=scott_tables.log

6.重要参数

DIRECTORY: 指定参数

DUMPFILE: 指定输出文件名

LOGFILE: 指定输出日志

FILESIZE: 指定导出文件的大小

PARALLEL: 并行导入

数据过滤

QUERY: 对数据进行过滤

SAMPLE: 百分比过滤[SAMPLE=A:30]

EXCLUDE: 排除对象

INCLUDE: 包括对象