Linux Oracle数据库迁移步骤解析
导读:Linux Oracle数据库迁移步骤解析 一 迁移方案选型与适用场景 Data Pump 逻辑迁移 expdp/impdp:适合跨版本升级、跨字符集(需谨慎)、选择性迁移(按schemas/tablespaces)、重构对象等场景;停机...
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 导入时常排除统计信息,导入后重新收集。
- 版本兼容:跨版本迁移遵循官方兼容矩阵,必要时选择逻辑迁移或中间版本过渡。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux Oracle数据库迁移步骤解析
本文地址: https://pptw.com/jishu/783945.html
