1. 首页 > GoldenGate教程 > 正文

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版本 | 支持的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

风哥提示:跨版本同步前,务必详细了解源端和目标端数据库的差异,制定详细的迁移方案和回退计划。学习交流加群风哥微信: itpux-com

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:OGG单向同步迁移
适用场景:
– 允许短暂停机(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. 记录详细的回退步骤

风哥提示:风险评估和应对措施是迁移项目的重要组成部分,务必在迁移前完成详细的风险评估,并准备好相应的应对措施。学习交流加群风哥QQ113257174

Part03-生产环境项目实施方案

3.1 OGG跨版本配置实战

3.1.1 源端OGG配置(Oracle 11g)

# 步骤1:安装OGG 19.1(源端)
$ 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)

# 步骤1:安装OGG 21.x(目标端)
$ 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进行初始加载

# 步骤1:记录SCN号
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

# 步骤1:配置Initial Load Extract
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 版本切换与验证实战

# 步骤1:数据一致性验证脚本
#!/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 < LAG EXTRACT E_FGEDU11

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 跨版本同步常见问题

# 问题1:Trail文件格式不兼容
# 错误信息
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 跨版本同步解决方案

# 解决方案1:自动化迁移脚本
#!/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
SCN=$(sqlplus -s fgedu/fgedu@fgedu11g <

Part05-风哥经验总结与分享

5.1 跨版本同步最佳实践

根据多年跨版本迁移经验,总结以下最佳实践:

跨版本同步最佳实践:

  • 选择兼容的OGG版本
  • 充分测试验证
  • 制定详细迁移计划
  • 准备完善的回退方案
  • 做好数据验证
# 最佳实践1:版本选择
– 源端OGG版本:与源数据库版本匹配
– 目标端OGG版本:与目标数据库版本匹配
– Trail格式:使用兼容的格式版本

# 最佳实践2:测试验证
– 在测试环境完整演练
– 验证所有数据类型
– 验证所有业务功能
– 性能压力测试

# 最佳实践3:迁移执行
– 选择低峰期执行
– 做好监控和告警
– 记录详细日志
– 准备应急预案

5.2 跨版本同步检查清单

# 迁移前检查
[ ] OGG版本兼容性验证
[ ] 数据库字符集兼容性验证
[ ] 网络连通性测试
[ ] 存储空间检查
[ ] 备份完成

# 迁移中检查
[ ] 初始数据加载完成
[ ] 增量同步启动正常
[ ] 数据一致性验证通过
[ ] 同步延迟正常

# 迁移后检查
[ ] 应用连接正常
[ ] 业务功能正常
[ ] 性能达标
[ ] 监控告警正常

5.3 风哥实战经验总结

在多年跨版本迁移项目实施过程中,总结以下实战经验:

风哥实战经验:

  • 测试是成功的关键
  • 回退方案必不可少
  • 数据验证要全面
  • 文档要详细完整
  • 团队协作很重要
# 经验1:测试环境要完整
– 与生产环境配置一致
– 使用生产数据量级
– 模拟真实业务负载

# 经验2:回退方案要可执行
– 保留源端环境
– 记录详细回退步骤
– 定期演练回退

# 经验3:数据验证要全面
– 数据量验证
– 数据内容验证
– 业务功能验证
– 性能验证

风哥提示:跨版本迁移是一项复杂的工程,需要充分的准备和测试。建议在迁移前进行多次演练,确保迁移过程顺利。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息