温馨提示×

linux oracle如何导入导出

小樊
49
2026-09-19 14:45:52
栏目: 云计算

在 Linux 环境下,Oracle 数据库常用的导入导出方式主要有以下几种:


一、使用 exp / imp(传统方式,已不推荐)

适用于老版本 Oracle(10g 及以前)

1. 导出(exp)

exp 用户名/密码@实例名 file=/home/oracle/exp.dmp full=y

2. 导入(imp)

imp 用户名/密码@实例名 file=/home/oracle/exp.dmp full=y

二、使用 expdp / impdp(数据泵,推荐 ✅)

前提

  • 需要数据库目录对象(Directory)
  • 在 Linux 服务器上执行

1. 创建目录(DBA 用户)

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

2. 导出(expdp)

导出整个库

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

3. 导入(impdp)

全库导入

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=旧用户:新用户

三、常见问题

1. 表已存在

TABLE_EXISTS_ACTION=REPLACE

2. 表空间不同

REMAP_TABLESPACE=旧表空间:新表空间

3. 字符集问题

确认导出和导入数据库字符集一致:

SELECT userenv('language') FROM dual;

四、总结建议

新系统统一使用 expdp / impdp
✅ 使用 Directory 对象
✅ 导入前确认表空间、用户、字符集

如果你有:

  • Oracle 版本(11g / 12c / 19c)
  • 导哪个级别(库 / 用户 / 表)
  • 是否跨服务器

我可以给你一条精准命令

0