Oracle GoldenGate日常运维过程中常见的问题

一、背景:

在工作,有用到oracle数据库,并且采用了RAC集群模式,但是存在两个oracle数据库之间需要同步指定表的数据,这里就使用到了goldengate,简称是ogg。

1、OGG简介

GoldenGate是一家创建于1995年的美国公司,开发总部设在旧金山,在北美,欧洲和亚洲(包括新加坡、印度、澳大利亚)设有支持中心。

GoldenGate公司专注于数据同步领域,是实现数据同步技术的领导者。至2007年,在全球35个国家售出超过2000个许可证,客户分布在政府、银行、电信、证券、传媒、医疗等行业,大部分客户为全球500强企业,如中国海关总署、中国国家体育总局体彩管理中心、中国电子口岸、海南移动、美国银行、VISA、瑞银集团、澳大利亚海关、新加坡港务局等。 GoldenGate是许多一流的数据库厂商如Oracle、Sybase、Microsoft、MySQL、Teradata等公司的认证合作伙伴,并且和著名的公司如HP、IBM、Sun等厂商建立了战略合作伙伴关系。

2009年被甲骨文Oracle公司收购。

2、GoldenGate 工作原理:

OGG提供了一个单一的平台,这个平台可以为任何企业环境实现秒一级的灾难备份。OGG是一种基于于日志的结构化数据复制方式,它通过解析源数据库在线日志或归档日志获得数据的增删改变化,再将这些变化应用到目标数据库,实现源数据库与目标数据库同步、双活。

机制原理图:

二、常见问题:

问题一:停止了ogg后,完成数据迁移后,启动ogg时报错

问题描述:

报错内容:

bash 复制代码
Wildcard MAP resolved (entry CAM*DBO.*):
MAP "CAM*DBO"."PSNSDATALOG", TARGET CAM*DBO."PSNSDATALOG";
Using following columns in default map by name:
IDATALOGID, SFILENAME, TSDOWNLOADED, ICOUNT
Using the following key columns for target table CAM*DBO.PSNSDATALOG: IDATALOGID.
 
2019-03-30 12:32:18 WARNING OGG-00869 OCI Error ORA-00001: unique constraint (CAM*DBO.PSNSDATALOG_ID) violated (status = 1). INSERT /*+ RESTRICT_ALL_REF_CONS */ INTO "CAM*DBO"."PSNSDATALOG " ("IDATALOGID","SFILENAME","TSDOWNLOADED","ICOUNT") VALUES (:a0,:a1,:a2,:a3).
 
2019-03-30 12:32:18 WARNING OGG-01004 Aborted grouped transaction on 'CAM*DBO.PSNSDATALOG', Database error 1 (OCI Error ORA-00001: unique constraint (CAM*DBO.PSNSDATALOG_ID) violated (status = 1). INSERT /*+ RESTRICT_ALL_REF_CONS */ INTO "CAM*DBO"."PSNSDATALOG" ("IDATALOGID","SFILENAME","TSDOWNLOADED","ICOUNT") VALUES (:a0,:a1,:a2,:a3)).
 
2019-03-30 12:32:18 WARNING OGG-01003 Repositioning to rba 71736862 in seqno 1967.
 
2019-03-30 12:32:18 WARNING OGG-01154 SQL error 1 mapping CAM*DBO.PSNSDATALOG to CAM*DBO.PSNSDATALOG OCI Error ORA-00001: unique constraint (CAM*DBO.PSNSDATALOG_ID) violated (status = 1). INSERT /*+ RESTRICT_ALL_REF_CONS */ INTO "CAM*DBO"."PSNSDATALOG" ("IDATALOGID","SFILENAME","TSDOWNLOADED","ICOUNT") VALUES (:a0,:a1,:a2,:a3).
 
2019-03-30 12:32:18 WARNING OGG-01003 Repositioning to rba 71736862 in seqno 1967.
 
2019-03-30 12:32:18 ERROR OGG-01296 Error mapping from CAM*DBO.PSNSDATALOG to CAM*DBO.PSNSDATALOG.

问题分析:

这个"表上有一个唯一的索引,用于生成PKFKPC_DI的字段。"这意味着有一个独特的限制。如果表本身没有约束,这并不重要。如果您构建的索引是唯一的,则如果存在重复,则无法插入该索引。

将有一个丢弃文件,您可以使用sqlplus从丢弃文件中的值手动插入此表。您将得到0001错误和复制。获取创建脚本或检查此表上的外部约束。

简单的来说就是主键的唯一约束和索引的唯一约束发生了冲突,在ogg抽取过来到目标的端的时候ogg识别不了哪一个是唯一约束条件,就造成了唯一约束的报错,只要在目标端指定唯一主键约束就可以了,

问题解决:

只要在复制进程中设置哪一个是唯一约束条件就可以了,是设置主键为唯一约束,

在复制进程配置文件中加入keycols(unique)可以了

例子:

sql 复制代码
MAP SF_HX.*,TARGET SF_CXTJ.*, colmap (usedefaults , sjtb_sj=@date ("yyyy-mm-dd hh:mi:ss.ffffff", "JTS", @GETENV("JULIANTIMESTAMP"))) keycols(RKFKPC_ID); 

然后启动复制进程就可以了,

> start rhx2cx07

> info all -------------发现复制进程起来了,

问题二:OGG链路源端与目标端版本不同(OGG-01669)

问题描述:

目标端不能读取数据复制链路报错

bash 复制代码
2019-04-07 23:56:21 INFO OGG-01669 Oracle GoldenGate Collector: Opening ./dirdat/ab000000 (byte -1, current EOF 0).
2012-08-08 00:00:25 ERROR OGG-01389 Oracle GoldenGate Delivery for Oracle, REP.prm: File header failed to parse tokens. File ./dirdat/aa000000, last offset 810, data: 0x 32A: 000000013A00000200003B000004000000013C000014000000101414141414141414141414141114141433000070300000070005455854444131000002000332000002000B3300000200023400000200013500000200003600000200013700003D003B56657273696F6E2031312E322E312E302E31204F4747434F52455F3131.
2012-08-08 00:00:25 ERROR OGG-01668 Oracle GoldenGate Delivery for Oracle, REP.prm: PROCESS ABENDING.

问题分析:

由于使用goldengate软件版本不同,源端版本高,目标版本低导致

问题解决:

解决方法: 在源端传输进程添加如下的内容

bash 复制代码
> edit param phn2cx
.......
RMTTRAIL ./dirdat/ba ,format release 11.1(版本号)

> alter extract ehn2cx, etrollover        ---------前滚生产新的trail文件
> start ehn2cx

注:有传输进程报错无法打开读取trail文件,查看是不是打开的对应trail文件和抽取的开始的trail文件对不上,

可以查看进程的运行报告得知,view report ehn2cx/phn2cx

-----重置传输的trail文件就可以了

bash 复制代码
> alter extract phn2cx,extseqno 1,extrba 0
> start phn2cx 

复制进程也重置读取的trail文件

bash 复制代码
> alter replicat rhn2cx,extseqno 1,extrba 0
> start rhn2cx

但是有时候添加了以后是行不通的,还是报OGG-01669问题,可以如下的操作

bash 复制代码
> edit param ehn2cx
........
EXTTRAIL ./dirdat/ab,format release 11.1

其他的操作和上面一样的,

相关推荐
兩尛1 小时前
订单状态定时处理、来单提醒和客户催单(day10)
java·前端·数据库
web2u1 小时前
MySQL 中如何进行 SQL 调优?
java·数据库·后端·sql·mysql·缓存
Elastic 中国社区官方博客2 小时前
使用 Elasticsearch 导航检索增强生成图表
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
小金的学习笔记2 小时前
RedisTemplate和Redisson的使用和区别
数据库·redis·缓存
新知图书3 小时前
MySQL用户授权、收回权限与查看权限
数据库·mysql·安全
文城5213 小时前
Mysql存储过程(学习自用)
数据库·学习·mysql
沉默的煎蛋3 小时前
MyBatis 注解开发详解
java·数据库·mysql·算法·mybatis
呼啦啦啦啦啦啦啦啦3 小时前
【Redis】事务
数据库·redis·缓存
HaoHao_0103 小时前
AWS Serverless Application Repository
服务器·数据库·云计算·aws·云服务器
C语言扫地僧3 小时前
MySQL 事务及MVCC机制详解
数据库·mysql