[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]