ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Oracle GoldenGate 11g Windows x64安装配置与故障排查实战

Oracle GoldenGate 11g Windows x64安装配置与故障排查实战 简介Oracle GoldenGate 11.2.1.0.3 for Oracle 11g Windows x64 是面向Windows Server 2003/2008 64位平台、适配Oracle 11g数据库的数据复制中间件安装包适合数据库管理员、运维及灾备工程师用于生产与灾备库之间的实时同步、数据迁移与高可用配置。压缩包共185个文件以jar库、sql脚本、exe程序、dll动态库和txt说明为主覆盖抽取、传输、复制、管理全链路组件并包含ICU多语言库、XML解析库等运行依赖整体大小34.1MB。包内自带批处理与Java代理脚本便于在Windows环境下快速启动GoldenGate管理工具。对希望掌握OGG实操的读者可利用示例脚本与核心组件定义搭建双机同步环境、验证Extract与Replicat流程并借助错误消息库排查常见同步问题。目前已有1407人学习适合有一定Oracle基础并需要落地GoldenGate同步方案的中高级技术人员。1. 项目概述这套Oracle GoldenGate安装包到底能解决什么问题Oracle_GoldenGate_11.2.1.0.3_for_Oracle_11g_windows_x64 这串名字很长但拆开看很清晰Oracle GoldenGate 11.2.1.0.3 版本跑在 Oracle 11g 数据库上操作系统是 Windows x64。我最初接触这个组合的时候是给一套老旧的生产库做灾备改造——数据库版本 11.2.0.4Windows Server 2008 R2 64位不能停机太久预算又不允许上 DataGuard 物理备库因为物理备库对主备库的操作系统、数据库版本要求完全一致而且备库不提供读服务。OGG 就成了当时最合适的选择。聊到 OGG 就绕不开它的核心能力基于日志的实时数据同步。它通过读取主库的在线日志和归档日志抓取变化数据再以事务为单位投递到目标库。支持同构异构数据库之间的同步支持一对多、多对一、双向同步还能做数据过滤和转换。这套 11.2.1.0.3 是 Oracle GoldenGate 11.2 系列里的一个小补丁版本专门对应 Oracle 11g 数据库在 Windows x64 上的部署。它不是什么新东西但它足够稳定配置方式也直白没有后续 12c、19c 微服务架构那么复杂。对还在维护 11g 老环境的团队来说这个版本反而比新版更顺手。这篇文章适合谁看两类人。一类是刚接手 11g 数据库、需要搭一套同步链路做报表分发或者容灾的运维同学另一类是准备做数据库冷迁移想用 OGG 在迁移窗口外补增量数据的人。我会把下载安装、参数配置、进程启动、常见故障排查、日志佐证材料整理这些事从头到尾捋一遍所有配置都基于我在 Windows x64 Oracle 11g 环境里实测过的做法不是照搬官方文档。2. 安装包解析与版本匹配评估2.1 版本对应关系与适用场景先看版本号。OGG 11.2.1.0.3 的格式是 11.2大版本.1维护版本.0.3补丁级别。在 Oracle 的发布历史里11.2.1.0.x 系列是专门为 Oracle 11g 数据库打造的经典版补齐了早期 10g 版本的一些缺陷也增加了对数据库部分特性的支持。到 12c 以后 OGG 的架构发生大变化引入了微服务架构、Admin Client 等新组件虽然功能更强但对老库老环境来说学习成本和部署复杂度都上去了。我做过一个横向对比这套老版本和后续版本的区别主要体现在对比项OGG 11.2.1.0.3OGG 12c/19c配置方式纯命令行 GGSCI 参数文件微服务 REST API Web界面支持的数据库Oracle 10g/11g主打Oracle 11g/12c/19c 及更多异构库架构复杂度单一 Manager 进程简单直接多个服务组件部署灵活但复杂适用场景老库同步、极简链路云环境、大规模多租户、容器化官方支持时长早已结束扩展支持仍在持续发布补丁如果你是给 11g 数据库搭同步我建议直接用这个版本——它和 11g 的日志格式、数据字典兼容性磨合得最透生成 trail 文件的格式也更单一排查问题的时候少很多干扰因素。2.2 为什么 Windows x64 上仍要关注这套方案很多文章默认 Oracle 应该跑在 Linux 上但现实是 Windows 服务器上跑着一大堆 11g 数据库尤其是中小企业的 ERP、MES、财务系统。Windows x64 平台上部署 OGG 有几个独特的地方值得注意路径分隔符用的是反斜杠服务注册方式是通过 INSTALL ADDSERVICE还有 Windows 服务账号的权限问题会直接导致 Manager 进程起不来。另外 11g 数据库在 Windows 上有个常见毛病——监听服务经常性抽风这个后面我专门讲如果在 OGG 同步链路上监听挂掉抽取进程会直接报 TCP 连接错误。所以选这个版本不是单纯为了老配老而是在这个操作系统和数据库组合下它踩过的坑最少应急资料也最多。真到了出问题的时候你搜到的经验帖基本都基于这套组合省心得不是一点半点。3. 部署前置条件与数据库侧准备3.1 环境检查清单在解压安装包之前先把环境检查一遍。我吃过亏想当然以为服务器内存够用结果 OGG 抽取进程一启动就把内存占满了最后发现是被其他应用挤占了资源。检查清单如下操作系统Windows Server 2008 R2/2012/2016 的 x64 版本纯净系统最好数据库版本Oracle 11.2.0.1 到 11.2.0.4 均可建议打满补丁到 11.2.0.4内存建议不低于 4GBOGG 单个进程占用 500MB 以上是常态磁盘trail 文件目录独立划分大小按日志增量估算后面讲算法Oracle 客户端如果 OGG 和目标库不在同一台机器需要安装 64 位 Oracle Client权限Windows 本地管理员权限数据库 SYSDBA 权限用于配置阶段这些条件缺一不可。尤其是 64 位这个点我看过有人把 32 位 OGG 装到 64 位系统上报错报得莫名其妙其实就是位数不匹配。3.2 数据库必须开启的三大开关OGG 抽取的原理是读在线日志和归档日志所以数据库侧有三个开关必须打开缺一个你的抽取进程都会报 OGG-00446 之类的错误。-- 启用归档模式需重启数据库 SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN; -- 启用强制日志保证关键事务记录到日志 ALTER DATABASE FORCE LOGGING; -- 启用最小补充日志OGG 抓取变更数据必需 ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;补充日志这个东西最容易被忽略。OGG 要识别哪一行被更新了必须从日志里拿到足够的主键信息。如果主键字段没被日志覆盖OGG 就会走全表扫描比对性能直接崩。开了最小补充日志之后OGG 还会自动给无主键表加上全字段日志11g 里这一步默认是自动的不用额外配置。还有一点建议在数据库级别设置一个专门给 OGG 用的管理用户不要用 SYSTEM 或 SYS 这种超级账号直连避免权限过大也方便审计。CREATE USER ogg IDENTIFIED BY ogg_password DEFAULT TABLESPACE users QUOTA UNLIMITED ON users; GRANT CONNECT, RESOURCE TO ogg; GRANT SELECT ANY DICTIONARY TO ogg; GRANT SELECT ANY TABLE TO ogg; GRANT ALTER ANY TABLE TO ogg; GRANT FLASHBACK ANY TABLE TO ogg; GRANT EXECUTE ON DBMS_FLASHBACK TO ogg; -- 如果做 DDL 同步还需要额外授予 GRANT ALTER SYSTEM TO ogg;这些权限看起来多但都是标准配置。少了 FLASHBACK ANY TABLE抽取进程做初始化时无法读取一致性快照会报错。少了 SELECT ANY DICTIONARY进程连接时解析数据字典都会失败。3.3 安装包目录结构与安装步骤官方安装包是一个 ZIP 压缩包解压后看不到传统意义的安装向导而是直接就是一个可用的目录里面有ggsci.exe、lib、dirprm等核心文件。这种绿色版式的设计是 OGG 的一大特点——解压即用不用注册表不用 PATH 环境变量。我推荐的安装路径是D:\OGG或者C:\OGG注意两点路径里不能有空格不能有中文。曾经有个同事把 OGG 装到D:\Program Files\OGGManager 进程怎么都起不来最后发现就是路径空格闹的。如果确实只有带空格的目录可选那就用 Windows 的 8.3 短路径名怎么查短路径名就不展开说了尽量从源头避开这个坑。安装步骤很简单解压安装包到 D:\OGG在 D:\OGG 目录下创建子目录dirdattrail文件、dirprm参数文件、dirrpt报告、dirdef定义文件打开命令行进入 D:\OGG执行ggsci.exe在 GGSCI 里执行CREATE SUBDIRS自动创建标准目录结构GGSCI (WIN-DB01) 1 CREATE SUBDIRS Creating subdirectories under current directory D:\OGG Parameter files ./dirprm: Created Report files ./dirrpt: Created Checkpoint files ./dirchk: Created Process status files ./dirpcs: Created SQL script files ./dirsql: Created Database definitions files ./dirdef: Created Extract data files ./dirdat: Created Temporary files ./dirtmp: Created Verify data files ./dirver: Created到这里安装层面就完成了剩下的全是配置层面的活。4. 核心进程配置与同步链路搭建4.1 Manager 进程链路的管家Manager 是 OGG 的主控进程监控所有 Extract 和 Replicat 的运行状态负责启动、停止、告警还管着 trail 文件的清理。它的参数文件是dirprm/MANAGER.prm我通常这样配PORT 7809 DYNAMICPORTLIST 7810-7820 AUTOSTART ER * AUTORESTART ER *, RETRIES 5, WAITMINUTES 3 PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS, MINKEEPHOURS 24PORT 是 Manager 的监听端口默认是 7809。如果这个端口被占用可以换但要保证防火墙放行。DYNAMICPORTLIST 是给 Extract 投递到远程时动态分配的端口范围。AUTOSTART 和 AUTORESTART 让 Manager 自动拉起挂掉的进程这在大半夜出问题时能救命。PURGEOLDEXTRACTS 是清理过期 trail 文件我用MINKEEPHOURS 24保证至少保留 24 小时的数据避免备库延迟时文件被误删。配置完以后执行GGSCI START MANAGER看到Server started就说明 Manager 起来了。没起来的话去dirrpt/MANAGER.rpt看报告不要瞎猜。这是排查所有 OGG 问题的通用姿势先看报告文件。4.2 Extract 抽取进程日志的搬运工Extract 进程负责从数据库日志中抓取变更。它有两种运行模式一种是经典抽取模式从日志直接读一种是 Data Pump 模式从本地 trail 投递到远端。在 11.2.1.0.3 里经典抽取模式还是主流。写一个 Extract 参数文件dirprm/EORA11.prmEXTRACT EORA11 USERID ogg, PASSWORD ogg_password EXTTRAIL D:\OGG\dirdat\lt DDLLOG TRANLOGOPTIONS EXCLUDEUSER ogg TABLE SOE.*;EXTRACT 后面的名字就是进程名随便起但建议有规律比如 E 开头代表 Extract。USERID 和 PASSWORD 用之前建好的 OGG 管理用户。EXTTRAIL 指定本地 trail 文件的路径lt是文件前缀OGG 会自动生成 lt000000001、lt000000002 这样的文件。DDLLOG 是记录 DDL 操作如果不需要同步 DDL可以去掉。TRANLOGOPTIONS EXCLUDEUSER 是过滤掉 OGG 管理用户自己的操作防止循环抓取。在 GGSCI 里注册这个进程GGSCI DBLOGIN USERID ogg, PASSWORD ogg_password GGSCI ADD EXTRACT EORA11, TRANLOG, BEGIN NOW GGSCI ADD EXTTRAIL D:\OGG\dirdat\lt, EXTRACT EORA11这里有个关键点ADD EXTRACT 和 ADD EXTTRAIL 两条命令的顺序不要搞反先有 Extract 进程再关联 trail 文件。而且 ADD EXTTRAIL 的格式是有讲究的它要跟参数文件里的 EXTTRAIL 路径完全一致否则进程起不来。4.3 Replicat 投递进程数据上屏的画笔Replicat 进程负责把 trail 文件里的变更应用到目标库。参数文件dirprm/RORA11.prmREPLICAT RORA11 USERID ogg, PASSWORD ogg_password ASSUMETARGETDEFS DISCARDFILE D:\OGG\dirrpt\RORA11.dsc, APPEND, MEGABYTES 100 MAP SOE.*, TARGET SOE.*;ASSUMETARGETDEFS 是指定源表和目标表结构一致省去生成定义文件的步骤。如果两张表字段对不上就不能用这个参数得用 DEFGEN 工具生成定义文件技术含量一下子高很多。DISCARDFILE 指定错误数据的记录文件这个非常重要同步出错时先看这里。注册命令GGSCI DBLOGIN USERID ogg, PASSWORD ogg_password GGSCI ADD REPLICAT RORA11, EXTFILE D:\OGG\dirdat\lt注意 Replicat 的 EXTFILE 要和 Extract 的 EXTTRAIL 对应上。如果 Extract 和 Replicat 不在同一台机器这是常见场景需要先把 trail 文件传输过来这时候中间再加一个 Data Pump 进程逻辑是本地 Extract 抓日志 - 本地 trail - Data Pump 投递 - 远程 trail - 远程 Replicat 应用。两台机器的配置我都走通过核心思路就是分层递进哪个环节出问题看对应进程的报告就能锁定。4.4 与冷迁移场景的配合增量补数方案热词里oracle 11g 数据库怎么冷迁移很热。冷迁移的思路是停应用、正常关闭数据库、把数据文件控制文件重做日志拷贝到新服务器、启动数据库。这个方案数据零丢失但停机时间等于拷贝时间加恢复时间对大数据量来说很难接受。我实践过的做法是冷迁移 OGG 增量追平两步走把停机时间压缩到分钟级提前三天部署 OGG源库 11g 上搭 Extract 抓取日志到本地 trail应用不停执行数据库全量备份或物理文件拷贝可以用 RMAN backup as copy把基础数据传到目标库恢复恢复完成后在目标库上配置 Replicat从源库 trail 末尾的点开始应用增量事务切换窗口内停应用、停源库等 Replicat 追平到源库的最终一致点再切应用这个方案的核心是时间点对齐。基础恢复的时候要记录源库的 SCN 或日志序列号然后让 Extract 在基础备份对应的时间点附近启动抽取。OGG 提供了 AEAfter Extract模式或者ADD EXTRACT ... BEGIN的自定义时间实操时我习惯先做一次全量物化再用START EXTRACT EORA11, AT SCN xxx这样的语法从指定 SCN 开始抓取确保增量数据从基础备份的断点无缝衔接。5. 高频故障监听与服务自启问题实录5.1 Oracle 11g 监听启动成功后自动关闭这个问题的出现频率高到离谱。核心现象是双击服务或者命令行执行lsnrctl start提示 LISTENER 启动成功然后过两三秒监听进程就自己退出服务状态又回到已停止。排查思路我按优先级排列如下监听服务登录身份问题这是最常见的。Oracle 的 Windows 服务如果登录身份是本地系统账户在某些网络环境下监听器无法正确绑定主机名或 IP会自动退出。打开服务管理器找到OracleOraDb11g_home1TNSListener服务把登录身份改成一个有本地管理员权限的域账户或者改成系统账户之后重新设置允许服务与桌面交互。端口冲突1521 端口被其他程序占了遇到过被某厂商安全软件占 1521 的情况。执行netstat -ano | findstr 1521看监听是否真的绑定了正确端口。hosts 文件解析问题Windows 的 hostname 和 hosts 文件映射不一致时监听器解析主机 IP 出错。检查C:\Windows\System32\drivers\etc\hosts确保有127.0.0.1 主机名和实际 IP 的映射没有多余的重复行。listener.ora 配置项错误LISTENER (DESCRIPTION_LIST (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST 主机名)(PORT 1521))))。如果你的数据库是多网卡环境HOST 写主机名可能解析到错误的网卡建议改成实际使用的 IP 地址避免歧义。还有一个冷门但真实存在的情况杀毒软件把监听进程当成恶意行为拦截导致监听先启动后被杀掉从而报自动关闭。排查的时候把 Oracle 的安装目录加入杀毒软件白名单再重启监听服务试试。5.2 OGG 服务开机自启动设置把 OGG Manager 注册成 Windows 服务让它开机自启只需要一条命令GGSCI INSTALL ADDSERVICE执行后系统会提示填入一个服务名默认叫GGS_MGR确认后就注册成功了。然后到服务管理器里把GGS_MGR的启动类型改为自动延迟启动。为什么延迟启动因为 Oracle 数据库服务可能还没完全就绪Manager 起来太早后续自动拉起的 Extract 会因为数据库没起来而报连接错误。延迟 30 到 60 秒启动让数据库先稳定这个细节能省掉很多重启后的心跳检查。注册之后还要注意如果跑 OGG 的账号不是本地系统账户而是指定账户那这个账户需要有读取 D:\OGG 整个目录的权限以及对dirdat、dirrpt目录的写权限。否则 READ 权限不对进程能启动但会一直写报告失败。5.3 日志佐证材料与审计排查清单遇到合规审查或者故障复盘需要整理日志佐证材料主要找这几类GGSCI 执行STATUS ALL和INFO ALL展示四个进程级别Manager、Extract、Data Pump、Replicat的运行状态机截图或文本记录dirrpt目录下每个进程的.rpt报告文件特别是*.rpt和*.dsc丢弃文件记录ggserr.log日志路径在 OGG 主目录下按天滚动记录所有进程的启动、停止、报错信息trail 文件的生成记录确认从lt000000001到当前文件是否有断档数据库侧的归档日志清单用来和 trail 文件做对应比对我自己在等审计的时候还会额外跑一条INFO EXTRACT EORA11, DETAIL把 checkpoint 位置、日志序列号、SCN 拉出来和数据库的归档日志交叉验证。这样就能证明同步链路在某个时间点是完整、连续、无丢失的。6. 常见问题速查与避坑心得6.1 问题排查速查表问题现象可能原因排查/解决方式启动 Manager 报端口占用7809 端口被防火墙或其他进程占用netstat 检查改 PORT或在防火墙添加允许规则Extract 报告 OGG-00446数据库归档模式未开启或补充日志缺失检查 v$database 的 LOG_MODE 和 SUPPLEMENTAL_LOG_DATA_MIN 字段Replicat 停留在初始化状态trail 文件读取权限不足或路径不对检查确保 Replicat 的 EXTFILE 与 Extract 的 EXTTRAIL 一致数据延迟持续增大磁盘 I/O 或数据库归档日志切换过慢看 EORA11.rpt 的滞后时间检查源库日志切换频率同步数据出现乱码字符集不一致ASSUMETARGETDEFS 用不了改成 DEFGEN 生成匹配的 def 文件Windows 重启后进程全挂服务未注册或启动延迟不够执行 INSTALL ADDSERVICE检查 GGS_MGR 服务登录账号trail 文件无法清理长时间未做 CHECKPOINT在 Manager 参数中配置 PURGEOLDEXTRACTS并确保 Replicat 正常推进6.2 几点实在的避坑经验第一目录权限宁可多给不能少给。我给 OGG 单独建了一个操作系统用户专门用于运行服务然后把这个用户加进 D:\OGG 的所有者列表。刚开始图省事直接用 Administrator 跑后来安全合规要求应用最小权限换成了专用用户各种莫名奇妙的启动失败全来了。检查一圈就是目录权限的问题。第二time 同步非常重要。主库和备库的时间偏差超过 30 秒OGG 的延迟计算和心跳判断都会出问题极端情况下会导致 Extract 认为备库掉线而停止投递。在 Windows 上配置 NTP 或者域时间同步别省这个步骤。第三trail 文件空间算法先算好。我用过一个经验公式trail 文件一天的增量 ≈ 源库一天的归档日志量的 60%~70%如果同步的表不多比例会更低。比如源库每天产生 50GB 归档trail 大概 30~35GB。磁盘规划的时候建议按 3 天容量再乘 1.5 倍余量来划分以防备库故障追不上时文件堆积。第四上线前先跑一次压力测试。别一上来就接生产。我每次搭完链路都会用一个小表做全量插入更新删除测试观察 trail 文件生成、Replicat 应用耗时再切到生产流量。这一步能发现 80% 的配置低级错误比如参数写错表名、字段类型映射不对、目标表权限缺失等。7. 写在最后的补充根据我多次在这套环境上折腾的经验OGG 11.2.1.0.3 Oracle 11g Windows x64 这个组合只要前期的目录、权限、数据库开关全部到位后面的链路配置真的是一马平川。最怕的反而是半路遇到一个莫名其妙的系统环境问题比如监听反复消失、防火墙拦截动态端口、杀毒软件后台扫描 trail 文件目录影响 I/O。这类问题解决的关键不是背命令而是建立一套排查的肌肉记忆先看报告文件、再看操作系统日志、最后才怀疑参数配置。最后再分享一个小技巧给参数文件写注释。OGG 的参数文件支持#注释我每行参数后面都会标注为什么这样配、当初遇到了什么问题才加的。半年后回头维护的时候你会感谢当年的自己。本文还有配套的精品资源点击获取
返回列表