温馨提示×

Linux Oracle如何迁移

小樊
46
2026-07-01 04:26:42
栏目: 云计算

Linux 环境下迁移 Oracle 数据库,常见场景有三种,不同场景做法差别很大。下面按从常用到专业的顺序给你一个完整指引。


一、常见迁移场景说明

场景 说明 推荐方式
同版本、同平台迁移 Linux → Linux,Oracle 版本相同 Data Pump(expdp/impdp)✅
跨版本 / 跨平台 不同 OS 或 Oracle 版本 Data Pump + 升级
整机 / 数据库文件迁移 迁移服务器、存储 RMAN
上云 / 大库迁移 停机时间短 Data Guard / RMAN

二、最常用方案:Data Pump(推荐)

适用于 绝大多数生产环境

1️⃣ 源库导出

su - oracle
mkdir -p /u01/dump

创建目录对象:

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

导出全库:

expdp system/password full=y directory=dp_dir dumpfile=full_%U.dmp logfile=exp.log parallel=4

✅ 优点

  • 灵活
  • 支持跨版本
  • 不需要停库太久

2️⃣ 在新服务器导入

在新 Linux 服务器安装 相同版本 Oracle 软件

impdp system/password full=y directory=dp_dir dumpfile=full_%U.dmp logfile=imp.log

⚠️ 注意:

  • 字符集需一致
  • 表空间需提前规划

三、RMAN 迁移(适合大库 / 相同平台)

适用场景

  • 数据库 几十 TB
  • 要求 一致性
  • Linux → Linux

基本流程

1️⃣ 源库备份

rman target /
RUN {
  BACKUP DATABASE PLUS ARCHIVELOG;
}

2️⃣ 拷贝到新服务器

scp -r /u01/backup newserver:/u01/backup

3️⃣ 新服务器恢复

rman target /
STARTUP MOUNT;
RESTORE DATABASE;
RECOVER DATABASE;
ALTER DATABASE OPEN RESETLOGS;

✅ 优点

  • 完整
    ❌ 缺点
  • 操作复杂

四、冷备迁移(不推荐,但简单)

仅适合 允许长时间停机

步骤

  1. 关闭数据库
  2. 拷贝:
    • 数据文件
    • 控制文件
    • 日志文件
  3. 在新服务器启动

⚠️ 风险高,不建议生产环境


五、迁移后必做检查 ✅

-- 检查数据库状态
SELECT name, open_mode FROM v$database;

-- 检查无效对象
SELECT COUNT(*) FROM dba_objects WHERE status='INVALID';

-- 检查字符集
SELECT * FROM nls_database_parameters WHERE parameter LIKE '%CHARACTERSET%';

六、迁移前准备清单(非常重要)

✅ 确认:

  • Oracle 版本
  • OS 架构
  • 字符集
  • 表空间大小
  • 是否有分区 / LOB
  • 停机时间窗口

七、你可以直接告诉我

我可以给你 精确迁移方案,你只需要告诉我:

  1. Oracle 版本(如 11g / 12c / 19c)
  2. 源 OS 和目标 OS
  3. 数据库大小
  4. 是否允许停机
  5. 是否上云

我可以给你 一步一步的命令级方案

0