Linux下Oracle数据迁移步骤
导读:Linux下Oracle数据迁移步骤 一 迁移方式与选择 Data Pump 逻辑迁移(expdp/impdp):适合跨平台、跨版本、跨字符集的小中体量库或做全量/增量迁移与对象级迁移;停机时间可控,操作灵活。 RMAN 物理迁移:同平台...
Linux下Oracle数据迁移步骤
一 迁移方式与选择
- Data Pump 逻辑迁移(expdp/impdp):适合跨平台、跨版本、跨字符集的小中体量库或做全量/增量迁移与对象级迁移;停机时间可控,操作灵活。
- RMAN 物理迁移:同平台/相近平台、大体量库优先;通过备份-传输-还原实现,停机短、一致性好,适合同版本或受控升级场景。
- GoldenGate / Data Guard:适合零停机或近零停机迁移与持续同步;GoldenGate 异构/跨版本更灵活,Data Guard 物理备库切换简单。
- OCI Zero Downtime Migration(ZDM):面向云上迁移的一站式方案,支持物理/逻辑流程、对象存储备份、自动化与回滚能力。
- 方法选择建议:优先考虑停机窗口与数据量/版本/字符集/存储架构差异;大体量优先 RMAN,异构或跨版本优先 Data Pump/OGG,云上优先 ZDM。
二 通用准备与评估
- 版本与补丁:目标库补丁版本需等于或高于源库;跨版本迁移时优先逻辑迁移或 OGG。
- 字符集与兼容:尽量保持字符集一致;COMPATIBLE 初始化参数两端一致。
- 归档与备份:源库启用归档日志;先做全量备份并验证可恢复。
- TDE 钱包:若启用 TDE,确保源/目标 Wallet 为 OPEN 且为 AUTOLOGIN,并妥善备份密钥。
- 网络与端口:开放 SSH 22、监听 1521;确保两端时间同步(建议 NTP,偏差不超过6分钟)。
- 存储与目录:目标端预配足够存储;规划 DB_FILE_NAME_CONVERT / LOG_FILE_NAME_CONVERT;创建 Data Pump Directory 并赋权。
- 对象与权限:导出前梳理用户、角色、同义词、dblink、目录、作业、物化视图等依赖;准备回滚与应急脚本。
三 方法一步骤 Data Pump 逻辑迁移
- 源库
- 创建目录对象并赋权
sqlplus / as sysdba
create or replace directory tmpDir as ‘/tempFile’;
grant read, write on directory tmpDir to ; - 导出(示例按 schema)
expdp /@ schemas=< schema_name> directory=tmpDir dumpfile=export.dmp logfile=export.log - 传输到目标
scp -P /tempFile/export.dmp @:/home/tempFile/
- 创建目录对象并赋权
- 目标库
- 创建目录对象并赋权(同上)
- 导入(示例按 schema,含统计信息、索引并行)
impdp /@ schemas=< schema_name> directory=tmpDir dumpfile=export.dmp logfile=import.log \ table_exists_action=replace exclude=statistics \ parallel=4
– 导入后收集统计信息
exec dbms_stats.gather_schema_stats(ownname=> ‘< schema_name> ’, estimate_percent=> DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt=> ‘FOR ALL COLUMNS SIZE AUTO’);
- 提示:跨版本/跨字符集时,使用合适的 REMAP_SCHEMA/REMAP_TABLESPACE/REMAP_DATAFILE 与字符集参数;大数据量建议按表空间或对象分批导出导入。
四 方法二步骤 RMAN 物理迁移
- 源库
- 全备(含归档与当前控制文件、spfile)
rman target /
run {
allocate channel c1 type disk;
backup database plus archivelog;
backup current controlfile format ‘/backup/%T_CTL_%U’;
backup spfile format ‘/backup/%T_SPFILE_%U’;
release channel c1;
} - 记录数据文件与日志文件路径,准备转换参数
SQL> select name from v$datafile;
SQL> select member from v$logfile;
SQL> alter system set db_file_name_convert=‘/u01/oradata/ORCL’,‘/u02/oradata/ORCL’ scope=spfile;
SQL> alter system set log_file_name_convert=‘/u01/oradata/ORCL’,‘/u02/oradata/ORCL’ scope=spfile;
- 全备(含归档与当前控制文件、spfile)
- 目标库
- 安装同版本软件,创建必要目录;将备份文件拷贝至目标端可访问位置
- nomount 启动并恢复
rman target /
startup nomount;
restore spfile from ‘/backup/< spfile_bkp> ’;
startup nomount force;
restore controlfile from ‘/backup/< ctl_bkp> ’;
alter database mount;
restore database;
recover database;
alter database open resetlogs;
- 提示:路径不一致时使用 DB_FILE_NAME_CONVERT / LOG_FILE_NAME_CONVERT;若使用 ASM,需配置 ASM_DISKGROUPS 并在 RMAN 中使用 SET NEWNAME;必要时用 CATALOG START WITH 注册备份片。
五 方法三步骤 GoldenGate 近零停机迁移
- 准备:两端安装 OGG,创建 Manager、检查点表与 TNS 连通;源端开启 Supplemental Logging。
- 抽取与投递:在源端创建 Extract 捕获增量,配置 Pump 投递到目标端 Trail。
- 复制与初始化:在目标端创建 Replicat;先以 Initial Load 同步历史数据(Data Pump/直连加载),完成后切到 增量同步。
- 切换:一致性校验通过后,短暂停写,待 Replicat 追平,切换应用连接至目标库,保留回退窗口。
- 适用:异构平台、跨版本、跨字符集、对停机敏感的业务场景。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux下Oracle数据迁移步骤
本文地址: https://pptw.com/jishu/764246.html
