【大数据开发运维解决方案】GoldenGate replicat进程延迟分析步骤

简介: GoldenGate几乎支持市面上流行的所有主流的操作系统平台和数据库。博主所在单位目前使用Oracle GoldenGate将各个业务生产库汇聚到一起做数仓***实时ODS平台***, 我们采用异构同步,即源端同步过来的表在ODS新增了一个etltime字段,用来记录当前数据变更时间。 为了记录数据的事务变更历史记录,我们将数据的变更记录映射同步到一张tab_name_audit表中。为了防止源端业务库误删数据,我们将被删除的数据映射同步到一张tab_name_his表中。原表映射到ods后还是正常的映射同步dml操作。

前言

GoldenGate几乎支持市面上流行的所有主流的操作系统平台和数据库。
博主所在单位目前使用Oracle GoldenGate将各个业务生产库汇聚到一起做数仓实时ODS平台, 我们采用异构同步,即源端同步过来的表在ODS新增了一个etltime字段,用来记录当前数据变更时间。 为了记录数据的事务变更历史记录,我们将数据的变更记录映射同步到一张tab_name_audit表中。为了防止源端业务库误删数据,我们将被删除的数据映射同步到一张tab_name_his表中。原表映射到ods后还是正常的映射同步dml操作。

最近源端库有一批大表做了DML变更,然后发现某个replicat进程一直在延迟,但是数据库整体挺空闲,就怀疑是否卡在某个大表的dml同步上了!于是用下面的检查过程来确定了问题。


一:按照rep的进程名进行 ps -ef | grep ,获得rep的进程PID

通过下面命令找到当前正在运行的replicat进程:

[Oracle@hosta ~]$ ps -ef | grep repfull
oracle  27906 27861  0 18:01 pts/7    S+    0:00              \_ grep repfull
oracle  27603 20773  1 17:03 ?        Ssl    0:51  \_ /u02/ggs/replicat PARAMFILE /u02/ggs/dirprm/repfull.prm REPORTFILE /u02/ggs/dirrpt/REPFULL.rpt PROCESSID REPFULL USESUBDIRS

二:按照rep的进程PID 进行 ps -ef | grep,以获得27603产生的LOCAL=YES的进程

通过步骤一,获得了replicat进程的进程id,然后通过ps命令获得当前正在操作数据库的进程,操作数据库的进程应该是通过本地访问的数据库,那么进程信息应该是包含(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))的,看下面结果,可以确定进程id:27607就是操作数据库的replicat进程。

[oracle@hosta ~]$ ps -ef f | grep 27603  
oracle  27910 27861  0 18:01 pts/7    S+    0:00              \_ grep 27603
oracle  27603 20773  1 17:03 ?        Ssl    0:52  \_ /u02/ggs/replicat PARAMFILE /u02/ggs/dirprm/repfull.prm REPORTFILE /u02/ggs/dirrpt/REPFULL.rpt PROCESSID REPFULL USESUBDIRS
oracle  27607 27603  2 17:03 ?        Ds    1:41      \_ oracleorcl (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))  ---->这一个就是

三、查询sql信息,分析执行计划

上面已经获得了操作数据库的replicat进程id,然后通过下面sql查找此进程会话执行的SQL ID:

   SELECT sql_text,sql_id 
    FROM 
    v$sqltext a 
    WHERE a.hash_value = (
    SELECT sql_hash_value
     FROM v$session b 
    WHERE b.SID =( 
    select s.sid 
    from v$session s,v$process p
     where s.paddr=p.addr and p.spid='27607'))  ---> 替换上27607
    ORDER BY piece ASC;

根据进程会话id就找到了当前replicat进程正在对哪个表做dml操作,以及相关dml语句,然后将SQL ID套入到dbms_xplan,然后看当前SQL的执行计划:

select plan_table_output
 from table(dbms_xplan.display_cursor('6ufrk02y1h6u5'));  --->替换为上一步查询得到的sql_id,查看其执行计划。 

四、确定问题原因,优化SQL

从上面一系列步骤看当前replicat进程执行的sql执行计划看,当前正在对一个大表的审计表做更新,而且源端变更的数据量级在200多万,而这个审计表未添加主键,而replicat又是一条条sql执行的,所以要走200万次全表扫描。确定了问题原因,在此表给原表对应的主键字段添加索引后。停止replicat进程,并清理当前SQL 缓存游标,然后再次重新启动replicat进程,发现这时此sql走了索引唯一扫描,replicat进程应用效率大大提升,大概10分钟后数据就已经同步完成,延迟恢复正常。因为这里SQL涉及内部信息,所以就不贴上来了。


总结

生产操作要慎重,索引要维护好。

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
相关文章
|
8月前
|
运维 监控 关系型数据库
AI 时代的 MySQL 数据库运维解决方案
本文探讨了大模型与MySQL数据库运维结合所带来的变革,介绍了构建结构化运维知识库、选择合适的大模型、设计Prompt调用策略、开发MCP Server以及建立监控优化闭环等关键步骤。通过将自然语言处理能力与数据库运维相结合,实现了故障智能诊断、SQL自动优化等功能,显著提升了MySQL运维效率和准确性。
767 18
|
9月前
|
人工智能 OLAP 数据处理
解锁数仓内AI流水线,AnalyticDB Ray基于多模ETL+ML提效开发与运维
AnalyticDB Ray 是AnalyticDB MySQL 推出的全托管Ray服务,基于开源 Ray 的丰富生态,经过多模态处理、具身智能、搜索推荐、金融风控等场景的锤炼,对Ray内核和服务能力进行了全栈增强。
|
8月前
|
数据采集 人工智能 大数据
10倍处理效率提升!阿里云大数据AI平台发布智能驾驶数据预处理解决方案
阿里云大数据AI平台推出智能驾驶数据预处理解决方案,助力车企构建高效稳定的数据处理流程。相比自建方案,数据包处理效率提升10倍以上,推理任务提速超1倍,产能翻番,显著提高自动驾驶模型产出效率。该方案已服务80%以上中国车企,支持多模态数据处理与百万级任务调度,全面赋能智驾技术落地。
1159 0
|
8月前
|
SQL 运维 自然语言处理
Dataphin智能化重磅升级!编码难题一扫光,开发运维更高效!
Dataphin重磅推出三大核心智能化能力:智能代码助手提升SQL开发效率;智能运维助手实现移动化任务管理;智能分析通过自然语言生成SQL,助力数据价值释放。未来将持续开放智能ETL、安全助手等能力,助力企业构建高效、稳定的数据资产体系。
628 0
|
12月前
|
人工智能 运维 安全
AI大模型运维开发探索第四篇:智能体分阶段演进路线
本文探讨了智能体工程的演进历程,从最初的思维链(智能体1.0)到实例化智能体(智能体2.0),再到结构化智能体(智能体3.0),最终展望了自演进智能体(智能体4.0)。文章详细分析了各阶段遇到的问题及解决策略,如工具调用可靠性、推理能力提升等,并引入了大模型中间件的概念以优化业务平台与工具间的协调。此外,文中还提到了RunnableHub开源项目,为读者提供了实际落地的参考方案。通过不断迭代,智能体逐渐具备更强的适应性和解决问题的能力,展现了未来AI发展的潜力。
|
7月前
|
人工智能 运维 监控
智能运维与数据治理:基于 Apache Doris 的 Data Agent 解决方案
本文基于 Apache Doris 数据运维治理 Agent 展开讨论,如何让 AI 成为 Doris 数据运维工程师和数据治理专家的智能助手,并在某些场景下实现对人工操作的全面替代。这种变革不仅仅是技术层面的进步,更是数据运维治理思维方式的根本性转变:从“被动响应”到“主动预防”,从“人工判断”到“智能决策”,从“孤立处理”到“协同治理”。
1174 11
智能运维与数据治理:基于 Apache Doris 的 Data Agent 解决方案
|
6月前
|
机器学习/深度学习 运维 数据挖掘
运维告警不是“玄学”:聊聊怎么用机器学习优化事件关联分析
运维告警不是“玄学”:聊聊怎么用机器学习优化事件关联分析
274 3
|
9月前
|
运维 监控 关系型数据库
AI 时代的 MySQL 数据库运维解决方案
本方案将大模型与MySQL运维深度融合,构建智能诊断、SQL优化与知识更新的自动化系统。通过知识库建设、大模型调用策略、MCP Server开发及监控闭环设计,全面提升数据库运维效率与准确性,实现从人工经验到智能决策的跃迁。
998 27