expdp 用户名/密码 DIRECTORY=目录对象名 DUMPFILE=导出文件名.dmp LOGFILE=日志名.log TABLES=表名1,表名2
,需提前创建目录对象并授权。使用数据泵工具(expdp – 推荐)
适用Oracle 10g及以上版本,高效且功能强大
步骤详解:
-
创建逻辑目录(需DBA权限)
数据泵要求操作系统的物理目录必须与Oracle逻辑目录映射:CREATE DIRECTORY export_dir AS '/u01/app/oracle/dumps'; -- 替换为实际路径 GRANT READ, WRITE ON DIRECTORY export_dir TO 您的用户名; -- 授权给操作用户
-
执行导出命令(命令行操作)
基础导出单表命令:expdp 用户名/密码@数据库实例 DIRECTORY=export_dir DUMPFILE=table_export.dmp LOGFILE=export_log.log TABLES=表名
关键参数说明:
SCHEMAS
:导出整个用户下的表TABLESPACES
:导出指定表空间的所有表INCLUDE
/EXCLUDE
:按对象类型过滤COMPRESSION=ALL
:压缩导出文件PARALLEL=4
:启用并行加速
-
验证结果
检查日志文件export_log.log
中的ORA-
错误及末尾的 “成功转储” 提示。
使用传统导出工具(exp – 兼容老版本)
适用于Oracle 9i等旧环境
操作命令:
exp 用户名/密码@数据库实例 FILE=导出文件.dmp LOG=导出日志.log TABLES=(表名1,表名2) ROWS=Y
注意:
- 若导出大表可能效率较低
- 不支持部分高级特性(如压缩、并行)
通过SQL Developer图形化导出
适合非命令行用户
- 连接数据库 → 展开”表”目录
- 右键目标表 → 选择”导出”
- 设置选项:
- 格式:
SQL
或Loader
- 输出文件:指定保存路径
- 勾选”导出数据”
- 格式:
- 点击”应用”执行导出
关键注意事项:
-
权限要求
expdp
需要EXP_FULL_DATABASE
角色- 操作系统目录需对Oracle进程可读写
-
字符集一致性
导出前确认NLS_LANG环境变量与数据库一致,避免中文乱码:export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 # Linux示例
-
大表优化建议
- 使用
PARALLEL
参数提升速度 - 添加
COMPRESSION=ALL
减少空间占用 - 通过
QUERY
参数分批次导出(例:QUERY="WHERE id<10000"
)
- 使用
-
云数据库特殊说明
AWS RDS/Oracle Cloud需通过DBMS_DATAPUMP
包操作,示例:BEGIN DBMS_DATAPUMP.DUMP_HANDLE := DBMS_DATAPUMP.OPEN( operation => 'EXPORT', job_mode => 'TABLE'); END;
故障排查指引:
- ORA-39002:目录不存在 → 检查
DIRECTORY
对象权限 - ORA-01555:快照过旧 → 增大
UNDO_RETENTION
参数 - 导出文件为0字节 → 验证磁盘空间及目录所有权
引用说明:
本文操作基于Oracle 19c官方文档(Database Utilities指南)及MOS补丁集最佳实践,生产环境操作前请备份归档日志。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/27466.html