【大数据开发运维解决方案】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的热门话题分析
相关文章
|
5月前
|
存储 分布式计算 大数据
基于Python大数据的的电商用户行为分析系统
本系统基于Django、Scrapy与Hadoop技术,构建电商用户行为分析平台。通过爬取与处理海量用户数据,实现行为追踪、偏好分析与个性化推荐,助力企业提升营销精准度与用户体验,推动电商智能化发展。
|
6月前
|
存储 SQL 分布式计算
终于!大数据分析不用再“又要快又要省钱”二选一了!Dataphin新功能太香了!
Dataphin推出查询加速新功能,支持用StarRocks等引擎直连MaxCompute或Hadoop查原始数据,无需同步、秒级响应。数据只存一份,省成本、提效率,权限统一管理,打破“又要快又要省”的不可能三角,助力企业实现分析自由。
330 49
|
5月前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的台风灾害分析及预测系统
针对台风灾害预警滞后、精度不足等问题,本研究基于Python与大数据技术,构建多源数据融合的台风预测系统。利用机器学习提升路径与强度预测准确率,结合Django框架实现动态可视化与实时预警,为防灾决策提供科学支持,显著提高应急响应效率,具有重要社会经济价值。
|
5月前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的青少年网络使用情况分析及预测系统
本研究基于Python大数据技术,构建青少年网络行为分析系统,旨在破解现有防沉迷模式下用户画像模糊、预警滞后等难题。通过整合多平台亿级数据,运用机器学习实现精准行为预测与实时干预,推动数字治理向“数据驱动”转型,为家庭、学校及政府提供科学决策支持,助力青少年健康上网。
|
6月前
|
数据采集 数据可视化 关系型数据库
基于python大数据的电影数据可视化分析系统
电影分析与可视化平台顺应电影产业数字化趋势,整合大数据处理、人工智能与Web技术,实现电影数据的采集、分析与可视化展示。平台支持票房、评分、观众行为等多维度分析,助力行业洞察与决策,同时提供互动界面,增强观众对电影文化的理解。技术上依托Python、MySQL、Flask、HTML等构建,融合数据采集与AI分析,提升电影行业的数据应用能力。
|
5月前
|
传感器 人工智能 监控
拔俗多模态跨尺度大数据AI分析平台:让复杂数据“开口说话”的智能引擎
在数字化时代,多模态跨尺度大数据AI分析平台应运而生,打破数据孤岛,融合图像、文本、视频等多源信息,贯通微观与宏观尺度,实现智能诊断、预测与决策,广泛应用于医疗、制造、金融等领域,推动AI从“看懂”到“会思考”的跃迁。
443 0
|
6月前
|
机器学习/深度学习 运维 数据挖掘
运维告警不是“玄学”:聊聊怎么用机器学习优化事件关联分析
运维告警不是“玄学”:聊聊怎么用机器学习优化事件关联分析
274 3