在 Linux 环境下,Oracle 数据库常用的导入导出方式主要有以下几种:
适用于老版本 Oracle(10g 及以前)
exp 用户名/密码@实例名 file=/home/oracle/exp.dmp full=y
imp 用户名/密码@实例名 file=/home/oracle/exp.dmp full=y
CREATE OR REPLACE DIRECTORY dump_dir AS '/home/oracle/dump';
GRANT READ, WRITE ON DIRECTORY dump_dir TO 用户名;
Linux 目录权限:
mkdir -p /home/oracle/dump
chown oracle:oinstall /home/oracle/dump
expdp 用户名/密码@实例名 \
DIRECTORY=dump_dir \
DUMPFILE=full.dmp \
LOGFILE=exp.log \
FULL=y
expdp 用户名/密码@实例名 \
DIRECTORY=dump_dir \
DUMPFILE=user.dmp \
SCHEMAS=用户名
expdp 用户名/密码@实例名 \
DIRECTORY=dump_dir \
DUMPFILE=table.dmp \
TABLES=表1,表2
impdp 用户名/密码@实例名 \
DIRECTORY=dump_dir \
DUMPFILE=full.dmp \
LOGFILE=imp.log \
FULL=y
impdp 用户名/密码@实例名 \
DIRECTORY=dump_dir \
DUMPFILE=user.dmp \
SCHEMAS=用户名
impdp 用户名/密码@实例名 \
DIRECTORY=dump_dir \
DUMPFILE=table.dmp \
TABLES=表1,表2
impdp 新用户/密码@实例名 \
DIRECTORY=dump_dir \
DUMPFILE=user.dmp \
REMAP_SCHEMA=旧用户:新用户
TABLE_EXISTS_ACTION=REPLACE
REMAP_TABLESPACE=旧表空间:新表空间
确认导出和导入数据库字符集一致:
SELECT userenv('language') FROM dual;
✅ 新系统统一使用 expdp / impdp
✅ 使用 Directory 对象
✅ 导入前确认表空间、用户、字符集
如果你有:
我可以给你一条精准命令。