首页 >
问答 >
云计算 >
Linux Oracle数据库迁移步骤解析
Linux Oracle数据库迁移步骤解析
小樊
41
2025-12-30 06:01:05
Linux Oracle数据库迁移步骤解析
一 迁移方案选型与适用场景
Data Pump 逻辑迁移 expdp/impdp :适合跨版本升级、跨字符集(需谨慎)、选择性迁移(按schemas/tablespaces )、重构对象等场景;停机时间可控但需导出与导入时间窗口。
RMAN 物理迁移 :同平台或跨平台均可,追求最短停机或接近零停机 ;同平台直接备份-还原 ,跨平台使用CONVERT DATABASE 或备份集传输 。
GoldenGate 实时复制 :几乎零停机,支持异构与双向同步,适合高可用与滚动升级,但部署与运维复杂度更高。
迁移前务必完成全量备份 、评估版本/字符集/平台字节序 差异,并在测试环境验证。
二 通用准备与评估
环境核对:记录源库与目标库的Oracle版本、SGA/PGA、字符集 NLS_CHARACTERSET/NLS_NCHAR_CHARACTERSET、平台 ENDIAN_FORMAT(V$TRANSPORTABLE_PLATFORM) 。
兼容性检查:跨平台前用 DBMS_TDB.CHECK_DB 验证可传输性,用 DBMS_TDB.CHECK_EXTERNAL 检查外部表、目录对象等不可直接传输项。
备份与回退:在源库执行RMAN全备+归档日志 ,保留可回退方案。
目标环境:安装同版本(或兼容版本)Oracle软件 ,规划目录结构、表空间、用户、参数文件、TNS 等。
网络与存储:确保带宽/时延 满足大文件传输,准备**校验工具(md5sum/sha256sum)**与传输脚本。
三 方法一 Data Pump 逻辑迁移步骤
源库
创建目录对象并授权:
SQL> create or replace directory tmpDir as ‘/tempFile’ ;
SQL> grant read,write on directory tmpDir to your_user ;
导出(示例按 schema):
$ expdp username/password@tns schemas=dbTest directory=tmpDir dumpfile=export.dmp logfile=export.log parallel=4
传输
$ scp -P 2222 /tempFile/export.dmp user@target:/home/tempFile/
目标库
创建同名目录并授权(同上)。
导入(示例按 schema,含重映射与并行):
$ impdp username/password@tns schemas=dbTest directory=tmpDir dumpfile=export.dmp logfile=import.log \
parallel=4 remap_schema=dbTest:dbTest_TGT remap_tablespace=USERS:USERS_TGT \
table_exists_action=replace exclude=statistics
导入后按需收集统计信息:
SQL> exec dbms_stats.gather_schema_stats(ownname=>‘dbTest_TGT ’, estimate_percent=>DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt=>‘FOR ALL COLUMNS SIZE AUTO’);
提示:可按需选择 FULL/TABLES/TABLESPACES 级别导出;跨字符集迁移需评估风险与转换策略。
四 方法二 RMAN 物理迁移步骤
同平台(Linux→Linux,停机时间最短)
源库备份:
$ rman target /
RMAN> backup database plus archivelog;
传输备份集与控制文件/参数文件至目标库(保持目录结构或记录映射)。
目标库恢复:
RMAN> startup nomount;
RMAN> restore controlfile from ‘/backup/ctl_****.bkp ’;
RMAN> alter database mount;
RMAN> restore database;
RMAN> recover database;
RMAN> alter database open resetlogs;
跨平台(Linux→新平台,如 Windows/Linux 不同 ENDIAN)
源库准备:
SQL> startup mount;
SQL> alter database open read only ;
SQL> SET SERVEROUTPUT ON;
SQL> DECLARE b BOOLEAN; BEGIN b := DBMS_TDB.CHECK_DB(‘目标平台名称 ’); END; /
SQL> BEGIN DBMS_TDB.CHECK_EXTERNAL; END; /
方式A(源端转换):
RMAN> CONVERT DATABASE NEW DATABASE ‘newdb ’ TO PLATFORM ‘目标平台名称 ’ FORMAT ‘/tmp/%U’;
将生成的数据文件、PFILE、转换脚本 crdb.sql 传到目标端;
目标端:SQL> startup nomount; SQL> @crdb.sql
方式B(目标端转换):
将源端数据文件传到目标端;
目标端RMAN:RMAN> CONVERT DATABASE ON TARGET PLATFORM …
打开数据库后,使用 DBNEWID 更改 DBID (如需保持与源库不同)。
提示:跨平台需关注字节序 与平台支持列表 ;RMAN会生成转换脚本 重建控制文件、临时文件、重做日志等对象。
五 方法三 GoldenGate 实时复制步骤
部署 GoldenGate 软件(源/目标端),准备TNS/网络 与表级 supplemental logging 。
源端:
GGSCI> ADD EXTRACT ext1 , TRANLOG, BEGIN NOW
GGSCI> ADD EXTTRAIL /u01/app/oracle/gg/data , EXTRACT ext1
GGSCI> EDIT PARAMS ext1 …
GGSCI> START ext1
目标端:
GGSCI> ADD REPLICAT rep1 , EXTTRAIL /u01/app/oracle/gg/data
GGSCI> EDIT PARAMS rep1 …(MAP schema.table TO schema.table …)
GGSCI> START rep1
校验:比对COUNT/校验和 、延迟、异常告警;切换窗口短暂停写,待追平 后切流。
六 迁移后验证与常见问题
验证清单
对象与数据:按关键业务表做COUNT/抽样校验/校验和 ,比对无效对象 与约束/索引 状态。
性能:检查执行计划 变化、统计信息是否收集、SGA/PGA/IO 配置是否匹配。
应用:回归核心业务链路 ,验证字符集/时区/NLS 相关功能。
高可用:若启用 Data Guard/OGG ,复核保护模式/延迟/切换 流程。
常见问题与要点
字符集:尽量保持一致;确需变更时评估应用影响 与转换成本 。
平台字节序:跨平台 需 RMAN 转换或备份集传输,且检查 ENDIAN_FORMAT 。
目录/外部表/口令文件:BFILENAME、外部表、目录对象、密码文件 等不会随 RMAN 数据文件自动迁移,需要单独处理 。
统计信息:Data Pump 导入时常排除统计信息,导入后重新收集 。
版本兼容:跨版本迁移遵循官方兼容矩阵 ,必要时选择逻辑迁移 或中间版本过渡 。