在Oracle数据库管理中,使用命令行工具导出数据库是一项常见且重要的操作,主要用于数据备份、迁移或跨环境数据传输,Oracle官方提供的exp
和expdp
工具是两种主要的导出方式,其中expdp
(数据泵导出)是Oracle 10g及之后版本推荐使用的工具,因其性能更优、功能更强大,而exp
(传统导出)则主要用于兼容旧版本数据库或简单场景,以下将详细介绍这两种工具的使用方法、参数配置及注意事项。

使用expdp
导出数据库
expdp
是服务器端工具,需通过命令行调用,依赖Oracle目录对象(Directory)来指定导出文件的存放位置,操作步骤如下:
-
创建目录对象
首先需要以管理员身份(如sys
或system
)创建目录,并授予相应用户权限:CREATE DIRECTORY exp_dir AS '/path/to/export'; GRANT READ, WRITE ON DIRECTORY exp_dir TO username;
-
执行导出命令
基本语法为expdp username/password@connect_name parameters
,常用参数包括:schemas
:指定导出的用户模式,如schemas=hr,scott
。tables
:导出特定表,如tables=hr.employees,hr.departments
。full=y
:导出整个数据库(需DBA权限)。dumpfile
:指定导出文件名,如dumpfile=expdat.dmp
。logfile
:指定日志文件名,如logfile=expdp.log
。content
:控制导出内容,如data_only
仅导出数据,metadata_only
仅导出结构。
示例:导出
hr
用户的所有表到exp_dir
目录:(图片来源网络,侵删)expdp hr/hr@orcl schemas=hr dumpfile=hr_full.dmp logfile=hr_full.log directory=exp_dir
-
高级功能
- 并行导出:通过
parallel=4
设置并行度,提升大表导出速度。 - 过滤数据:使用
query
参数添加条件,如query="WHERE hire_date > 'SYSDATE-365"
。 - 压缩导出:添加
compression=all
减少导出文件大小。
- 并行导出:通过
使用exp
导出数据库
exp
是客户端工具,无需目录对象,但功能有限,适合小型数据导出,基本语法为exp username/password@connect_name parameters
,常用参数包括:
owner
:指定用户模式,如owner=scott
。tables
:导出特定表,如tables=emp,dept
。full=y
:导出整个数据库(需DBA权限)。file
:指定导出文件名,如file=scott.dmp
。rows=n
:仅导出表结构(不导数据)。
示例:导出scott
用户的emp
和dept
表:
exp scott/tiger@orcl tables=emp,dept file=scott.dmp
注意事项
- 权限问题:
expdp
需用户有EXP_FULL_DATABASE
角色,exp
需EXP_DATABASE
角色。 - 字符集兼容:导出导入时需确保数据库字符集一致,否则可能出现乱码。
- 网络配置:若使用
network_link
参数远程导出,需确保数据库间网络连通。 - 空间管理:导出前需确认目标目录有足够磁盘空间,避免因空间不足导致失败。
参数对比表
参数 | expdp 支持 |
exp 支持 |
说明 |
---|---|---|---|
导出整个数据库 | full=y |
full=y |
需DBA权限 |
导出用户模式 | schemas=hr |
owner=hr |
指定用户下的所有对象 |
导出特定表 | tables=hr.emp |
tables=emp |
支持跨用户表(如hr.emp ) |
并行处理 | parallel=4 |
不支持 | 提升大表导出速度 |
过滤条件 | query="WHERE..." |
query="WHERE..." |
仅对表数据有效 |
压缩功能 | compression=all |
不支持 | 减少导出文件大小 |
相关问答FAQs
Q1: expdp
和exp
导出的文件是否可以互相导入?
A1: 不可以。expdp
导出的.dmp
文件是数据泵专用格式,只能通过impdp
导入;而exp
导出的文件也只能通过imp
导入,两者文件结构、元数据格式不同,混用会导致导入失败。

Q2: 导出大表时如何避免内存溢出?
A2: 可通过以下方式优化:
- 使用
expdp
的parallel
参数增加并行度; - 添加
filesize
参数分割大文件(如filesize=1G
); - 在
query
参数中分批导出数据(如按时间范围拆分); - 调整数据库
PGA_AGGREGATE_TARGET
参数,为导出操作分配足够内存。