暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

OB OMS ORACLE到OB迁移回流性能问题案例

原创 范计杰 2025-07-17
367

概述

使用OMS迁移ORACLE到OB后,多需客户要求反向同步,OB侧新增变更要回流到ORACLE,以备后面可能的紧急回退。这里记录一些OB到ORACLE回流过程中的性能问题场景及处理方法。


场景1,无索引大表

现象:

对于ORACLE侧较大的无主键,无索引表,从ORACLE往OB迁移,增量同步(UPDATE,DELETE等操作)并未发现性能问题,反向同步(OB=>ORACLE),性能慢,延迟高。

原因:

1、由于无主键大的表,业务场景基本为批处理事务,单事务,单个或少量DML操作大量数据,OMS在回流时会按行拆分,单次处理,在ORACLE侧应用增量时表现在,每行同步一行一次全表扫,导致性能慢

2、ORACLE到OB同步为什么没问题?

OMS为了确保数据迁移的一致性,OMS 会在结构迁移、增量同步 DDL 步骤为目标端的对应表添加隐藏列,并基于隐藏列创建唯一索引,对应的列和索引将在正向切换步骤被自动移除。由于OMS自动在OB侧创建了唯一索引,所以不会产生性能问题。

处理方法:

ORACLE侧在发生回流性能问题的无索引表上找选择性好的列创建索引。但记录该表,在后续DDL变更时注意该问题。


场景2,事务回流按行拆分并行处理导致的ITL争用,死锁

现象:

部分热点批处理的表,在反向同步(OB=>ORACLE)时,性能慢,延迟高,同时可能报ORA-00060,发生死锁,ORACLE则观察大量并发会话UPDATE,等待enq: tx - allocate itl entry。

原因:

OMS对于源端的事务,会按行拆分后,转换为几十个SESSION并行处理,如源端批处理的数据根据业务规律,可以集中的一起,在ORACLE侧表现为单个或少量数据块上并发事务处理,会产生ITL需求量大,争用现象,如果该表上的数据块上ITL槽不多,需要分配新的ITL槽,由于该表频繁UPDATE,导致块上没有剩余空间分配新的ITL而等待。

处理方法:

如果表不是很大,可以增加表或索引的PCTFREE,INITRANS,然后move表,rebuild index使调整生效。

alter table owner.tabtest PCTFREE 20 INITRANS 100;

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论