温馨提示×

linux oracle如何导数据

小樊
33
2026-09-25 17:27:58
栏目: 云计算

在 Linux + Oracle 环境下,“导数据”通常指 数据导出/导入,Oracle 最常用的是 exp / imp(传统) 和 expdp / impdp(数据泵,推荐)。下面按常见场景说明。


一、使用数据泵(推荐:expdp / impdp)

1. 前期准备(只需做一次)

以 sys 或具有 DBA 权限用户登录:

sqlplus / as sysdba

创建目录对象(指向 Linux 目录):

CREATE OR REPLACE DIRECTORY dp_dir AS '/u01/oracle/dpdump';
GRANT READ, WRITE ON DIRECTORY dp_dir TO scott;

Linux 上创建目录并赋权:

mkdir -p /u01/oracle/dpdump
chown oracle:oinstall /u01/oracle/dpdump

2. 导出数据(expdp)

导出整个用户

expdp scott/tiger@orcl \
DIRECTORY=dp_dir \
DUMPFILE=scott_full.dmp \
LOG=scott_exp.log \
SCHEMAS=scott

导出整库

expdp system/system@orcl \
DIRECTORY=dp_dir \
DUMPFILE=full.dmp \
LOG=full_exp.log \
FULL=Y

导出单表

expdp scott/tiger@orcl \
DIRECTORY=dp_dir \
DUMPFILE=emp.dmp \
TABLES=emp

3. 导入数据(impdp)

导入用户

impdp scott/tiger@orcl \
DIRECTORY=dp_dir \
DUMPFILE=scott_full.dmp \
LOG=scott_imp.log \
SCHEMAS=scott

用户映射(不同用户)

impdp system/system@orcl \
DIRECTORY=dp_dir \
DUMPFILE=scott_full.dmp \
REMAP_SCHEMA=scott:newuser

表空间映射

REMAP_TABLESPACE=old_ts:new_ts

二、传统方式(exp / imp,老版本)

导出

exp scott/tiger@orcl file=/u01/oracle/dpdump/scott.dmp owner=scott

导入

imp scott/tiger@orcl file=/u01/oracle/dpdump/scott.dmp full=y

⚠️ 新版本 Oracle 已不推荐,仅用于老系统。


三、常见实用场景

1. 只导表结构

expdp scott/tiger CONTENT=METADATA_ONLY

2. 只导数据

expdp scott/tiger CONTENT=DATA_ONLY

3. 并行导出(大库)

expdp system/system FULL=Y PARALLEL=4

四、常见问题

  • 权限不足:确认有 EXP_FULL_DATABASE / IMP_FULL_DATABASE
  • 目录不存在:检查 DIRECTORY 和 Linux 路径
  • 表空间不存在:使用 REMAP_TABLESPACE

如果你能说明:

  • Oracle 版本(11g / 12c / 19c)
  • 导什么(整库 / 用户 / 单表)
  • 是否跨服务器

我可以给你 精确命令模板。

0 踩