OGG重复记录导致复制进程挂起
今天处理了个复制进程异常挂起的CASE,出错日志是:
2012-08-20 10:33:02 WARNING OGG-00869 Oracle GoldenGate Delivery for Oracle, r_inv1.prm: No unique key is defined for table 'WL_PSINFO'. All viable columns will be used to represent the key, but may not guarantee uniqueness. KEYCOLS may be used to define the key.
2012-08-20 10:34:12 WARNING OGG-01431 Oracle GoldenGate Delivery for Oracle, r_inv1.prm: Aborted grouped transaction on 'MBS7_INV.WL_PSINFO', Mapping error.
2012-08-20 10:34:12 WARNING OGG-01003 Oracle GoldenGate Delivery for Oracle, r_inv1.prm: Repositioning to rba 124252822 in seqno 77.
2012-08-20 10:34:12 WARNING OGG-01151 Oracle GoldenGate Delivery for Oracle, r_inv1.prm: Error mapping from MBS7_INV.WL_PSINFO to MBS7_INV.WL_PSINFO.
2012-08-20 10:34:12 WARNING OGG-01003 Oracle GoldenGate Delivery for Oracle, r_inv1.prm: Repositioning to rba 124252822 in seqno 77.
2012-08-20 10:34:12 ERROR OGG-01296 Oracle GoldenGate Delivery for Oracle, r_inv1.prm: Error mapping from MBS7_INV.WL_PSINFO to MBS7_INV.WL_PSINFO.
2012-08-20 10:34:12 ERROR OGG-01668 Oracle GoldenGate Delivery for Oracle, r_inv1.prm: PROCESS ABENDING.
从日志看是该表缺少主键,但OGG也是可以基于无主键的情况下同步的,进一步分析目标表和结合挂起的时间,本来该表是无主键的,在发生异常前刚在源端做了创建主键的操作,而此时目标表是存在重复记录的:
目标端:
select id,ordercode, consigncode from mbs7_inv.WL_PSINFO group by id,
ordercode, consigncode having count(*) > 1
.....有1千多条重复记录,而与此同时在源端是不存在重复记录。
进一步查询发现该表的重复记录只有前几个字段相同,后面几个字段还是不一样的:
select *
from mbs7_inv.WL_PSINFO
where id in
(select id
from (
select id,ordercode, consigncode from mbs7_inv.WL_PSINFO group by id,
ordercode, consigncode having count(*) > 1)) order by id
所以不能用传统删除重复记录的方法来处理。
为了OGG进程能正常运作,打算先在源端备份这些删除掉的真实记录,然后在目标端做删除处理后再导入,处理方法是:
1 先在源端备份这些记录:
create table system.WL_PSINFO_bak as select * from
mbs7_inv.WL_PSINFO a where a.id in
(select id
from (
select id,ordercode, consigncode from mbs7_inv.WL_PSINFO@link_102 group by id,
ordercode, consigncode having count(*) > 1))
2 在目标端删除这些记录:
delete from mbs7_inv.WL_PSINFO a where id in
(
select id
from (
select id,ordercode, consigncode from mbs7_inv.WL_PSINFO group by id,
ordercode, consigncode having count(*) > 1))
commit;
3 重新把源端备份的数据导回来:
insert into mbs7_inv.WL_PSINFO select * from system.WL_PSINFO_bak@link_100;
4 启动复制进程即可:
ggsci>start r_inv1
总结:主要是要理解OGG的复制原理,它是读日志或DDL同步表进行同步处理的,如果源端进行得动作,在目标端执行不了,为了保证数据一致性,OGG会让复制进程挂起,所要要结合警告日志和两边表结构情况来分析。
OGG重复记录导致复制进程挂起相关推荐
- OGG复制进程延迟处理思路与方法
可能问题分析: 1.源端E进程处于abend状态且长时间未解决,导致pump和Replicat进程均出现延迟 2.源端有大表做批量更新操作(比如对历史数据插入.更新.删除几千万上亿条数据) 3.表没有 ...
- Oracle查看ogg延时,OGG复制进程延迟不断增长
集团某在线系统使用OGG做了同步复制用于二期业务生产使用.有同事过来说复制进程有点异常 -bash-3.2$ ogg Oracle GoldenGate Command Interpreter for ...
- netty 进程挂起_这可能是目前最透彻的Netty原理架构解析
本文基于 Netty 4.1 展开介绍相关理论模型,使用场景,基本组件.整体架构,知其然且知其所以然,希望给大家在实际开发实践.学习开源项目方面提供参考. Netty 是一个异步事件驱动的网络应用程序 ...
- 参数详解 复制进程_如何优化PostgreSQL逻辑复制
How to Optimize PostgreSQL Logical Replication 逻辑复制( Logical Replication )或 Pglogical 是表级别的复制.两者都是基于 ...
- 【Linux】复制进程、进程地址空间以及写实拷贝
目录 复制进程fork()方法原型 父子进程 父子进程的pid 物理地址和逻辑地址 交换空间 写实拷贝 复制进程fork()方法原型 pid_t fork(void); pid_t是int类型代表进程 ...
- SQL Server 删除重复记录,只保留一条记录
原文地址:http://blog.csdn.net/eriato/article/details/17417303 有张表格之前没有设计关键字段的唯一约束,导致有时候执行插入操作时不小心执行了多次就出 ...
- 面试官:哪些原因会导致JAVA进程退出?
面试官:哪些原因会导致JAVA进程退出? 无外乎三种情况. linux的OOM killer杀死 JVM自身故障 jvm的OOM导致进程退出(很罕见,我至今没遇见过) 引言 linux的OOM kil ...
- OGG学习笔记04-OGG复制部署快速参考
OGG学习笔记04-OGG复制部署快速参考 源端:Oracle 10.2.0.5 RAC + ASM 节点1 Public IP地址:192.168.1.27 目标端:Oracle 10.2.0.5 ...
- oracle 输出重复记录,ORACLE 去除重复记录
ORACLE 去除重复记录 delete from tbl_talbe where (col1,col2,col3) in (select col1,col2,col3 from tbl_table ...
最新文章
- LeetCode Merge Intervals
- 一文读懂JDK7,8,JD9的HashMap,HashTable,ConcurrentHashMap及他们的区别
- DataGridView 添加ComboBox
- 记录 centos samba 安装
- 解决,文件上传到 ftp 服务器,中文出现乱码问题
- 程序员的乐趣从哪来?编程能给我带来乐趣吗?
- 1247 排排站 USACO(查分+hash)
- 查看mysql是否归档的命令_查看oracle数据库是否为归档模式
- python导入自己写的py_卧槽,神操作!一句查询让Python帮忙自己写程序
- azure db 设置时区_使用Azure Cosmos DB开始您的旅程
- python 解析命令行
- iOS小技能:iOS15适配导航条主题: 背景颜色、标题颜色
- java winhex_winhex模版
- 广州“粤A000F1”车牌拍出74万天价(图)
- 【Unity开发小技巧】Unity打包IOS端APP
- 深入理解Andorid 卷I 第五章
- 麦克风声源定位原理_一种利用麦克风阵列进行声源定位的方法与流程
- 在 Vue3 成为默认版本后,盘点了 Vue3 与 Vue2 的区别
- Sublime text3143中文乱码只能输入繁体字
- 正则表达式操作字符串