Linux Oracle迁移方法概览
在 Linux 环境下,Oracle 数据库迁移常见做法包括:Data Pump 逻辑迁移、RMAN 物理迁移/克隆、跨平台传输数据库/表空间(RMAN TDB)、GoldenGate 实时复制,以及冷备份文件拷贝/重建控制文件等。选型通常取决于数据规模、停机窗口、是否跨平台/跨字符集、以及是否需要零或最小停机。
常用方法对比
| 方法 |
适用场景 |
停机窗口 |
跨平台 |
关键要点 |
| Data Pump(expdp/impdp) |
中小规模、结构+数据迁移、跨版本/跨库 |
导出+导入期间 |
支持(但需字符集/版本兼容) |
并行、压缩、remap_schema/remap_tablespace、network_link |
| RMAN 物理迁移/克隆 |
大规模、一致性要求高、快速恢复 |
需短暂停机(离线拷贝/切换) |
支持(配合跨平台转换) |
备份集/镜像拷贝、SET NEWNAME、DB_FILE_NAME_CONVERT/LOG_FILE_NAME_CONVERT、RESETLOGS |
| 传输表空间(TTS) |
少量/整库子集快速迁移 |
表空间只读 |
支持(需相同或可转换字节序) |
自包含检查、只读、导出元数据+转换数据文件、导入元数据 |
| 传输数据库(RMAN TDB) |
整库跨平台迁移 |
只读窗口+转换时间 |
支持 |
DBMS_TDB 检查、CONVERT DATABASE、生成 transportscript |
| GoldenGate |
近零停机、异构/跨平台、持续同步 |
可近零停机 |
支持 |
部署 Extract/Replicat、初始化加载+增量同步、DDL 支持需配置 |
| 冷备份/文件拷贝+重建控制文件 |
同平台、版本一致、快速克隆 |
停机窗口较长 |
不支持 |
一致性停库、拷贝数据/日志/控制文件、CREATE CONTROLFILE 脚本 |
| 以上方法均为 Linux 上常用路径,具体命令与参数示例见下文要点。 |
|
|
|
|
关键方法要点与常用命令
-
Data Pump 逻辑迁移
- 源端:创建目录对象并授权;使用 expdp 并行导出(可压缩、network_link)。
- 目标端:创建目录对象;使用 impdp 导入,配合 remap_schema/remap_tablespace 做映射;必要时设置 table_exists_action=replace。
- 示例要点:
- create directory dpump_dir as ‘/data/dump’;
- expdp user/pass schemas=SRC_DIR directory=dpump_dir dumpfile=exp.dmp logfile=exp.log parallel=4 compression=all
- impdp user/pass directory=dpump_dir dumpfile=exp.dmp logfile=imp.log remap_schema=SRC_DIR:TGT_DIR
-
RMAN 物理迁移/克隆
- 源端:RMAN 全库+归档备份(或离线拷贝数据文件/控制文件/归档)。
- 目标端:设置 DB_FILE_NAME_CONVERT/LOG_FILE_NAME_CONVERT;RMAN RESTORE/RECOVER;必要时 OPEN RESETLOGS。
- 示例要点:
- alter system set DB_FILE_NAME_CONVERT=‘/old’,‘/new’ scope=spfile;
- startup nomount; restore controlfile from ‘/backup/ctl.bak’;
- restore database; recover database; alter database open resetlogs;
-
跨平台传输数据库/表空间(RMAN TDB)
- 平台/字节序:查询 v$transportable_platform;跨平台需相同或可转换字节序。
- 传输数据库:源库只读;用 DBMS_TDB.CHECK_DB 检查;RMAN CONVERT DATABASE 生成脚本与文件;目标端执行脚本创建并打开新库。
- 传输表空间:执行 DBMS_TTS.TRANSPORT_SET_CHECK 确保自包含;表空间置只读;导出元数据;按需要在源/目标端用 CONVERT TABLESPACE/CONVERT DATAFILE 处理字节序;导入元数据后改回读写。
- 示例要点:
- DBMS_TDB.CHECK_DB(‘Linux x86 64-bit’);
- RMAN> CONVERT DATABASE NEW DATABASE ‘newdb’ TO PLATFORM ‘Linux x86 64-bit’ …
- expdp … TRANSPORT_TABLESPACES=tbs1,tbs2
- RMAN> CONVERT DATAFILE … TO PLATFORM …
- impdp … TRANSPORT_DATAFILES=…
-
GoldenGate 实时复制
- 适用:近零停机、异构/跨平台、持续同步与回切演练。
- 步骤:安装 OGG;配置 Extract/Replicat;初始化加载(Data Pump/备份恢复/RMAN 增量)+增量同步;校验一致性后切换。
-
冷备份/文件拷贝+重建控制文件
- 同平台快速克隆:一致性停库;拷贝 数据文件/联机日志/控制文件;使用 ALTER DATABASE BACKUP CONTROLFILE TO TRACE 生成 CREATE CONTROLFILE 脚本;在新库执行脚本并打开。
选型建议与注意事项
- 规模与停机:中小规模、可接受维护窗口优先 Data Pump;大规模、追求一致性与速度优先 RMAN;近零停机优先 GoldenGate。
- 平台与字节序:跨平台整库迁移用 RMAN TDB;跨平台子集迁移用 TTS(需相同或可转换字节序)。
- 字符集与兼容性:尽量保持 字符集一致(如 AL32UTF8);跨版本注意 COMPATIBLE/参数 差异与对象/权限兼容性。
- 数据与对象映射:导入前规划 表空间/用户/目录 映射;必要时使用 remap_schema/remap_tablespace;导入后重建索引并收集统计信息。
- 一致性与回退:迁移前做好 全量备份 与校验;保留源库只读窗口或回放链路;切换后做 抽样对比与 AWR/ASH 性能验证。