温馨提示×

linux oracle怎样迁移数据

小樊
55
2026-10-04 11:24:46
栏目: 云计算

在 Linux 环境下迁移 Oracle 数据库数据,常见场景和对应方法如下,你可以根据实际需求选择。


一、常见迁移场景

  1. 同版本 Oracle,同平台(Linux → Linux)
  2. 跨版本 / 跨平台迁移
  3. 只迁移部分表 / 用户
  4. 整库迁移(含参数、用户、权限)

二、常用迁移方法

✅ 方法 1:EXPDP / IMPDP(推荐,最常用)

适用:用户级、表级、 schema 级迁移

1️⃣ 源库导出(EXPDP)

expdp system/password \
DIRECTORY=dp_dir \
DUMPFILE=expdp_full.dmp \
LOGFILE=expdp.log \
SCHEMAS=scott

创建目录对象:

CREATE DIRECTORY dp_dir AS '/u01/dump';
GRANT READ, WRITE ON DIRECTORY dp_dir TO system;

2️⃣ 拷贝 dmp 文件到目标服务器

scp expdp_full.dmp oracle@目标IP:/u01/dump/

3️⃣ 目标库导入(IMPDP)

impdp system/password \
DIRECTORY=dp_dir \
DUMPFILE=expdp_full.dmp \
LOGFILE=impdp.log \
REMAP_SCHEMA=scott:scott_new

✅ 优点:稳定、可控、支持并行
❌ 缺点:不支持裸文件系统、需目录权限


✅ 方法 2:RMAN 备份恢复(整库迁移)

适用:整机 / 全库迁移

源库

rman target /
BACKUP DATABASE PLUS ARCHIVELOG;

目标库

rman target /
RESTORE DATABASE;
RECOVER DATABASE;

✅ 优点:最完整
❌ 缺点:复杂、版本需一致


✅ 方法 3:冷备份(停库拷贝)

适用:测试库、可停机

  1. 停止 Oracle
sqlplus / as sysdba
SHUTDOWN IMMEDIATE
  1. 拷贝文件
cp -r /u01/oradata /目标目录
cp $ORACLE_HOME/dbs /目标目录
  1. 启动数据库

✅ 简单
❌ 必须停机


✅ 方法 4:DBLINK + INSERT(小数据)

INSERT INTO table_new
SELECT * FROM table_old@dblink;

✅ 灵活
❌ 慢、不适合大表


✅ 方法 5:GoldenGate / DataGuard(不停机)

适用:生产环境、零停机

  • DataGuard:物理/逻辑备库
  • GoldenGate:实时同步

三、迁移后检查

SELECT * FROM dba_objects WHERE status='INVALID';
@?/rdbms/admin/utlrp.sql

检查用户、表空间、权限是否一致。


四、推荐方案总结

场景 推荐方式
整个库 RMAN
用户/表 EXPDP/IMPDP
测试库 冷备
生产零停机 DataGuard / OGG

如果你能告诉我:

  • Oracle 版本(11g / 12c / 19c)
  • 是否同服务器
  • 数据量大小
  • 是否允许停机

我可以给你 具体命令模板。

0 踩