问题描述
在goldengate复制检查点表中,有低位置和高位置,如果ogg崩溃,它如何恢复而没有数据丢失?从低位恢复?但是在低仓和高仓之间,有些数据是应用的,有些不是,复制怎么知道哪些已经应用了?它被记录在哪里?您能解释一下吗,谢谢!
TESTCAP> select server_name, processed_low_position, applied_low_position, applied_high_position from dba_gg_inbound_progress; SERVER_NAME PROCESSED_LOW_POSITION APPLIED_LOW_POSITION APPLIED_HIGH_POSITION ------------------------------ ------------------------------ ------------------------------ ------------------------------ OGG$RP_FIN 10249060774539 10249060774539 10249060775980 OGG$RP_ALL 10249064445975 10249064445975 10249064451882 APPLIED_LOW_POSITION VARCHAR2(4000) All messages with commit position less than this value have been applied. This column should be used to view the progress of the GoldenGate apply. This column will hold an Oracle SCN numeric value in text format for an Oracle source database. For a non-Oracle source database, this column will hold the apply low position in GoldenGate CSN text format for that specific source database. APPLIED_HIGH_POSITION VARCHAR2(4000) Highest commit position of a transaction that has been applied
专家解答
感谢您的耐心配合,并向社区王牌总监veerattesshwaran Sridhar大声疾呼。
APPLIED_LOW_POSITION-这是已确认的SCN,由Replicat进程应用于目标。这是replicat进程最后应用的记录或事务。有了这个,我们可以确认,直到这个SCN,目标数据库或表与源同步。对于任何问题,如果我们需要启动replicat进程或重新创建replicat进程并启动它,我们需要使用这个scn,
开始复制,在csn <应用 _low_position> 之后
APPLIED_HIGH_POSITION-应用于目标的最高位置 (SCN) 记录或事务复制过程。这里的要点是,low_position和high_position之间可能存在交易,也可能不存在交易。例如,让我们以您的情况本身为例,在这些头寸 (SCN) 之间可能存在交易,
案例-1-低和高之间有交易
应用 _ 低: 2000
________
T1 - 2200 |
T2 - 2500 | _______ 我们不确定是否应用这些交易。复制过程可能会应用它,也可能不会应用它。
T3 - 2900 |
_ _
应用 _ 高: 3000
所以有一些低和高之间的交易。Replicat流程同时应用了LOW和HIGH,但不确定是否应用了LOW和HIGH之间的事务。
在这个例子中,我们肯定需要考虑APPLIED_LOW_POSITION
案例2-低和高之间没有交易
应用 _ 低: 2000
无交易 ----- 低后的下一个立即头寸高
应用 _ 高: 3000
所以低与高之间没有交易。低后的下一个立即位置是高。在这种情况下,我们可以考虑APPLIED_HIGH_POSITION
为了确认这一点,我们需要使用LOGDUMP实用程序并扫描跟踪文件。
操作系统>。/logdump
日志转储> 打开 <文件>
日志转储> ghdr开启
日志转储>详细数据
日志转储> ggstoken详细信息
日志转储> 用户令牌详细信息
日志转储> 过滤器包括ggstoken logcsn >= <应用 _ 低 _ 位置>
日志转储> n
如果在特定的跟踪文件中找不到该记录,请通过发出以下命令移动到下一个跟踪文件,
日志转储> nt
日志转储> n
请做下一步,直到你找到SCN。
日志转储> nt
日志转储> n
找到SCN后,发出以下命令以停止过滤器。
日志转储> 过滤器清除
现在再次发出以下命令,
日志转储> n
这将给你下一张唱片。
日志转储>
日志转储>
老位置
目前正在应用的交易的最早位置。这些是APPLIED_LOW和APPLIED_HIGH之间的事务。
另外,您需要了解检查点。
GoldenGate中的每个进程都有自己的检查点文件。因此,无论何时启动或重新启动replicat进程,它都会引用它的检查点文件信息,并将它们与ALL_GG_INBOUND_PROGRESS进行比较,然后启动。
https://www.oracle-scn.com/oracle-goldengate-checkpoints/
https://docs.oracle.com/en/cloud/paas/goldengate-cloud/gwuad/replicat-checkpoints.html#GUID-9B28A222-B5EF-4520-AAA6-89F0D8E94B0E
信息副本 <副本名称> 显示
上面的命令给出了检查点信息。对于经典和集成的复制过程,这有所不同。
希望这能澄清。如果您需要更多信息,请告诉我。
APPLIED_LOW_POSITION-这是已确认的SCN,由Replicat进程应用于目标。这是replicat进程最后应用的记录或事务。有了这个,我们可以确认,直到这个SCN,目标数据库或表与源同步。对于任何问题,如果我们需要启动replicat进程或重新创建replicat进程并启动它,我们需要使用这个scn,
开始复制
APPLIED_HIGH_POSITION-应用于目标的最高位置 (SCN) 记录或事务复制过程。这里的要点是,low_position和high_position之间可能存在交易,也可能不存在交易。例如,让我们以您的情况本身为例,在这些头寸 (SCN) 之间可能存在交易,
案例-1-低和高之间有交易
应用 _ 低: 2000
________
T1 - 2200 |
T2 - 2500 | _______ 我们不确定是否应用这些交易。复制过程可能会应用它,也可能不会应用它。
T3 - 2900 |
_ _
应用 _ 高: 3000
所以有一些低和高之间的交易。Replicat流程同时应用了LOW和HIGH,但不确定是否应用了LOW和HIGH之间的事务。
在这个例子中,我们肯定需要考虑APPLIED_LOW_POSITION
案例2-低和高之间没有交易
应用 _ 低: 2000
无交易 ----- 低后的下一个立即头寸高
应用 _ 高: 3000
所以低与高之间没有交易。低后的下一个立即位置是高。在这种情况下,我们可以考虑APPLIED_HIGH_POSITION
为了确认这一点,我们需要使用LOGDUMP实用程序并扫描跟踪文件。
操作系统>。/logdump
日志转储> 打开 <文件>
日志转储> ghdr开启
日志转储>详细数据
日志转储> ggstoken详细信息
日志转储> 用户令牌详细信息
日志转储> 过滤器包括ggstoken logcsn >= <应用 _ 低 _ 位置>
日志转储> n
如果在特定的跟踪文件中找不到该记录,请通过发出以下命令移动到下一个跟踪文件,
日志转储> nt
日志转储> n
请做下一步,直到你找到SCN。
日志转储> nt
日志转储> n
找到SCN后,发出以下命令以停止过滤器。
日志转储> 过滤器清除
现在再次发出以下命令,
日志转储> n
这将给你下一张唱片。
日志转储>
日志转储>
老位置
目前正在应用的交易的最早位置。这些是APPLIED_LOW和APPLIED_HIGH之间的事务。
另外,您需要了解检查点。
GoldenGate中的每个进程都有自己的检查点文件。因此,无论何时启动或重新启动replicat进程,它都会引用它的检查点文件信息,并将它们与ALL_GG_INBOUND_PROGRESS进行比较,然后启动。
https://www.oracle-scn.com/oracle-goldengate-checkpoints/
https://docs.oracle.com/en/cloud/paas/goldengate-cloud/gwuad/replicat-checkpoints.html#GUID-9B28A222-B5EF-4520-AAA6-89F0D8E94B0E
信息副本 <副本名称> 显示
上面的命令给出了检查点信息。对于经典和集成的复制过程,这有所不同。
希望这能澄清。如果您需要更多信息,请告诉我。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




