在Oracle数据库的日常运维中,逻辑备份是应对数据误删、环境迁移等场景的重要手段,expdp和impdp作为Oracle Data Pump的核心工具,凭借高性能和丰富的功能成为首选方案。本文将围绕这两个工具的使用展开详细说明,帮助读者快速掌握相关操作。

一、expdp/impdp使用前准备
使用expdp和impdp前需要先完成目录对象的配置,这是工具读取和写入备份文件的必要前提。首先需要登录Oracle数据库,创建用于存放备份文件的目录,然后为目录对象授权。
-- 登录Oracle数据库,使用sys用户或有dba权限的用户 sqlplus / as sysdba -- 创建操作系统层面的备份目录,例如/oracle/backup -- 注意需要先确保操作系统上该目录存在且有读写权限 CREATE DIRECTORY dp_dir AS '/oracle/backup'; -- 给用户授予目录的读写权限,这里假设操作用户是scott GRANT READ, WRITE ON DIRECTORY dp_dir TO scott;
二、expdp导出数据操作
expdp用于导出数据库对象或数据,支持按用户、表、表空间等多种维度导出,常见的导出场景和参数说明如下。
1. 常用参数说明
| 参数名 | 作用说明 |
|---|---|
| directory | 指定备份文件存放的目录对象名,即前面创建的dp_dir |
| dumpfile | 指定生成的备份文件名称,支持通配符实现并行导出多个文件 |
| logfile | 指定导出过程的日志文件名称,用于排查导出问题 |
| schemas | 指定要导出的用户模式,导出该用户下的所有对象 |
| tables | 指定要导出的表名,多个表用逗号分隔 |
| parallel | 指定并行度,提升大数量导出的效率 |
2. 导出示例
导出scott用户下所有对象的完整命令如下,需要在操作系统的命令行中执行,不需要登录sqlplus。
# 导出scott用户的所有对象,生成2个并行备份文件 expdp scott/tiger@orcl directory=dp_dir dumpfile=scott_%U.dmp logfile=scott_exp.log schemas=scott parallel=2
如果只需要导出指定的表,可以替换为tables参数:
# 导出scott用户下的emp和dept表 expdp scott/tiger@orcl directory=dp_dir dumpfile=scott_table.dmp logfile=scott_table_exp.log tables=emp,dept
三、impdp导入数据操作
impdp是expdp的配套导入工具,支持将备份文件中的数据恢复到数据库中,同样支持多种恢复场景。
1. 常用导入参数
- directory:指定备份文件所在的目录对象,和导出时的目录对应
- dumpfile:指定要导入的备份文件名称
- logfile:指定导入过程的日志文件名称
- remap_schema:将原用户的数据导入到目标用户,格式为原用户:目标用户
- remap_tablespace:将原表空间的对象导入到目标表空间,格式为原表空间:目标表空间
- table_exists_action:当导入的表已经存在时的处理方式,可选skip、append、truncate、replace
2. 导入示例
将之前导出的scott用户数据恢复到scott用户下:
# 导入scott用户的备份数据 impdp scott/tiger@orcl directory=dp_dir dumpfile=scott_%U.dmp logfile=scott_imp.log schemas=scott
如果要将scott的数据导入到另一个用户new_scott下,使用remap_schema参数:
# 将scott的数据导入到new_scott用户 impdp system/manager@orcl directory=dp_dir dumpfile=scott_%U.dmp logfile=new_scott_imp.log remap_schema=scott:new_scott
四、常见问题与注意事项
注意:expdp和impdp是服务器端工具,备份文件必须存放在数据库服务器所在的文件系统上,不能在客户端本地生成备份文件。
- 导出导入时需要保证目录对象的路径在操作系统层面存在,且有对应的读写权限,否则会报目录不存在的错误
- 如果数据库版本不同,低版本导出的备份文件可以导入到高版本数据库,高版本导出的文件无法导入到低版本数据库
- 大批量数据导入时可以适当调大parallel参数提升速度,但不要超过CPU核心数,避免资源耗尽
- 导入前如果目标用户不存在,需要先创建目标用户并授予相应权限,否则导入会失败
五、总结
expdp和impdp是Oracle数据库中非常实用的逻辑备份恢复工具,通过合理的参数配置可以满足大部分数据备份、迁移需求。使用前注意完成目录对象的配置,根据场景选择合适的导出导入参数,操作过程中通过日志文件排查问题,就能高效完成相关操作。