惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
博客园 - Franky
GbyAI
GbyAI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
爱范儿
爱范儿
IT之家
IT之家
酷 壳 – CoolShell
酷 壳 – CoolShell
aimingoo的专栏
aimingoo的专栏
博客园_首页
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recent Announcements
Recent Announcements
Scott Helme
Scott Helme
有赞技术团队
有赞技术团队
M
MIT News - Artificial intelligence
C
CERT Recently Published Vulnerability Notes
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Jina AI
Jina AI
F
Fortinet All Blogs
N
Netflix TechBlog - Medium
L
LangChain Blog
L
LINUX DO - 最新话题
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
H
Hacker News: Front Page
MyScale Blog
MyScale Blog
P
Palo Alto Networks Blog
G
Google Developers Blog
Google DeepMind News
Google DeepMind News
AI
AI
T
Troy Hunt's Blog
Microsoft Azure Blog
Microsoft Azure Blog
阮一峰的网络日志
阮一峰的网络日志
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Vercel News
Vercel News
Microsoft Security Blog
Microsoft Security Blog
罗磊的独立博客
S
Secure Thoughts
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
人人都是产品经理
人人都是产品经理
Blog — PlanetScale
Blog — PlanetScale
博客园 - 司徒正美
Apple Machine Learning Research
Apple Machine Learning Research
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
S
Security @ Cisco Blogs
Cloudbric
Cloudbric
E
Exploit-DB.com RSS Feed
Attack and Defense Labs
Attack and Defense Labs

博客园 - margiex

OGG的一些常用网址 ogg初始化抽取的快速配置方法一: 将存量数据落地为标准trail 利用GoldenGate 21实现mysql8远程DDL同步 GoldenGate 21c发布 OGG配置文件中参数化的运用 GoldenGate基于中间队列文件的初始化 一次linux中毒,挖矿病毒 goldengate新版本中查看日志读取点 ogg同步Oracle数据库用户验证 GoldenGate在MySQL 集群中的应用 Oracle GoldenGate现在支持从 PostgreSQL 捕获数据 GoldenGate 2020.7 发布新特性 - 19.1.0.0.200714 GoldenGate如何修改抽取进程的读取点? 使用AutoHotKey提升工作效率 InnoDB和NDB,MySQL群集和InnoDB群集之间有什么区别? GoldenGate 19.1实时文本文件加载攻略 windows 10 excel 打开超连接提示 组织策略阻止... 配置ogg从Oracle到PostgreSQL的同步复制json数据 pi
验证ogg同步数据库表无主键表且目标表包含隐藏字段
margiex · 2019-09-20 · via 博客园 - margiex

问题描述:

已知:OGG在同步无主键的表时,OGG会自动设置表的全字段为主键,若目标表字段多于源表,同步过程中replicat进程可以读取insert操作但无法进行update/delete操作,从而导致replicat进程abend。

探究Oracle12c引入了一个新特性——隐藏字段,若将目标表多的字段隐藏,ogg是否能进行正常同步。

环境准备:

在同一数据库中不同用户下进行ogg同步,源端用户oggs,目标端用户oggt。

源端创建A表结构:

SQL>create table oggs.A(id number,name varchar2(12));

clip_image001

目标端创建A表结构:

SQL>create table oggt.A(id number,name varchar2(12),time timestamp(6) invisible);

clip_image002

注:seletc * from…不会出现隐藏字段,必须显示select隐藏字段 才能显示。

OGG进程配置:

extract进程配置

extract ex

dynamicresolution

userid oggs,password oggs

exttrail ./dirdat/as

table oggs.A;

pump进程配置

extract pu

RMTHOST 127.0.0.1, MGRPORT 7909

RMTTRAIL ./dirdat/at

table oggs.A;

replicat进程配置

REPLICAT re

DBOPTIONS INTEGRATEDPARAMS(parallelism 6)

USERID oggt, PASSWORD oggt

MAP oggs.A, target oggt.A, colmap(useDefaults, oggtime=@datenow());

启动测试:

1启动源端ex、pu进程,目标端re进程;

在启动ex过程中OGG报错: ERROR OGG-02022 Logmining server does not exist on this Oracle database.

***解决方案:GGSCI>register extract ex database

2源端A表插入数据:

SQL> insert into oggs.A values(1,'a');

1 row inserted

SQL> commit;

Commit complete

SQL> select * from oggs.A;

ID NAME

---------- ------------

1 a

3目标端查询数据是否插入:

SQL> select id,name,time from oggt.A;

ID NAME TIME

---------- ------------ --------------------------------------------------------------------------------

1 a 20-9月 -19 02.06.22.000000 下午

4源端update数据:

SQL> update oggs.A set name='b' where id=1;

1 row updated

SQL> commit;

Commit complete

SQL> select * from oggs.A;

ID NAME

--------- ------------

1 b

5目标端查询数据是否更新:

SQL> select id,name,time from oggt.A;

ID NAME TIME

--------- ------------- --------------------------------------------------------------------------------

1 a 20-9月 -19 02.06.22.000000 下午

6查看目标端OGG replicat进程报告:

GGSCI>view report re

2019-09-20 14:15:28 ERROR OGG-01296 Error mapping from OGGS.A to OGGT.A.

2019-09-20 14:15:34 ERROR OGG-01668 PROCESS ABENDING.

Report at 2019-09-20 14:15:34 (activity since 2019-09-20 14:06:22)

From Table OGGS.A to OGGT.A:

# inserts: 1

# updates: 0

# deletes: 0

# discards: 1

显示插入一个数据,丢弃一个数据。

结果:同步失败。

*若给re进程重新配置,添加指定keycols(id,name)

REPLICAT re

DBOPTIONS INTEGRATEDPARAMS(parallelism 6)

USERID oggt, PASSWORD oggt

MAP oggs.A, target oggt.A, keycols(id,name),colmap(useDefaults, time=@datenow());

*重启re进程,目标端查询数据:

SQL> select id,name,time from oggt.A;

ID NAME TIME

---------- ------------ --------------------------------------------------------------------------------

1 b 20-9月 -19 02.29.07.000000 下午

GGSCI>view report re

Report at 2019-09-20 14:36:31 (activity since 2019-09-20 14:29:07)

From Table OGGS.A to OGGT.A:

# inserts: 1

# updates: 1

# deletes: 0

# discards: 0

显示插入一个数据,更新一个数据。

结果:同步正常进行

结论:在同步无主键的表时,即使将目标表的多出的字段隐藏,若不指定keycols,同样会导致OGG 同步update、delete失败。

因此,在同步没有主键的表时,且目标字段与源字段数量不同,此时需在进程中配置keycols或在同步开始之前在数据库中为需要同步的表设定主键。