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



         在GoldenGate的运维过程中,经常会因为某些原因,需要修改源端抽取进程的读取点,比如从指定时间开始解析日志。 操作命令如下:
    GGSCI>alter extract ex2, begin 2020-04-22 10:00:00
    以上命令即可将抽取进程的读取点改到2020.4.22 10点整,OGG会捕获这个时间之后启动的事务。
         当然,上面语句能否修改成功,需要确认生产源库的日志文件是否存在,如果修改的读取点是很早之间,有可能归档日志已经被删除,则抽取进程会提示找不到日志文件而报错。

        以上命令针对传统抽取进程,在日志文件具备的情况下是可以走通的。那么从OGG 11.2之后开始出现的集成抽取,能否也可以按相同的方式执行呢?答案是肯定的,但有一些限制条件,而且操作命令比针对传统抽取的修改更复杂。如果只是简单采用上面的语句修改读取时间点,事实上是不会生效,因为集成抽取的读取时间点存储在系统表里,只是修改抽取进程的检查点文件是不行的。针对集成抽取的读取时间点修改,正确的姿势是:

    1. 先查证系统上最早的能读取的SCN
    2. 根据SCN查证当时的时间点
    3. 根据SCN重新注册抽取进程
    4. 根据当时时间点,修改抽取进程的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时,可能会无法从停止点继续解析日志,从而造成漏数。

  • 相关阅读:
    浅析C#中的Thread ThreadPool Task和async/await
    C#中的集合类型
    WPF: StaticResource vs DynamicResource
    .NET程序员需要了解的概念、名词、术语--持续更新
    VisualStudio常见问题
    一些有用的.NET开源库--持续更新
    在MSBuild中使用Task实现自动引用指定版本的NuGet包
    C#与JMS的连接问题
    EventLog学习记录
    windows app设计原则总结-持续更新...
  • 原文地址:https://www.cnblogs.com/margiex/p/12868240.html
Copyright © 2020-2023  润新知