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

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

@TOC


前言

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涉及内部信息,所以就不贴上来了。


总结

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

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
1月前
|
Linux
一个进程最多可以创建多少个线程基本分析
一个进程最多可以创建多少个线程基本分析
40 1
|
7月前
|
分布式计算 安全 Hadoop
HBase启动时有进程webUI不显示HRegionServer各种情况解决方案
HBase启动时有进程webUI不显示HRegionServer各种情况解决方案
228 0
|
4月前
|
存储 运维 容灾
带你读《云上自动化运维宝典》——一文详解云上跨可用区容灾解决方案和异地多活能力建设最佳案例(3)
带你读《云上自动化运维宝典》——一文详解云上跨可用区容灾解决方案和异地多活能力建设最佳案例(3)
111 0
|
28天前
|
监控 Linux Shell
Linux 进程问题调查探秘:分析和排查频繁创建进程问题
Linux 进程问题调查探秘:分析和排查频繁创建进程问题
39 0
|
29天前
|
消息中间件 存储 网络协议
Linux IPC 进程间通讯方式的深入对比与分析和权衡
Linux IPC 进程间通讯方式的深入对比与分析和权衡
69 0
|
29天前
|
存储 算法 Linux
【Linux 系统标准 进程资源】Linux 创建一个最基本的进程所需的资源分析,以及线程资源与之的差异
【Linux 系统标准 进程资源】Linux 创建一个最基本的进程所需的资源分析,以及线程资源与之的差异
25 0
|
1月前
|
缓存 运维 安全
运维:推荐一款非常专业好用的磁盘空间分析神器TreeSize
【2月更文挑战第16篇】Optimizer 是一个多功能系统优化清理工具,它支持垃圾清理、注册表修复、启动项管理,关闭视窗系统中不需要的功能,帮您恢复您的隐私与增加您的安全性,建议在全新、干净的Windows安装之后进行优化,以实现最大的隐私性与安全性,根据您的Windows版本,Optimizer还允许您执行一些
运维:推荐一款非常专业好用的磁盘空间分析神器TreeSize
|
2月前
|
分布式计算 并行计算 大数据
Python多进程在数据处理和大数据分析中的应用
Python多进程在数据处理和大数据分析中的应用
|
3月前
|
存储 JSON 运维
【运维】Powershell 服务器系统管理信息总结(进程、线程、磁盘、内存、网络、CPU、持续运行时间、系统账户、日志事件)
【运维】Powershell 服务器系统管理信息总结(进程、线程、磁盘、内存、网络、CPU、持续运行时间、系统账户、日志事件)
49 0
|
3月前
|
消息中间件 缓存 运维
云HIS运维运营平台 云HIS解决方案
云HIS重建统一的信息架构体系,重构管理服务流程,重造病人服务环境,向不同类型的医疗机构提供SaaS化HIS服务解决方案。
60 2