🔧 一、操作流程(11.2.0.1.0 适配)
创建逻辑目录
sql
Copy Code
-- 物理路径需提前创建(如 D:\oracle_backup)
CREATE OR REPLACE DIRECTORY expnc_dir AS 'D:\oracle_backup';
GRANT READ, WRITE ON DIRECTORY expnc_dir TO 目标用户(如 system);
⚠️ 物理目录必须真实存在,否则报错 ORA-390023。
全库导出命令
bash
Copy Code
expdp system/密码@SERVICE_NAME
DIRECTORY=expnc_dir
DUMPFILE=full_11g.dmp
LOGFILE=expdp_11g.log
FULL=Y
COMPRESSION=ALL关键参数说明:
FULL=Y:导出全库数据
COMPRESSION=ALL:压缩减少文件体积1
VERSION=10.2.0(可选):需兼容低版本时添加(如迁移到 10g)4
按用户导出
bash
Copy Code
expdp system/密码@SERVICE_NAME
SCHEMAS=scott,hr
DUMPFILE=user_schemas.dmp
DIRECTORY=expnc_dir⚠️ 二、版本注意事项
字符集强制检查
导出前需验证字符集一致性:
sql
Copy Code
SELECT USERENV('LANGUAGE') FROM DUAL; -- 结果需与目标库一致
不一致会导致导入乱码或失败3。
跨版本兼容性
导出高版本(11g)导入低版本(如 10g)时:
必须添加 VERSION=10.2.0,否则目标库无法识别元数据4。
同版本或向高版本迁移则无需指定。
Windows 路径格式
目录路径需用双反斜杠或正斜杠:
sql
Copy Code
CREATE DIRECTORY win_dir AS 'C:\oracle_backup'; -- 或 'C:/oracle_backup'
2
💡 三、常见问题解决
报错 ORA-39070: 无法打开日志文件
检查目录权限:
sql
Copy Code
GRANT READ, WRITE ON DIRECTORY expnc_dir TO EXPORT_USER; -- 重新授权
3
导出文件过大
启用多文件分割:
bash
Copy Code
DUMPFILE=exp_%U.dmp FILESIZE=2G -- 分割为 2GB/文件
1
仅导出元数据(表结构)
bash
Copy Code
CONTENT=METADATA_ONLY -- 不包含实际数据
1
📌 总结建议
场景 关键参数
全库备份 FULL=Y + COMPRESSION=ALL
向低版本迁移(如 10g) 必加 VERSION=10.2.0
仅备份表结构 CONTENT=METADATA_ONLY
大库分割存储 DUMPFILE=exp_%U.dmp FILESIZE=2G
备份完成后,使用 impdp 导入时需确保目标库已创建同名目录对象及表空间
评论