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