Oracle 数据库导出与导入操作指南

发布于:2025-03-14 ⋅ 阅读:(22) ⋅ 点赞:(0)

一、导出操作(expdp/exp)

使用 expdp 导出全库(普通用户模式)

# 导出全库(排除系统表)
expdp username/password directory=DATA_PUMP_DIR dumpfile=full_20230321.dmp logfile=expdp.log

导出指定用户对象
bash
# 导出指定用户所有对象
expdp sjk_190828/sjk_190828 \
directory=DATA_PUMP_DIR \
dumpfile=sjk_20200602.dmp \
logfile=exp_20200602.log
导出指定表(数据泵模式)
bash
expdp sjk_190828/sjk_190828 \
directory=DATA_PUMP_DIR \
dumpfile=sjk_20230313.dmp \
tables=('inv_sbpc') \
rows=n  # 仅导出表结构
传统导出工具 exp
bash
# 导出指定表(兼容旧版本)
exp username/password@database \
file=/path/to/dump.dmp \
tables=('tab1','tab2') \
rows=y  # 导出数据(默认)

二、导入操作(impdp)

基本导入(覆盖已存在表)

impdp username/password@target_db \
directory=DATA_PUMP_DIR \
dumpfile=sjk_20230321.dmp \
table_exists_action=replace

模式重映射(用户迁移)

impdp sjk_230315/sjk@target_db \
directory=DATA_PUMP_DIR \
dumpfile=sjk_20230321.dmp \
remap_schema=sjk_190828:sjk_230315

数据泵导入注意事项
确保目标库已创建同名用户
提前创建 DATA_PUMP_DIR 目录
检查权限:

grant imp_full_database to username;

三、文件管理与传输

查找 dmp 文件

# 在Linux系统查找文件
find / -name 'sjk_20200602.dmp'
下载文件(SecureCRT 等工具)
bash
# 进入目标目录
cd /home/work/data/oracle/u01/app/oracle/admin/zssd/dpdump

# 使用sz命令下载
sz sjk_20230306.dmp

四、环境配置检查

查看数据泵目录

以sysdba身份登录检查

sqlplus / as sysdba
SELECT directory_path 
FROM dba_directories 
WHERE directory_name = 'DATA_PUMP_DIR' 
AND owner = 'SYS';

典型目录路径示例

Linux: /u01/app/oracle/admin/实例名/dpdump/
Windows: E:\app\PC\admin\orcl\dpdump\

五、常见问题

权限问题
普通用户需授予 exp_full_database 权限
避免使用 AS SYSDBA 登录(非系统用户)
路径配置
确保导出 / 导入目录一致
跨平台注意路径格式差异(Windows 反斜杠转义)
数据一致性
导出前执行

ALTER TABLESPACE READ ONLY

大表建议分批次导出

六、总结

expdp/impdp 是推荐的数据迁移工具
模式重映射功能 (remap_schema) 常用于版本升级
注意区分全库导出与用户级导出的参数差异
希望这篇指南能帮助您高效完成数据库迁移工作!


网站公告

今日签到

点亮在社区的每一天
去签到