[toc]

这节内容为expdp命令的介绍,版本为Oracle 11g

上节我们说到调用expdp有三种方式

- 命令行

- 参数文件

- 交互式命令


然后说了三种模式的相关参数

接下来举例说明一些常用的用法

##1. expdp范例

##1.1 导出表

```
expdp hr TABLES=employees,jobs DUMPFILE=dpump_dir1:table.dmp NOLOGFILE=y
```

##1.2 导出指定表或者行的数据

首先新建一个参数文件**exp.par**
```
DIRECTORY=dpump_dir1
DUMPFILE=dataonly.dmp
EXCLUDE=TABLE:"IN ('COUNTRIES', 'REGIONS')"
QUERY=employees:"WHERE department_id !=50 ORDER BY employee_id"
```

上述的文件表示

- 导出到dpump_dir1指定的目录
- dump文件名称为dataonly.dmp
- 排除COUNTRIES和REGIONS表
- 其中employee表只导出相应条件的行并且排序

之后我们执行他
```
> expdp hr PARFILE=exp.par1
```

##1.3 预估导出指定表的数据量

```
> expdp hr DIRECTORY=dpump_dir1 ESTIMATE_ONLY=y TABLES=employees, 
departments, locations LOGFILE=estimate.log
```

上述语句会计算并在终端和日志文件中显示三张表的预估大小

##1.4 导出整个schema数据

由于schema模式为默认的模式,我们可以不使用该参数

但是如果需要导出其他用户的则需要指定了

```
> expdp hr DUMPFILE=dpump_dir1:expschema.dmp LOGFILE=dpump_dir1:expschema.log
```

##1.5 并行方式导出全库

```
> expdp hr FULL=y DUMPFILE=dpump_dir1:full1%U.dmp, dpump_dir2:full2%U.dmp
FILESIZE=2G PARALLEL=3 LOGFILE=dpump_dir1:expfull.log JOB_NAME=expfull
```
上面语句解释如下:
- 导出全部数据库的数据。包括元数据和数据
- 每个文件的最大大小为2G
- 会同时输出三个文件,按照full101.dmp, full201.dmp, full102.dmp的规律循环在2个目录中生成
- JOB对应的master table名为expfull,可以使用该名称attch到该JOB

##1.6 在交互式命令模式中停止和重新连接JOB

**停止JOB**
```
Export> STOP_JOB=IMMEDIATE
Are you sure you wish to stop this job ([y]/n): y
```

**重新连接到该JOB**

```
> expdp hr ATTACH=EXPFULL
```
**进入日志模式并重新启动该JOB**

```
Export> CONTINUE_CLIENT
```

##2. expdp命令流程图

**ExpInit**


[image:119 size:orig]



------

**ExpStart**

[image:120 size:orig]

------


**ExpModes**

[image:121 size:orig]


------


**ExpOpts**

[image:122 size:orig]


------


**ExpEncrypt**

[image:123 size:orig]


------


**ExpFilter**

[image:124 size:orig]


------


**ExpRemap**

[image:125 size:orig]


------


**ExpFileOpts**

[image:126 size:orig]

------


**ExpDynOpts**

[image:127 size:orig]