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

GoldenGate如何修改抽取进程的读取点?(经典模式和集成模式)

原创 szrsu 2023-01-02
1332

GoldenGate如何修改抽取进程的读取点?

一、针对经典模式的读取时间点修改

在GoldenGate的运维过程中,经常会因为某些原因,需要修改源端抽取进程的读取点,比如从指定时间开始解析日志。 操作命令如下:

GGSCI > alter extract ex2, begin 2020-04-22 10:00:00

以上命令即可将抽取进程的读取点改到2020.4.22 10点整,OGG会捕获这个时间之后启动的事务。
当然,上面语句能否修改成功,需要确认生产源库的日志文件是否存在,如果修改的读取点是很早之间,有可能归档日志已经被删除,则抽取进程会提示找不到日志文件而报错。
以上命令针对传统抽取进程,在日志文件具备的情况下是可以走通的。

或者根据scn
GGSCI > info extcsa

EXTRACT EXTCSA Last Started 2023-01-02 09:47 Status STOPPED
Checkpoint Lag 00:00:00 (updated 00:00:36 ago)
Log Read Checkpoint Oracle Redo Logs
2023-01-02 09:58:28 Seqno 10625, RBA 109073920
SCN 0.3141412836 (3141412836)

GGSCI > alter extcsa,scn 3141412836
EXTRACT altered.

二、针对集成抽取的读取时间点修改

那么从OGG 11.2之后开始出现的集成抽取,能否也可以按相同的方式执行呢?

答案是肯定的,但有一些限制条件,而且操作命令比针对传统抽取的修改更复杂。
如果只是简单采用上面的语句修改读取时间点,事实上是不会生效,因为集成抽取的读取时间点存储在系统表里,只是修改抽取进程的检查点文件是不行的。

针对集成抽取的读取时间点修改,正确的姿势是:

先查证系统上最早的能读取的SCN
根据SCN查证当时的时间点
根据SCN重新注册抽取进程
根据当时时间点,修改抽取进程的begin时间
下面为详细的操作过程

步骤1,系统允许的最早能读取的SCN
SQL>col scn for 99999999999999999999
SQL>SELECT first_change# scn FROM gv$archived_log WHERE dictionary_begin = ‘YES’ AND standby_dest = ‘NO’ AND name IS NOT NULL AND status = ‘A’;
9084298460

步骤2,基于SCN查询当时的时间点
SQL>SELECT SCN_TO_TIMESTAMP(89084298460) FROM DUAL;
2020-04-22 22.21.45

根据上述返回的结果,能修改的读取时间,不能早于2020-04-22 22.21.45
否则修改读取点时会提示如下错误:
2020-04-23 12:30:38 ERROR OGG-02085 The logmining server failed to locate a dictionary at scn 89,079,565,000.

步骤3,重新注册
register extract exora database container(pdb1) scn 89084298460

步骤4,修改begin时间
alter exora begin 2020-04-22 22.21.45

经过以上步骤,即可修改集成抽取的读取点。

需要注意的是,在生产环境上,在未确认能修改的最早读取点之前,不要轻易stop抽取进程和unregister,除非已经做了读取点和日志备份,否则在重新register时,可能会无法从停止点继续解析日志,从而造成漏数。

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

评论