高可用 & 容灾11 分钟阅读
Oracle GoldenGate 微服务架构日常运维与故障排查 100 条命令
GoldenGate 微服务架构将管理、分发、接收和指标采集拆成独立服务。源端 Extract 写入 Trail,Distribution Path 将数据发往目标端,Receiver Path 接收后由 Replicat 应用。
2026年9月15日阅读—点赞—收藏—
dba100oraclescenario
100 条命令系列文章专栏
GoldenGate 微服务架构将管理、分发、接收和指标采集拆成独立服务。源端 Extract 写入 Trail,Distribution Path 将数据发往目标端,Receiver Path 接收后由 Replicat 应用。
GoldenGate 微服务架构将管理、分发、接收和指标采集拆成独立服务。源端 Extract 写入 Trail,Distribution Path 将数据发往目标端,Receiver Path 接收后由 Replicat 应用。
Oracle GoldenGate 微服务架构示意图
经典架构里常查的 Manager 和 Pump,在这里不再是同一套排障入口。复制延迟要同时看 Extract、Distribution Path、Receiver Path、Replicat,以及对应服务的日志。
本文整理了微服务架构日常检查和故障排查常用的 100 条命令,建议收藏备用。
文中以 Linux 和 Oracle GoldenGate 21c 为例,部署名、进程名、路径名、主机及端口请根据实际环境修改。
1$OGG_HOME/bin/adminclient1CONNECT https://ogg-host:16000 DEPLOYMENT ogg_deploy AS oggadmin1HELP CONNECT1VERSIONS1INFO ALL1INFO ALL TASKS1INFO ALL ALLPROCESSESALLPROCESSES 会把子进程一起列出,适合判断是复制进程异常还是服务内部进程异常。
1STATUS DEPLOYMENT ogg_deploy1HEALTH DEPLOYMENT ogg_deploy健康检查比单纯的 RUNNING 多一层依赖检查。结果异常时,继续展开对应服务和部署日志。
1DISCONNECT1STATUS SERVICE *1STATUS SERVICE ADMINSRVR1STATUS SERVICE DISTSRVR1STATUS SERVICE RECVSRVR1STATUS SERVICE PMSRVR1ss -lntp | grep 16000端口监听只能证明进程占用了端口,不能证明 Administration Server 接口已经可以正常处理请求。
1ps -ef | grep '[a]dminsrvr\|[d]istsrvr\|[r]ecvsrvr\|[p]msrvr\|[s]rvmgr'1du -sh $OGG_DEPLOYMENT_HOME2df -h $OGG_DEPLOYMENT_HOME1tail -n 100 $OGG_DEPLOYMENT_HOME/var/log/ggserr.log默认错误日志是排障入口。部署目录调整过时,先从 Service Manager 中确认实际日志路径。
1grep -Ei 'OGG-|ERROR|WARNING|ABEND' $OGG_DEPLOYMENT_HOME/var/log/ggserr.log | tail -1001INFO EXTRACT ext11INFO EXTRACT ext1, DETAILDETAIL 里可以核对参数、Trail 和检查点;这些信息比一个 RUNNING 状态更能说明进程是否工作。
1INFO EXTRACT ext1, SHOWCH1INFO EXTRACT *1STATUS EXTRACT ext11STATUS EXTRACT *1LAG EXTRACT ext1延迟不更新时,同时看 Extract 检查点和源端是否还有新事务。没有新数据时,延迟值本身意义不大。
1LAG EXTRACT *1STATS EXTRACT ext1, TOTAL1STATS EXTRACT ext1, HOURLY1INFO REPLICAT rep11INFO REPLICAT rep1, DETAIL1INFO REPLICAT rep1, SHOWCH1INFO REPLICAT *1STATUS REPLICAT rep11STATUS REPLICAT *1LAG REPLICAT rep11LAG REPLICAT *1STATS REPLICAT rep1, TOTAL1STATS REPLICAT rep1, HOURLY1INFO DISTPATH ALL分发路径负责把 Trail 发往目标端。路径为 STOPPED 时,Extract 仍可能正常写本地 Trail。
1INFO DISTPATH path11INFO DISTPATH path1 DETAIL详细信息里重点核对源 Trail、目标 URI 和当前发送位置。
1STATS DISTPATH path1统计有增长说明路径在传数据;统计不变时,再看源 Trail 是否产生了新记录。
1STATUS SERVICE DISTSRVR1ps -ef | grep '[d]istsrvr'1ss -lntp | grep 160021curl -kI https://target-host:16003curl -k 忽略证书校验,只适合定位网络问题。正式配置仍要解决证书信任。
1grep -Ei 'DISTPATH|OGG-|ERROR' $OGG_DEPLOYMENT_HOME/var/log/ggserr.log | tail -1001find $OGG_DEPLOYMENT_HOME/var/log -type f -printf "%TY-%Tm-%Td %TH:%TM %p\n" | sort -r | head -201INFO RECVPATH ALL接收路径负责将上游数据写入目标 Trail,它和 Replicat 是两个独立环节。
1INFO RECVPATH path11INFO RECVPATH path1 DETAIL这里可以确认目标 Trail 位置以及已经接收到了哪里,排查“已发送但未落盘”时最直接。
1STATS RECVPATH path11STATUS SERVICE RECVSRVR1ps -ef | grep '[r]ecvsrvr'1ss -lntp | grep 160031du -sh $OGG_DEPLOYMENT_HOME/var/lib/data2df -h $OGG_DEPLOYMENT_HOME/var/lib/data除了总容量,还要看文件系统是否只读、inode 是否耗尽,以及运行账号有没有写权限。
1find $OGG_DEPLOYMENT_HOME/var/lib/data -type f -printf "%TY-%Tm-%Td %TH:%TM %s %p\n" | sort -r | head -201grep -Ei 'RECVPATH|OGG-|ERROR' $OGG_DEPLOYMENT_HOME/var/log/ggserr.log | tail -1001LAG ER *LAG ER * 适合快速比较捕获端和应用端,真正定位还要分别查看对应进程和路径。
1STATS EXTRACT ext1, LATEST1STATS REPLICAT rep1, LATEST1STATS EXTRACT ext1, DAILY1STATS REPLICAT rep1, DAILY1STATS EXTRACT ext1, TABLE app.orders, TOTAL1STATS REPLICAT rep1, TABLE app.orders, TOTAL1VIEW REPORT ext1报告中先找第一条异常和它发生的时间,再去匹配部署日志,不要从末尾的重复报错开始处理。
1VIEW REPORT rep11INFO HEARTBEATTABLE心跳表能反映链路端到端延迟,前提是心跳记录确实在持续产生和应用。
1INFO CREDENTIALS *1INFO CREDENTIALSTORE1INFO CREDENTIALSTORE DOMAIN OracleGoldenGate1DBLOGIN USERIDALIAS oggadmin别名登录成功只证明凭据和数据库连接可用,复制对象权限仍要单独检查。
1INFO TRANDATA app.orders1INFO SCHEMATRANDATA app1LIST TABLES app.*1sqlplus -s / as sysdba <<'SQL'2SET PAGES 100 LINES 2003SELECT log_mode, force_logging FROM v$database;4SQLGoldenGate 捕获前至少需要数据库处于归档模式,并按复制方式确认强制日志设置。
1sqlplus -s / as sysdba <<'SQL'2SET PAGES 100 LINES 2003SELECT supplemental_log_data_min FROM v$database;4SQL1sqlplus -s / as sysdba <<'SQL'2SET PAGES 100 LINES 2003SELECT username, account_status FROM dba_users WHERE username='OGGADMIN';4SQL1hostname2date1timedatectl status1uptime2free -h1df -h2df -i1namei -l $OGG_DEPLOYMENT_HOME1pid=$(pgrep -o adminsrvr)2cat /proc/$pid/limits | grep -i "open files"文件句柄达到限制时,服务可能间歇报错。这里同时看当前值和进程允许的上限。
1ss -lntp | grep -E "adminsrvr|distsrvr|recvsrvr|pmsrvr"1getent hosts target-host1openssl s_client -connect ogg-host:16000 -servername ogg-host </dev/null 2>/dev/null | openssl x509 -noout -dates -subject证书日期正常仍可能存在主机名或信任链问题,接口报 TLS 错误时还要查看完整握手信息。
1timeout 5 bash -c '</dev/tcp/target-host/16003' && echo OK1-- 确认数据库、凭据和 Trail 可用2START EXTRACT ext1启动后查看 Extract 的检查点是否推进;只看到 RUNNING 还不能确认已经开始捕获。
1-- 确认目标库、检查点表和 Trail 可用2START REPLICAT rep11-- 确认接收端服务和网络可用2START DISTPATH path11-- 确认目标 Trail 目录可写2START RECVPATH path11-- 维护窗口;停止后确认检查点位置2STOP EXTRACT ext1正常停止会在检查点处退出,维护时优先用这种方式,不要直接杀进程。
1-- 维护窗口;先评估待应用数据量2STOP REPLICAT rep11-- 维护窗口;先记录积压和发送位置2STOP DISTPATH path11-- 维护窗口;先确认上游已停止发送2STOP RECVPATH path11-- 先保存日志并确认故障原因2RESTART SERVICE DISTSRVR重启前先保存服务日志。服务起来以后,再检查受它管理的路径和复制进程。
1-- 高风险:会影响部署内全部服务和复制进程2RESTART DEPLOYMENT ogg_deploy整个部署重启会影响其中所有服务和复制进程,恢复后要逐项检查,不能只看 Deployment 状态。
Extract 仍在写 Trail 时,延迟不一定发生在源库;还要核对分发路径、接收路径和 Replicat 的位置。重启服务或整个部署前,保存异常日志和进程检查点,恢复后逐项确认路径与复制进程继续运行。

后续的 GoldenGate 微服务运维命令,会继续补到 ORA100 · DBA100:
手机上可用小程序 「三笠的百令册」。