在 Linux 环境下迁移 Oracle 数据库,常见场景有三种,不同场景做法差别很大。下面按从常用到专业的顺序给你一个完整指引。
| 场景 | 说明 | 推荐方式 |
|---|---|---|
| 同版本、同平台迁移 | Linux → Linux,Oracle 版本相同 | Data Pump(expdp/impdp)✅ |
| 跨版本 / 跨平台 | 不同 OS 或 Oracle 版本 | Data Pump + 升级 |
| 整机 / 数据库文件迁移 | 迁移服务器、存储 | RMAN |
| 上云 / 大库迁移 | 停机时间短 | Data Guard / RMAN |
适用于 绝大多数生产环境
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
✅ 优点
在新 Linux 服务器安装 相同版本 Oracle 软件
impdp system/password full=y directory=dp_dir dumpfile=full_%U.dmp logfile=imp.log
⚠️ 注意:
rman target /
RUN {
BACKUP DATABASE PLUS ARCHIVELOG;
}
scp -r /u01/backup newserver:/u01/backup
rman target /
STARTUP MOUNT;
RESTORE DATABASE;
RECOVER DATABASE;
ALTER DATABASE OPEN RESETLOGS;
✅ 优点
仅适合 允许长时间停机
⚠️ 风险高,不建议生产环境
-- 检查数据库状态
SELECT name, open_mode FROM v$database;
-- 检查无效对象
SELECT COUNT(*) FROM dba_objects WHERE status='INVALID';
-- 检查字符集
SELECT * FROM nls_database_parameters WHERE parameter LIKE '%CHARACTERSET%';
✅ 确认:
我可以给你 精确迁移方案,你只需要告诉我:
我可以给你 一步一步的命令级方案 ✅