温馨提示×

linux oracle怎样导入

小樊
39
2026-09-16 15:39:09
栏目: 云计算

Linux 下导入 Oracle 数据库,常见方式有以下几种,最常用的是 imp / impdp(数据泵)。下面按场景给你说明。


一、使用 impdp(数据泵导入,推荐 ✅)

1. 准备工作

确保:

  • Oracle 已安装
  • .dmp 文件
  • 知道 Oracle 用户(如 system
  • 知道表空间、用户名

2. 创建目录对象(只需一次)

sqlplus / as sysdba

CREATE OR REPLACE DIRECTORY dump_dir AS '/u01/oracle/dump';
GRANT READ, WRITE ON DIRECTORY dump_dir TO scott;
EXIT;

.dmp 文件放到该目录:

cp xxx.dmp /u01/oracle/dump/

3. 导入命令示例

导入整个库

impdp system/password DIRECTORY=dump_dir DUMPFILE=xxx.dmp FULL=Y

导入指定用户

impdp system/password DIRECTORY=dump_dir DUMPFILE=xxx.dmp SCHEMAS=scott

导入到不同用户

impdp system/password DIRECTORY=dump_dir DUMPFILE=xxx.dmp \
REMAP_SCHEMA=old_user:new_user

导入到不同表空间

impdp system/password DIRECTORY=dump_dir DUMPFILE=xxx.dmp \
REMAP_TABLESPACE=old_ts:new_ts

二、使用 imp(传统导入,老版本)

imp scott/tiger FILE=xxx.dmp FULL=Y

或指定用户:

imp system/password FROMUSER=old_user TOUSER=new_user FILE=xxx.dmp

⚠️ imp 已逐渐被 impdp 取代


三、导入 SQL 文件(不是 .dmp)

如果是 .sql 文件:

sqlplus user/password @file.sql

sqlplus user/password < file.sql

四、常见问题

1. 表已存在

TABLE_EXISTS_ACTION=REPLACE

TABLE_EXISTS_ACTION=APPEND

2. 字符集问题

先查看:

SELECT * FROM nls_database_parameters WHERE parameter LIKE '%CHARACTERSET%';

3. 权限不足

确保用户有:

  • IMP_FULL_DATABASE
  • 对应表空间配额

五、典型完整示例

impdp system/oracle \
DIRECTORY=dump_dir \
DUMPFILE=test.dmp \
REMAP_SCHEMA=test:test2 \
REMAP_TABLESPACE=ts_test:ts_test2 \
TABLE_EXISTS_ACTION=REPLACE

如果你能告诉我:

  • Oracle 版本(11g / 12c / 19c)
  • 导入的是 .dmp 还是 .sql
  • 是否跨用户 / 跨表空间

我可以给你精确命令

0