GoldenGate教程FG058-OGG跨数据库版本同步(11g到19c)实战
本文档风哥主要介绍Oracle GoldenGate跨数据库版本同步(11g到19c)的实战方法,包括跨版本同步概念、版本兼容性、配置方法、初始数据加载、版本切换验证等内容,风哥教程参考GoldenGate官方文档升级迁移、版本兼容性等内容,适合需要进行数据库版本升级迁移的OGG运维人员参考。
Part01-基础概念与理论知识
1.1 跨版本同步概念与挑战
跨版本同步是指使用OGG在不同版本的Oracle数据库之间进行数据同步。在数据库升级迁移场景中,OGG可以实现零停机或最小停机的平滑迁移。更多视频教程www.fgedu.net.cn
- OGG版本兼容性问题
- 数据库特性差异
- 数据类型变化
- 字符集兼容性
- 性能差异处理
# 1. 数据库升级迁移
场景:从Oracle 11g升级到19c
需求:最小停机时间
方案:OGG双向同步+快速切换
# 2. 异构环境同步
场景:不同版本数据库之间数据同步
需求:实时数据同步
方案:OGG单向或双向同步
# 3. 灾难恢复
场景:主备库版本不同
需求:数据容灾
方案:OGG实时复制
# 4. 数据库整合
场景:多个低版本数据库整合到高版本
需求:数据集中
方案:OGG多源同步
# 跨版本同步架构
+—————-+ +—————-+
| Oracle 11g | | Oracle 19c |
| (源端) | | (目标端) |
+—————-+ +—————-+
| ^
| Extract | Replicat
v |
+—————-+ +—————-+
| OGG Classic | Trail | OGG 21c |
| (11g兼容) | ——> | (19c) |
+—————-+ +—————-+
1.2 OGG版本兼容性矩阵
选择合适的OGG版本是跨版本同步成功的关键:
| OGG版本 | 支持的Oracle版本 | 推荐场景 |
|———-|—————————|——————|
| OGG 11.2 | Oracle 10g, 11g | 旧系统维护 |
| OGG 12.3 | Oracle 11g, 12c | 11g到12c迁移 |
| OGG 19.1 | Oracle 11g, 12c, 19c | 11g到19c迁移 |
| OGG 21.x | Oracle 12c, 19c, 21c | 新系统部署 |
# 跨版本同步OGG版本选择原则
# 原则1:向下兼容
– OGG高版本可以读取低版本生成的Trail文件
– OGG低版本不能读取高版本生成的Trail文件
# 原则2:源端优先
– 源端OGG版本应与源数据库版本匹配
– 目标端OGG版本应与目标数据库版本匹配
# 原则3:中间版本
– 对于跨大版本迁移,可使用中间版本OGG
– 如11g到19c,可使用OGG 19.1
# 推荐配置(11g到19c迁移)
源端:
– Oracle 11.2.0.4
– OGG 19.1 for Oracle 11g
目标端:
– Oracle 19.3
– OGG 21.x for Oracle 19c
Trail格式:
– 使用OGG 19.1格式(兼容两端)
1.3 Oracle 11g与19c差异分析
了解Oracle 11g与19c的差异有助于处理跨版本同步问题:
| 特性 | Oracle 11g | Oracle 19c | OGG处理方式 |
|——————|——————-|————————|——————-|
| VARCHAR2最大长度 | 4000字节 | 32767字节 | 自动兼容 |
| NUMBER精度 | 支持 | 支持 | 完全兼容 |
| JSON数据类型 | 不支持 | 原生支持 | 需要转换 |
| BOOLEAN类型 | 不支持 | 支持 | 需要转换 |
| 时间类型 | DATE/TIMESTAMP | 增强支持 | 完全兼容 |
# 功能特性差异
| 特性 | Oracle 11g | Oracle 19c | 迁移注意事项 |
|——————|——————-|————————|——————-|
| 分区表 | 基础分区 | 自动分区、混合分区 | 需要评估 |
| 索引 | 基础索引 | 自动索引 | 需要评估 |
| 物化视图 | 支持 | 增强支持 | 需要重新创建 |
| PL/SQL | 11g语法 | 增强语法 | 需要验证兼容性 |
| 安全特性 | 基础安全 | 增强安全特性 | 需要配置 |
# 字符集兼容性
# 常见字符集
– AL32UTF8:Unicode字符集,推荐使用
– ZHS16GBK:中文GBK字符集
– US7ASCII:ASCII字符集
# 字符集迁移注意事项
1. 源端和目标端字符集应兼容
2. 数据转换可能影响性能
3. 特殊字符需要验证
# 字符集检查
SQL> SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER LIKE ‘%CHARACTERSET%’;
PARAMETER VALUE
—————————— ——————–
NLS_CHARACTERSET AL32UTF8
NLS_NCHAR_CHARACTERSET AL16UTF16
Part02-生产环境规划与建议
2.1 跨版本同步规划建议
制定详细的跨版本同步规划是成功迁移的基础:
- 评估数据库版本差异
- 选择合适的OGG版本
- 设计同步架构方案
- 制定详细迁移计划
- 准备回退方案
# 第一阶段:准备阶段(2周)
– 环境准备和OGG安装
– 网络配置和连通性测试
– 用户权限配置
– 测试环境搭建
# 第二阶段:测试阶段(2周)
– 初始数据加载测试
– 增量同步测试
– 数据验证测试
– 性能测试
# 第三阶段:预迁移阶段(1周)
– 生产环境配置
– 初始数据加载
– 增量同步启动
– 数据一致性验证
# 第四阶段:正式迁移(1天)
– 应用停机
– 数据同步追平
– 数据一致性验证
– 应用切换
# 第五阶段:稳定运行(1周)
– 监控和告警
– 性能优化
– 问题处理
– 文档整理
# 迁移环境规划
| 环境 | 数据库版本 | OGG版本 | 主机配置 | 角色 |
|———-|————–|———–|——————|——–|
| 源端生产 | Oracle 11.2.0.4 | OGG 19.1 | 16C/64G/500G SSD | 源端 |
| 目标生产 | Oracle 19.3 | OGG 21.x | 32C/128G/1T SSD | 目标端 |
| 测试源端 | Oracle 11.2.0.4 | OGG 19.1 | 8C/32G/200G | 测试 |
| 测试目标 | Oracle 19.3 | OGG 21.x | 8C/32G/200G | 测试 |
2.2 版本迁移策略选择
根据业务需求选择合适的迁移策略:
适用场景:
– 允许短暂停机(1-2小时)
– 迁移后不再回退
– 数据量中等
步骤:
1. 初始数据加载到目标端
2. 启动OGG增量同步
3. 应用停机
4. 等待同步追平
5. 切换应用到目标端
优点:
– 配置简单
– 风险较低
– 停机时间短
缺点:
– 需要停机
– 回退困难
# 策略2:OGG双向同步迁移
适用场景:
– 需要零停机
– 可能需要回退
– 数据量大
步骤:
1. 初始数据加载到目标端
2. 启动源到目标同步
3. 启动目标到源同步
4. 应用切换到目标端
5. 稳定后停止回退同步
优点:
– 零停机
– 支持快速回退
– 风险最低
缺点:
– 配置复杂
– 需要处理冲突
– 资源消耗大
# 策略3:OGG+Data Pump迁移
适用场景:
– 数据量巨大
– 允许较长停机窗口
– 需要数据转换
步骤:
1. 使用Data Pump导出数据
2. 传输并导入到目标端
3. 启动OGG增量同步
4. 切换应用
优点:
– 适合大数据量
– 支持数据转换
– 可并行处理
缺点:
– 停机时间长
– 需要额外存储
2.3 风险评估与应对措施
识别风险并制定应对措施是迁移成功的关键:
| 风险项 | 风险等级 | 影响范围 | 应对措施 |
|——————–|———|———–|———————————-|
| OGG版本不兼容 | 高 | 迁移失败 | 提前测试验证,准备兼容版本 |
| 数据类型不兼容 | 中 | 数据丢失 | 提前识别,制定转换方案 |
| 字符集不兼容 | 高 | 数据乱码 | 统一字符集,测试验证 |
| 性能不达标 | 中 | 延迟增大 | 优化配置,增加资源 |
| 网络不稳定 | 中 | 同步中断 | 网络优化,断点续传 |
| 数据不一致 | 高 | 业务异常 | 数据验证,双向同步 |
| 切换失败 | 高 | 业务中断 | 回退方案,快速切换 |
# 应对措施详细说明
# 1. OGG版本不兼容
预防措施:
– 在测试环境完整测试
– 使用兼容的OGG版本
– 准备备用版本
应急措施:
– 快速切换到兼容版本
– 使用中间版本OGG
# 2. 数据类型不兼容
预防措施:
– 提前扫描所有表结构
– 识别不兼容的数据类型
– 制定转换方案
应急措施:
– 使用COLMAP转换
– 创建中间转换表
# 3. 数据不一致
预防措施:
– 启用数据校验
– 定期数据比对
– 使用双向同步
应急措施:
– 停止同步
– 数据修复
– 重新初始化
# 回退方案
1. 保留源端环境不删除
2. 双向同步支持快速回退
3. 准备完整的回退脚本
4. 记录详细的回退步骤
Part03-生产环境项目实施方案
3.1 OGG跨版本配置实战
3.1.1 源端OGG配置(Oracle 11g)
$ mkdir -p /GoldenGate/app
$ chown oracle:oinstall /GoldenGate/app
$ cd /GoldenGate/app
$ unzip /software/V983653-01.zip
$ ./ggsci
GGSCI (fgedu11g.net.cn)> CREATE SUBDIRS
Creating subdirectories under current directory /GoldenGate/app
Parameter files /GoldenGate/app/dirprm: created
Report files /GoldenGate/app/dirrpt: created
Checkpoint files /GoldenGate/app/dirchk: created
Process status files /GoldenGate/app/dirpcs: created
SQL script files /GoldenGate/app/dirsql: created
Database definitions files /GoldenGate/app/dirdef: created
Extract data files /GoldenGate/app/dirdat: created
Temporary files /GoldenGate/app/dirtmp: created
Credential store files /GoldenGate/app/dircrd: created
Command files /GoldenGate/app/dircmd: created
Output files /GoldenGate/app/dirout: created
# 步骤2:配置数据库支持
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
SQL> ALTER DATABASE FORCE LOGGING;
SQL> ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION=TRUE SCOPE=BOTH;
# 步骤3:创建OGG用户
SQL> CREATE USER fgedu IDENTIFIED BY fgedu123;
SQL> GRANT CONNECT, RESOURCE TO fgedu;
SQL> GRANT SELECT ANY DICTIONARY TO fgedu;
SQL> GRANT SELECT ANY TABLE TO fgedu;
SQL> GRANT ALTER ANY TABLE TO fgedu;
SQL> GRANT EXECUTE ON DBMS_CAPTURE_ADM TO fgedu;
SQL> EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE(‘FGEDU’);
# 步骤4:配置Manager
GGSCI (fgedu11g.net.cn)> EDIT PARAMS MGR
PORT 7809
PURGEOLDEXTRACTS /GoldenGate/app/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 7
# 步骤5:配置Extract进程
GGSCI (fgedu11g.net.cn)> EDIT PARAMS E_FGEDU11
EXTRACT E_FGEDU11
USERID fgedu, PASSWORD fgedu123
EXTTRAIL /GoldenGate/app/dirdat/ea
TRANLOGOPTIONS EXCLUDETAG 99
TABLE fgedu01.*;
TABLE fgedu02.*;
# 步骤6:添加表级补充日志
GGSCI (fgedu11g.net.cn)> DBLOGIN USERID fgedu, PASSWORD fgedu123
GGSCI (fgedu11g.net.cn)> ADD TRANDATA fgedu01.*
GGSCI (fgedu11g.net.cn)> ADD TRANDATA fgedu02.*
# 步骤7:创建Extract进程
GGSCI (fgedu11g.net.cn)> ADD EXTRACT E_FGEDU11, TRANLOG, BEGIN NOW
GGSCI (fgedu11g.net.cn)> ADD EXTTRAIL /GoldenGate/app/dirdat/ea, EXTRACT E_FGEDU11
# 步骤8:生成表定义文件
GGSCI (fgedu11g.net.cn)> EDIT PARAMS DEFGEN
DEFSFILE /GoldenGate/app/dirdef/fgedu_tables.def
TABLE fgedu01.*;
TABLE fgedu02.*;
GGSCI (fgedu11g.net.cn)> EXIT
$ ./defgen paramfile dirprm/defgen.prm
# 步骤9:启动Extract
GGSCI (fgedu11g.net.cn)> START EXTRACT E_FGEDU11
Sending START request to MANAGER …
EXTRACT E_FGEDU11 starting
GGSCI (fgedu11g.net.cn)> INFO EXTRACT E_FGEDU11
EXTRACT E_FGEDU11 Last Started 2026-04-10 10:00:00 Status RUNNING
Checkpoint Lag 00:00:00 (updated 00:00:01 ago)
Log Read Checkpoint Oracle Redo Logs
2026-04-10 10:00:00 Seqno 1234, RBA 12345678
SCN 0.123456789 (123456789)
3.1.2 目标端OGG配置(Oracle 19c)
$ mkdir -p /GoldenGate/app
$ chown oracle:oinstall /GoldenGate/app
$ cd /GoldenGate/app
$ unzip /software/V983654-01.zip
$ ./ggsci
GGSCI (fgedu19c.net.cn)> CREATE SUBDIRS
# 步骤2:创建检查点表
SQL> CREATE USER fgedu IDENTIFIED BY fgedu123;
SQL> GRANT CONNECT, RESOURCE, DBA TO fgedu;
GGSCI (fgedu19c.net.cn)> DBLOGIN USERID fgedu, PASSWORD fgedu123
GGSCI (fgedu19c.net.cn)> ADD CHECKPOINTTABLE fgedu.ogg_chkpt
# 步骤3:复制定义文件
$ scp fgedu11g:/GoldenGate/app/dirdef/fgedu_tables.def /GoldenGate/app/dirdef/
# 步骤4:配置Manager
GGSCI (fgedu19c.net.cn)> EDIT PARAMS MGR
PORT 7809
PURGEOLDEXTRACTS /GoldenGate/app/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 7
ACCESSRULE, PROG *, IPADDR 192.168.1.*, ALLOW
# 步骤5:配置Replicat进程
GGSCI (fgedu19c.net.cn)> EDIT PARAMS R_FGEDU19
REPLICAT R_FGEDU19
USERID fgedu, PASSWORD fgedu123
SOURCEDEFS /GoldenGate/app/dirdef/fgedu_tables.def
MAP fgedu01.*, TARGET fgedu01.*;
MAP fgedu02.*, TARGET fgedu02.*;
# 步骤6:创建Replicat进程
GGSCI (fgedu19c.net.cn)> ADD REPLICAT R_FGEDU19, EXTTRAIL /GoldenGate/app/dirdat/ea, CHECKPOINTTABLE fgedu.ogg_chkpt
# 步骤7:配置数据泵传输
# 源端配置Data Pump
GGSCI (fgedu11g.net.cn)> EDIT PARAMS P_FGEDU11
EXTRACT P_FGEDU11
USERID fgedu, PASSWORD fgedu123
RMTHOST fgedu19c.net.cn, MGRPORT 7809
RMTTRAIL /GoldenGate/app/dirdat/ea
TABLE fgedu01.*;
TABLE fgedu02.*;
GGSCI (fgedu11g.net.cn)> ADD EXTRACT P_FGEDU11, EXTTRAILSOURCE /GoldenGate/app/dirdat/ea
GGSCI (fgedu11g.net.cn)> ADD RMTTRAIL /GoldenGate/app/dirdat/ea, EXTRACT P_FGEDU11
GGSCI (fgedu11g.net.cn)> START EXTRACT P_FGEDU11
# 步骤8:启动Replicat
GGSCI (fgedu19c.net.cn)> START REPLICAT R_FGEDU19
Sending START request to MANAGER …
REPLICAT R_FGEDU19 starting
GGSCI (fgedu19c.net.cn)> INFO REPLICAT R_FGEDU19
REPLICAT R_FGEDU19 Last Started 2026-04-10 10:30:00 Status RUNNING
Checkpoint Lag 00:00:00 (updated 00:00:02 ago)
Process ID 23456
Log Read Checkpoint File /GoldenGate/app/dirdat/ea000000
2026-04-10 10:00:00 RBA 1234
3.2 初始数据加载实战
3.2.1 使用Data Pump进行初始加载
SQL> SELECT CURRENT_SCN FROM V$DATABASE;
CURRENT_SCN
———–
1234567890
# 步骤2:导出数据
$ expdp fgedu/fgedu@fgedu11g \
schemas=fgedu01,fgedu02 \
directory=DATA_PUMP_DIR \
dumpfile=initial_load_%U.dmp \
logfile=initial_load.log \
parallel=4 \
flashback_scn=1234567890
Export: Release 11.2.0.4.0 – Production on Fri Apr 10 10:00:00 2026
Connected to: Oracle Database 11g Enterprise Edition
Starting “FGEDU”.”SYS_EXPORT_SCHEMA_01″: fgedu/********@fgedu11g schemas=fgedu01,fgedu02 directory=DATA_PUMP_DIR dumpfile=initial_load_%U.dmp logfile=initial_load.log parallel=4 flashback_scn=1234567890
Estimated total size using BLOCKS method: 50 GB
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
. . exported “FGEDU01″.”FGEDU_ORDERS” 25.6 GB 1000000 rows
. . exported “FGEDU01″.”FGEDU_PRODUCTS” 12.8 GB 500000 rows
. . exported “FGEDU02″.”FGEDU_CUSTOMERS” 6.4 GB 200000 rows
Master table “FGEDU”.”SYS_EXPORT_SCHEMA_01″ successfully loaded/unloaded
******************************************************************************
Dump file set for FGEDU.SYS_EXPORT_SCHEMA_01 is:
/GoldenGate/app/dump/initial_load_01.dmp
/GoldenGate/app/dump/initial_load_02.dmp
/GoldenGate/app/dump/initial_load_03.dmp
/GoldenGate/app/dump/initial_load_04.dmp
Job “FGEDU”.”SYS_EXPORT_SCHEMA_01″ successfully completed at 10:30:00
# 步骤3:传输数据文件
$ scp /GoldenGate/app/dump/initial_load_*.dmp fgedu19c:/GoldenGate/app/dump/
# 步骤4:导入数据
$ impdp fgedu/fgedu@fgedu19c \
schemas=fgedu01,fgedu02 \
directory=DATA_PUMP_DIR \
dumpfile=initial_load_%U.dmp \
logfile=initial_import.log \
parallel=4 \
table_exists_action=REPLACE
Import: Release 19.0.0.0.0 – Production on Fri Apr 10 11:00:00 2026
Connected to: Oracle Database 19c Enterprise Edition
Master table “FGEDU”.”SYS_IMPORT_FULL_01″ successfully loaded/unloaded
Starting “FGEDU”.”SYS_IMPORT_FULL_01″: fgedu/********@fgedu19c schemas=fgedu01,fgedu02 directory=DATA_PUMP_DIR dumpfile=initial_load_%U.dmp logfile=initial_import.log parallel=4 table_exists_action=REPLACE
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
. . imported “FGEDU01″.”FGEDU_ORDERS” 25.6 GB 1000000 rows
. . imported “FGEDU01″.”FGEDU_PRODUCTS” 12.8 GB 500000 rows
. . imported “FGEDU02″.”FGEDU_CUSTOMERS” 6.4 GB 200000 rows
Job “FGEDU”.”SYS_IMPORT_FULL_01″ successfully completed at 11:30:00
# 步骤5:启动Replicat从指定SCN开始
GGSCI (fgedu19c.net.cn)> ALTER REPLICAT R_FGEDU19, EXTSEQNO 0, EXTRBA 0
GGSCI (fgedu19c.net.cn)> START REPLICAT R_FGEDU19, AFTERCSN 1234567890
3.2.2 使用OGG Initial Load
GGSCI (fgedu11g.net.cn)> EDIT PARAMS E_INIT
EXTRACT E_INIT
USERID fgedu, PASSWORD fgedu123
RMTHOST fgedu19c.net.cn, MGRPORT 7809
RMTFILE /GoldenGate/app/dirdat/il, MEGABYTES 500
TABLE fgedu01.*;
TABLE fgedu02.*;
# 步骤2:运行Initial Load
GGSCI (fgedu11g.net.cn)> ADD EXTRACT E_INIT, SOURCEISTABLE
GGSCI (fgedu11g.net.cn)> START EXTRACT E_INIT
Sending START request to MANAGER …
EXTRACT E_INIT starting
# 步骤3:监控Initial Load进度
GGSCI (fgedu11g.net.cn)> INFO EXTRACT E_INIT
EXTRACT E_INIT Last Started 2026-04-10 10:00:00 Status RUNNING
Checkpoint Lag Not Available
Log Read Checkpoint Table FGEDU01.FGEDU_ORDERS
2026-04-10 10:15:00 Record 500000
# 步骤4:配置Initial Load Replicat
GGSCI (fgedu19c.net.cn)> EDIT PARAMS R_INIT
SPECIALRUN
END RUNTIME
USERID fgedu, PASSWORD fgedu123
EXTFILE /GoldenGate/app/dirdat/il
MAP fgedu01.*, TARGET fgedu01.*;
MAP fgedu02.*, TARGET fgedu02.*;
# 步骤5:执行Initial Load Replicat
GGSCI (fgedu19c.net.cn)> ADD REPLICAT R_INIT, SPECIALRUN, EXTFILE /GoldenGate/app/dirdat/il
GGSCI (fgedu19c.net.cn)> START REPLICAT R_INIT
from GoldenGate视频:www.itpux.com
3.3 版本切换与验证实战
#!/bin/bash
# data_verify.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
echo “=== 数据一致性验证 ===”
echo “验证时间: $(date)”
# 源端数据统计
echo “源端数据统计:”
sqlplus -s fgedu/fgedu@fgedu11g <
Sending GETLAG request to EXTRACT E_FGEDU11 …
Last record lag: 0 seconds.
Low watermark lag: 0 seconds.
At EOF, no more records to process.
GGSCI (fgedu19c.net.cn)> LAG REPLICAT R_FGEDU19
Sending GETLAG request to REPLICAT R_FGEDU19 …
Last record lag: 0 seconds.
Low watermark lag: 0 seconds.
At EOF, no more records to process.
# 步骤3:执行切换
# 1. 停止应用写入源端
# 2. 等待同步追平
# 3. 验证数据一致
# 4. 切换应用到目标端
# 停止源端Extract
GGSCI (fgedu11g.net.cn)> STOP EXTRACT E_FGEDU11
GGSCI (fgedu11g.net.cn)> STOP EXTRACT P_FGEDU11
# 确认目标端追平
GGSCI (fgedu19c.net.cn)> INFO REPLICAT R_FGEDU19
REPLICAT R_FGEDU19 Last Started 2026-04-10 10:30:00 Status RUNNING
Checkpoint Lag 00:00:00 (updated 00:00:01 ago)
# 停止目标端Replicat
GGSCI (fgedu19c.net.cn)> STOP REPLICAT R_FGEDU19
# 步骤4:切换后验证
# 验证应用连接
$ sqlplus app_user/app_pass@fgedu19c
SQL> SELECT COUNT(*) FROM fgedu01.fgedu_orders;
COUNT(*)
———-
1000000
# 验证数据完整性
SQL> SELECT table_name, num_rows, blocks
FROM user_tables
WHERE table_name LIKE ‘FGEDU%’;
TABLE_NAME NUM_ROWS BLOCKS
—————————— ———- ———-
FGEDU_ORDERS 1000000 50000
FGEDU_PRODUCTS 500000 25000
Part04-生产案例与实战讲解
4.1 11g到19c迁移案例
某企业核心业务系统从Oracle 11g迁移到19c案例:
– 源端:Oracle 11.2.0.4 RAC(2节点)
– 目标端:Oracle 19.3 RAC(2节点)
– 数据量:约500GB
– 停机要求:不超过4小时
# 迁移架构
源端(11g RAC) 目标端(19c RAC)
+——————+ +——————+
| Node1: E_FGEDU | | Node1: R_FGEDU |
| Node2: E_FGEDU2 | Trail | Node2: R_FGEDU2 |
+——————+ ———> +——————+
| ^
v |
+——————+ +——————+
| OGG 19.1 | | OGG 21.x |
+——————+ +——————+
# 迁移步骤
1. 准备阶段(2周)
– 环境搭建
– OGG安装配置
– 测试验证
2. 预迁移阶段(1周)
– 初始数据加载
– 增量同步启动
– 数据验证
3. 正式迁移(4小时)
– 应用停机
– 同步追平
– 数据验证
– 应用切换
# 迁移结果
– 迁移成功
– 实际停机时间:3.5小时
– 数据零丢失
– 性能提升30%
# 关键配置
# 源端Extract配置
EXTRACT E_FGEDU
USERID fgedu, PASSWORD fgedu123
EXTTRAIL /GoldenGate/app/dirdat/ea
TRANLOGOPTIONS EXCLUDETAG 99
TRANLOGOPTIONS ALTARCHIVELOGDEST +FRA
TABLE fgedu01.*;
TABLE fgedu02.*;
# 目标端Replicat配置
REPLICAT R_FGEDU
USERID fgedu, PASSWORD fgedu123
SOURCEDEFS /GoldenGate/app/dirdef/fgedu_tables.def
MAP fgedu01.*, TARGET fgedu01.*;
MAP fgedu02.*, TARGET fgedu02.*;
BATCHSQL BATCHESPERQUEUE 200, OPSPERBATCH 200
4.2 跨版本同步常见问题
# 错误信息
ERROR OGG-01028 Trail file header version mismatch.
# 原因分析
源端和目标端OGG版本差异导致Trail格式不兼容
# 解决方案
# 方法1:使用兼容的Trail格式
# 在源端Extract参数中添加:
FORMAT RELEASE 19.1
# 方法2:升级源端OGG版本
# 升级到与目标端兼容的版本
# 问题2:数据类型转换错误
# 错误信息
ERROR OGG-03538 Conversion from character set AL32UTF8 to ZHS16GBK failed.
# 原因分析
源端和目标端字符集不一致
# 解决方案
# 方法1:统一字符集
# 目标端使用与源端相同的字符集
# 方法2:配置字符集转换
# 在Replicat参数中添加:
SOURCECHARSET AL32UTF8
TARGETCHARSET ZHS16GBK
# 问题3:SCN不匹配
# 错误信息
ERROR OGG-00664 OCI Error ORA-08103: object no longer exists.
# 原因分析
初始加载SCN与增量同步SCN不匹配
# 解决方案
# 重新执行初始加载,记录正确的SCN
SQL> SELECT CURRENT_SCN FROM V$DATABASE;
# 启动Replicat时指定正确的SCN
GGSCI> START REPLICAT R_FGEDU19, AFTERCSN 1234567890
# 问题4:性能问题
# 现象
同步延迟持续增大
# 解决方案
# 优化Extract配置
TRANLOGOPTIONS ASYNCBUFSIZE 128000
TRANLOGOPTIONS MAXBUFSIZE 1048576
# 优化Replicat配置
BATCHSQL BATCHESPERQUEUE 500, OPSPERBATCH 500
GROUPTRANSOPS 1000
4.3 跨版本同步解决方案
#!/bin/bash
# migration_automation.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
PHASE=$1
LOG_FILE=/GoldenGate/app/logs/migration.log
log_message() {
echo “[$(date)] $1” >> $LOG_FILE
}
# 阶段1:环境检查
check_environment() {
log_message “开始环境检查…”
# 检查源端OGG状态
echo “INFO ALL” | ggsci | grep -E “RUNNING|STOPPED”
# 检查目标端OGG状态
ssh fgedu19c “echo ‘INFO ALL’ | ggsci” | grep -E “RUNNING|STOPPED”
# 检查网络连通性
ping -c 3 fgedu19c >> $LOG_FILE
log_message “环境检查完成”
}
# 阶段2:数据加载
initial_load() {
log_message “开始初始数据加载…”
# 获取SCN 根据多年跨版本迁移经验,总结以下最佳实践: # 最佳实践2:测试验证 # 最佳实践3:迁移执行 # 迁移中检查 # 迁移后检查 在多年跨版本迁移项目实施过程中,总结以下实战经验: # 经验2:回退方案要可执行 # 经验3:数据验证要全面 本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
SCN=$(sqlplus -s fgedu/fgedu@fgedu11g <Part05-风哥经验总结与分享
5.1 跨版本同步最佳实践
– 源端OGG版本:与源数据库版本匹配
– 目标端OGG版本:与目标数据库版本匹配
– Trail格式:使用兼容的格式版本
– 在测试环境完整演练
– 验证所有数据类型
– 验证所有业务功能
– 性能压力测试
– 选择低峰期执行
– 做好监控和告警
– 记录详细日志
– 准备应急预案
5.2 跨版本同步检查清单
[ ] OGG版本兼容性验证
[ ] 数据库字符集兼容性验证
[ ] 网络连通性测试
[ ] 存储空间检查
[ ] 备份完成
[ ] 初始数据加载完成
[ ] 增量同步启动正常
[ ] 数据一致性验证通过
[ ] 同步延迟正常
[ ] 应用连接正常
[ ] 业务功能正常
[ ] 性能达标
[ ] 监控告警正常
5.3 风哥实战经验总结
– 与生产环境配置一致
– 使用生产数据量级
– 模拟真实业务负载
– 保留源端环境
– 记录详细回退步骤
– 定期演练回退
– 数据量验证
– 数据内容验证
– 业务功能验证
– 性能验证
