这节内容为expdp命令的介绍,版本为Oracle 11g
上节我们说到调用expdp有三种方式
命令行
参数文件
交互式命令
这节讲第一种方式,命令行模式通过参数来控制导出的行为
首先我们必须在最开始提供用户密码,如不指定密码,则需要在弹出的提示中输入
默认导出用户下所有对象
expdp username/password
expdp所有参数可参考如下图表
https://docs.oracle.com/cd/B28359_01/server.111/b28319/dp_export.htm#BEHBGGEB
在开始说命令行方式的参数前我们约定:
该参数指定expdp连接到正在执行的一个expdp Job中,连接后进入到交互式命令模式中
如果当前只有一个一个JOB,则默认值为该JOB
除非JOB正在运行,你服务器使用ATTCH连接到其他schema
JOB 名称可以查询DBA_DATAPUMP_JOBS view 或 the USER_DATAPUMP_JOBS视图
> expdp hr ATTACH=hr.export_job
默认值: METADATA_ONLY
该参数目的为指定哪些数据在写入dump文件前进行压缩
COMPRESSION={ALL | DATA_ONLY | METADATA_ONLY | NONE}
ALL 压缩所有数据
DATA_ONLY 只对所有数据进行压缩
METADATA_ONLY 只对所有元数据进行压缩
NONE 不使用压缩
举例:
expdp hr DIRECTORY=dpump_dir1 DUMPFILE=hr_comp.dmp
COMPRESSION=METADATA_ONLY
默认值:ALL
该命令可以让你过滤出你需要的内容
CONTENT={ALL | DATA_ONLY | METADATA_ONLY}
ALL 导出元数据和数据
DATA_ONLY 只导出表的行数据,不会导出数据库对象的定义
METADATA_ONLY 只导出数据库对象的定义,不会导出表的数据
CONTENT=METADATA_ONLY 参数不可以和TRANSPORT_TABLESPACES一起用
举例
expdp hr DIRECTORY=dpump_dir1 DUMPFILE=hr.dmp CONTENT=METADATA_ONLY
该参数没有默认值
对于expdp来说,该参数只有一个值
DATA_OPTIONS=XML_CLOBS
我们使用该参数用来让XMLType 数据的导出不压缩
注意如果指定该参数则在impdp时也需要指定
举例
expdp hr TABLES=hr.xdb_tab1 DIRECTORY=dpump_dir1
DUMPFILE=hr_xml.dmp VERSION=11.1 DATA_OPTIONS=xml_clobs
默认值:DATA_PUMP_DIR
该参数指定dump文件和日志文件的默认位置
如果在dumpfile和logfile参数中指定了路径,则该路径覆盖directory参数的值
举例
expdp hr DIRECTORY=dpump_dir1 DUMPFILE=employees.dmp CONTENT=METADATA_ONLY
默认值: expdat.dmp
该参数指定dumpf文件的名称,也可以在其中指定目录,我们可以指定
expdp hr SCHEMAS=hr DIRECTORY=dpump_dir1 DUMPFILE=dpump_dir2:exp1.dmp,
exp2%U.dmp PARALLEL=3
我们可以使用 FILESIZE参数来指定dump 文件的最大大小
%U参数表示参数文件将被分割成PARALLEL个
该参数指定dump文件是否被加密
ENCRYPTION = {ALL | DATA_ONLY | ENCRYPTED_COLUMNS_ONLY | METADATA_ONLY | NONE}
ALL 加密所有的数据和元数据
DATA_ONLY 指定只加密数据
ENCRYPTED_COLUMNS_ONLY 指定只加密加密过的列
METADATA_ONLY 指定只加密元数据
NONE 不加密数据和元数据
如果你想加密SecureFiles 则必须指定ENCRYPTION=ALL
举例
expdp hr DIRECTORY=dpump_dir1 DUMPFILE=hr_enc.dmp JOB_NAME=enc1
ENCRYPTION=data_only ENCRYPTION_PASSWORD=foobar
默认值:AES128
该参数指定加密的算法
该参数需要你指定 ENCRYPTION 或ENCRYPTION_PASSWORD 参数
ENCRYPTION_ALGORITHM = { AES128 | AES192 | AES256 }
该参数只在11g中出现
举例
expdp hr DIRECTORY=dpump_dir1 DUMPFILE=hr_enc.dmp
ENCRYPTION_PASSWORD=foobar ENCRYPTION_ALGORITHM=AES128
该参数指定我们在加密和解密时使用的安全类型
默认值:
如果只指定ENCRYPTION 参数则为 TRANSPARENT
如果指定了 ENCRYPTION_PASSWORD参数并且Oracle wallet功能被打开则为DUAL
如果设定了ENCRYPTION_PASSWORD并且Oracle Wallet功能未打开则为 PASSWORD
ENCRYPTION_MODE = { DUAL | PASSWORD | TRANSPARENT }
该参数没有默认值
该参数为用户指定的用于加密dump文件的密码,防止未授权的文件访问
举例
expdp hr TABLES=employee_s_encrypt DIRECTORY=dpump_dir
DUMPFILE=dpcd2be1.dmp ENCRYPTION=ENCRYPTED_COLUMNS_ONLY
ENCRYPTION_PASSWORD=123456
默认值: BLOCKS
该参数指定在导出前估算数据量的方法,可以通过块数和统计信息来估算导出后大小
ESTIMATE={BLOCKS | STATISTICS}
举例
expdp hr TABLES=employees ESTIMATE=STATISTICS DIRECTORY=dpump_dir1
DUMPFILE=estimate_stat.dmp
默认值:n
该参数指定只需估算导出的大小而不实际导出数据
ESTIMATE_ONLY={y | n}
举例
> expdp hr ESTIMATE_ONLY=y NOLOGFILE=y SCHEMAS=HR
该参数过滤你不需要导出的内容
不可以和INCLUDE同时使用
EXCLUDE=object_type[:name_clause] [, ...]
如果排除掉某张表,则其索引和触发器也将排除
我们可以在name_cluase中使用SQL来选择
EXCLUDE=INDEX:"LIKE 'EMP%'"
举例
expdp hr DIRECTORY=dpump_dir1 DUMPFILE=hr_exclude.dmp EXCLUDE=VIEW,
PACKAGE, FUNCTION
默认值:0 (无限制)
该参数指定单个dump文件的最大大小,如不指定单位则默认为B
FILESIZE=integer[B | K | M | G]
如果数据大于指定的大小则该JOB会失败,这是可以attach到该JOB,然后使用 ADD_FILE 来添加新的文件
也可以在执行前使用%U参数则会自动新建文件
该参数指定导出的数据库SCN号
举例
> expdp hr DIRECTORY=dpump_dir1 DUMPFILE=hr_scn.dmp FLASHBACK_SCN=384632
该参数指定导出的数据库的SCN时间
这里我们使用参数文件的形式来执行
举例
DIRECTORY=dpump_dir1
DUMPFILE=hr_time.dmp
FLASHBACK_TIME="TO_TIMESTAMP('25-08-2003 14:35:00', 'DD-MM-YYYY HH24:MI:SS')"
> expdp hr PARFILE=flashback.par
该参数表示已全库导出模式来导出全库
该模式不会导出SYS, ORDSYS, 和 MDSYS等系统schema
同时sys用户对象的权限也不会导出
举例
expdp hr DIRECTORY=dpump_dir2 DUMPFILE=expfull.dmp FULL=y NOLOGFILE=y
默认值:
该参数用来显示命令行模式交互式命令的所有参数
HELP = {y | n}
该参数指定需要导出的对象,授权也会同时导出
不可以和EXCLUDE同时使用
可以多次使用INCLUDE参数
INCLUDE = object_type[:name_clause] [, ...]
举例
expdp hr INCLUDE=TABLE DUMPFILE=dpump_dir1:exp_inc.dmp NOLOGFILE=y
默认值:系统自动生成( SYS_EXPORT_<mode>_NN)
指定导出动作的JOB名称,可以用它来ATTCH到该任务
举例
> expdp hr DIRECTORY=dpump_dir1 DUMPFILE=exp_job.dmp JOB_NAME=exp_job
NOLOGFILE=y
默认值:export.log
该参数指定log文件的名称,也可以指定目录路径
日志记录导出的过程和成功失败信息
除非指定NOLOGFILE 参数,否则日志文件总是被创建
LOGFILE=[directory_object:]file_name
举例
> expdp hr DIRECTORY=dpump_dir1 DUMPFILE=hr.dmp LOGFILE=hr_export.log
该参数指定一个远程(source)数据库的dblink,负责导出该source数据库的数据至本地数据目录
举例
> expdp hr DIRECTORY=dpump_dir1 NETWORK_LINK=source_database_link
DUMPFILE=network_export.dmp LOGFILE=network_export.log
默认值:n
该参数用于指定不需要记录日志
举例
> expdp hr DIRECTORY=dpump_dir1 DUMPFILE=hr.dmp NOLOGFILE=y
默认值:1
该参数指定导出动作的并行度,它可以用来提高导出的速度
不过要确保服务器的资源足够
一般我们和%U操作同时指定,用来同时写入多个文件
举例
> expdp hr DIRECTORY=dpump_dir1 LOGFILE=parallel_export.log
JOB_NAME=par4_job DUMPFILE=par_exp%u.dmp PARALLEL=4
指定导出所用到的参数文件
参数文件在下界介绍
PARFILE=[directory_path]file_name
由于参数文件是在本地打开的,所有这里的目录请直接使用操作系统路径
该参数不可以在参数文件中指定
举例
expdp hr parfile=hr.par
该参数让导出的内容通过查询语句的形式指定,相当于where条件
QUERY = [schema.][table_name:] query_clause
他不能够和如下参数同时使用
CONTENT=METADATA_ONLY
ESTIMATE_ONLY
TRANSPORT_TABLESPACES
举例
QUERY=employees:"WHERE department_id > 10 AND salary > 10000"
NOLOGFILE=y
DIRECTORY=dpump_dir1
DUMPFILE=exp1.dmp
它指定导出除了employee外所有的表,对于employee只导出符合where条件的数据