温馨提示×

linux oracle怎么迁数据

小樊
48
2026-09-04 14:08:34
栏目: 云计算

在 Linux 环境下迁移 Oracle 数据库数据,常见做法有几种,取决于你是否迁移整个库、是否跨版本、是否跨服务器。下面按最常用场景给你讲清楚。


一、整个数据库迁移(推荐:RMAN)

适用场景

  • 同版本或升级版本
  • 整机/整库搬迁
  • 生产环境最稳妥

步骤(异机恢复)

  1. 源库做全备
rman target /
BACKUP DATABASE PLUS ARCHIVELOG;
  1. 拷贝备份文件到目标机
scp /backup/* oracle@newhost:/backup/
  1. 目标机准备
  • 安装相同版本 Oracle
  • 创建相同 SID
  • 配置 listener.ora / tnsnames.ora
  1. 恢复控制文件
rman target /
RESTORE CONTROLFILE FROM '/backup/xxx.ctl';
  1. 恢复数据库
RESTORE DATABASE;
RECOVER DATABASE;
ALTER DATABASE OPEN RESETLOGS;

✅ 优点:最安全、可恢复到时间点
❌ 缺点:操作复杂


二、只迁用户/表数据(expdp / impdp)

适用场景

  • 只迁某些用户
  • 跨小版本
  • 不同服务器

源库导出

expdp system/password \
DIRECTORY=dpdir \
SCHEMAS=scott \
DUMPFILE=scott.dmp \
LOG_FILE=exp.log

目标库导入

impdp system/password \
DIRECTORY=dpdir \
REMAP_SCHEMA=scott:scott_new \
DUMPFILE=scott.dmp

✅ 简单高效
❌ 不含物理结构(表空间需提前建)


三、同机迁表空间(Transport Tablespace)

适合:

  • 大表迁移
  • 不同库之间

步骤简述:

ALTER TABLESPACE users READ ONLY;
expdp ... TRANSPORT_TABLESPACES=users

拷贝 .dbf + dmp

impdp ... TRANSPORT_TABLESPACES=users

四、冷备份(最粗暴)

  1. 停库
sqlplus / as sysdba
SHUTDOWN IMMEDIATE;
  1. 拷贝
scp $ORACLE_HOME/dbs/*
scp /u01/oradata/*
  1. 目标机启动

⚠ 仅限同版本、同路径或改参数文件


五、你该怎么选?

场景 推荐方式
整机迁移 RMAN
迁几个用户 expdp/impdp
大表迁移 表空间传输
测试环境 冷备

六、我可以继续帮你

你可以告诉我:

  1. Oracle 版本(11g / 12c / 19c?)
  2. 是否同机 / 同版本
  3. 迁全库还是部分用户

我可以直接给你可执行的命令清单

0