热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

OracleGoldenGate系列:深入理解OracleGoldenGate检查点机

检查点将进程的当前读写位置存储在磁盘中用于恢复目的。检查点不仅可以真实地标记Extract进程捕获的要进行同步的数据变化以及Replicat进程应用到target数据库的数据变化,防止进程进行冗余的数据处理,还可以提供容错机制,防止在系统、网络或Oracle

检查点将进程的当前读写位置存储在磁盘中用于恢复目的。检查点不仅可以真实地标记 Extract 进程捕获的要进行同步的数据变化以及 Replicat 进程应用到 target 数据库的数据变化,防止进程进行冗余的数据处理,还可以提供容错机制,防止在系统、网络或 Oracle

检查点将进程的当前读写位置存储在磁盘中用于恢复目的。检查点不仅可以真实地标记 Extract进程捕获的要进行同步的数据变化以及 Replicat进程应用到 target数据库的数据变化,防止进程进行冗余的数据处理,还可以提供容错机制,防止在系统、网络或 Oracle GoldenGate进程需要重启时发生数据丢失。对于复杂的同步配置,检查点可以确保多个 ExtractReplicat进程从同一组 trail文件中进行读取操作。检查点和进程间的回执机制共同防止了网络间的信息丢失。 Oracle GoldenGate采用了一套专有的可靠信息传递技术。

Extract进程创建检查点来存储其在数据源中的读取位置以及trail文件中的写入位置信息。由于 Extract进程只捕获已提交的事务,因此 Extract进程必须跟踪所有 open(未提交)事务的操作,才能实时感知这些事务的提交状态。这就要求 Extract进程记录一个检查点来表示该进程当前在事务日志中的读取位置以及最早开始的 open(未提交)事务的起始位置(可能在当前读取的事务日志中,也可能在之前的事务日志中)。为了控制 Extract进程发生中断后必须重新处理的事务日志量,Extract进程会以特定的时间间隔将正在处理的事务(包括长时间运行的事务的状态和数据)的当前状态及数据写入磁盘。当 Extract进程在这些时间间隔中任意某个间隔点停止时,Extract进程可以直接从上一个时间间隔内的某个时间点或者上一个检查点位置开始进行恢复,而不用从事务日志中最早开始的长时间运行事务的起始位置开始进行恢复。这一过程实质上就是 Extract进程的Bounded Recovery机制,详情请参考《Oracle GoldenGate 系列:Extract 进程的恢复原理》,地址:http://blog.csdn.net/xiangsir/article/details/8785484

Replicat进程创建检查点来存储其在 trail文件中的读取位置。Replicat进程将其检查点信息存储在 target 数据库中的检查点表中来保护其处理的事务的提交信息以及在 trail文件中的读取位置。当数据库进行恢复后,检查点表可以保证数据的一致性,确保即使是在 Replicat进程或者数据库进程发生故障后,一个事务也只会被应用一次。为了实现报告目的,Replicat进程还会在OGG根目录下的 dirchk子目录下写一个检查点文件。对于 initial load之类的非持续性同步配置,不需要检查点机制。

? Extract进程负责维护:

? 3 个输入检查点

? 1 个输出检查点

通过 info extractextract_name,showch命令可以查看上述检查点信息:

Extract进程检查点信息示例

GGSCI(prod.oracle.com) 11> info escott,showch

EXTRACT ESCOTT Last Started 2013-05-23 20:51 Status RUNNING

Checkpoint Lag 00:00:00 (updated 00:00:01 ago)

Log ReadCheckpoint Oracle Redo Logs

2013-05-23 20:52:01 Seqno 201, RBA 352256

SCN 0.1649108 (1649108)

Current CheckpointDetail:

-----三个输入检查点

Read Checkpoint #1

Oracle Redo Log

Startup Checkpoint (starting position in thedata source):

Thread #: 1

Sequence #: 200

RBA: 4214800

Timestamp: 2013-05-23 17:33:36.000000

SCN: 0.1628299 (1628299)

Redo File:/u01/app/oracle/oradata/prod/redo02.log

RecoveryCheckpoint (position of oldest unprocessed transaction in the data source):

Thread #: 1

Sequence #: 201

RBA: 347152

Timestamp: 2013-05-23 20:51:58.000000

SCN: 0.1649106 (1649106)

Redo File:/u01/app/oracle/oradata/prod/redo03.log

CurrentCheckpoint (position of last record read in the data source):

Thread #: 1

Sequence #: 201

RBA: 352256

Timestamp: 2013-05-23 20:52:01.000000

SCN: 0.1649108 (1649108)

Redo File:/u01/app/oracle/oradata/prod/redo03.log

----一个输出检查点

Write Checkpoint #1

GGS Log Trail

CurrentCheckpoint (current write position):

Sequence #: 30

RBA: 1079

Timestamp: 2013-05-23 20:52:04.923545

Extract Trail: ./dirdat/aa

ExtractPump)进程检查点信息示例

GGSCI(prod.oracle.com) 15> info pscott,showch

EXTRACT PSCOTT Last Started 2013-05-23 21:25 Status RUNNING

Checkpoint Lag 00:00:00 (updated 00:00:06 ago)

Log ReadCheckpoint File ./dirdat/aa000030

First Record RBA 1079

Current CheckpointDetail:

Read Checkpoint #1

GGS Log Trail

Startup Checkpoint (starting position in thedata source):

Sequence #: 30

RBA: 1079

Timestamp: 2013-05-23 20:51:22.385499

Extract Trail: ./dirdat/aa

CurrentCheckpoint (position of last record read in the data source):

Sequence #: 30

RBA: 1079

Timestamp: Not Available

Extract Trail: ./dirdat/aa

Write Checkpoint #1

GGS Log Trail

CurrentCheckpoint (current write position):

Sequence #: 16

RBA: 1251

Timestamp: 2013-05-23 21:37:59.020538

Extract Trail: ./dirdat/pa

Oracle建议在 target数据库中创建检查点表,GoldenGate会同时在检查点文件和检查点表(如果存在)中维护检查点数据。

? Replicat进程负责维护2个输入检查点:


ReplicatDelivery进程检查点信息示例

GGSCI(dss.oracle.com) 2> info rscott,showch

REPLICAT RSCOTT Last Started 2013-05-23 21:33 Status RUNNING

Checkpoint Lag 00:00:00 (updated 00:00:00 ago)

Log ReadCheckpoint File ./dirdat/pa000016

First Record RBA 1251

Current CheckpointDetail:

Read Checkpoint #1

GGS Log Trail

StartupCheckpoint (starting position in the data source):

Sequence #: 16

RBA: 1251

Timestamp: 2013-05-23 21:26:10.516047

Extract Trail: ./dirdat/pa

CurrentCheckpoint (position of last record read in the data source):

Sequence #: 16

RBA: 1251

Timestamp: Not Available

Extract Trail: ./dirdat/pa

CSN stateinformation:

CRC: 6D-46-5-9A

Latest CSN: 1619129

Latest TXN: 2.32.1145

Latest CSN of finished TXNs: 1619129

Completed TXNs: 2.32.1145

除了上述 infoprocess_name,showch 命令可以查看进程的详细检查点信息外,对于 Replicat进程,我们一般还会配置 checkpoint表,我们还可以在 checkpoint表中获取这些信息。

OGG进程的检查点文件位于 dirchk子目录下,Extract进程的检查点文件扩展名为 cpsReplicat进程的检查点文件扩展名为 cpr

The different OGG checkpoint files are located underthe dirchk/ location, e.g.

- extract related : *.cpe;

- extract pump (datapump) related : *.cpe;

- bounded recovery related : *.cpb; - refer to 'Bounded Recovery'

- replicat related : *.cpr

源文档 <http://www.manishsrivastava-dba.com/2012/11/comparison-of-golden-gate-vs-streams.html>

[oracle@proddirchk]$ ls -lt ESCOTT*

-rw-rw-r-- 1 oracleoinstall 67584 May 23 21:58 ESCOTT.cpe

[oracle@proddirchk]$ ls -lt PSCOTT*

-rw-rw-r-- 1 oracleoinstall 67584 May 23 21:58 PSCOTT.cpe

[oracle@dss dirchk]$ls -lt RSCOTT*

-rw-rw-r-- 1 oracleoinstall 22528 May 23 21:55 RSCOTT.cpr

对于 Replicat进程,我们一般还会配置 checkpoint表,可以直接通过查询检查点表获取进程的检查点信息:

select * fromggs.ggs_checkpoint

Oracle GoldenGate检查点机制工作原理详解:

ExtractCapture)进程如何记录检查点

如上图所示,源数据库中共运行了4个事务:TX1TX2TX3 TX4CaptureExtract)进程将从事务日志中捕获的最早开始运行的未提交的事务 Begin,TX1 检查点信息、从事务日志中读取的最后一条操作记录Delete,TX4的检查点信息以及按照事务提交顺序写入trail文件的最后一条commit操作 COMMIT,TX3 的检查点信息写入检查点文件(见图中的文本图标)。注意,上图虽未包含事务日志的读取起点信息,并不代表 Extract进程不会将该检查点信息写入磁盘文件。

ExtractPump)进程如何记录检查点

如上图所示,Pump进程将其在 Extract进程所写的 trail文件中的当前读取位置Commit,TX2以及在自己所写的 remote trail文件中的当前写入位置 Commit,TX2记录到磁盘上的检查点文件中。

ReplicatDelivery)进程如何记录检查点

如上图所示,Replicat进程将其在 Pump文件传送过来的 trail文件中的当前读取位置Commit,TX2写入检查点文件。


作者:xiangsir

QQ:444367417

MSN:xiangsir@hotmail.com

推荐阅读
  • 在尝试加载支持推送通知的iOS应用程序的Ad Hoc构建时,遇到了‘no valid aps-environment entitlement found for application’的错误提示。本文将探讨此错误的原因及多种可能的解决方案。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • 长期从事ABAP开发工作的专业人士,在面对行业新趋势时,往往需要重新审视自己的发展方向。本文探讨了几位资深专家对ABAP未来走向的看法,以及开发者应如何调整技能以适应新的技术环境。 ... [详细]
  • 本文探讨了如何通过优化 DOM 操作来提升 JavaScript 的性能,包括使用 `createElement` 函数、动画元素、理解重绘事件及处理鼠标滚动事件等关键主题。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 本文将详细探讨 Python 编程语言中 sys.argv 的使用方法及其重要性。通过实际案例,我们将了解如何在命令行环境中传递参数给 Python 脚本,并分析这些参数是如何被处理和使用的。 ... [详细]
  • 为何Compose与Swarm之后仍有Kubernetes的诞生?
    探讨在已有Compose和Swarm的情况下,Kubernetes是如何以其独特的设计理念和技术优势脱颖而出,成为容器编排领域的领航者。 ... [详细]
  • hlg_oj_1116_选美大赛这题是最长子序列,然后再求出路径就可以了。开始写的比较乱,用数组什么的,后来用了指针就好办了。现在把代码贴 ... [详细]
  • Nginx 启动命令及 Systemctl 配置详解
    本文详细介绍了在未配置和已配置 Systemctl 的情况下启动 Nginx 的方法,并提供了详细的配置步骤和命令示例。 ... [详细]
  • 最近与一位爱好中国古典文学的女孩交往,她分享了这样一首诗:‘钓日礁云共白头,也无荣辱也无忧;相逢话到投机处,山自青青水自流。’请问这首诗表达了什么样的情感或意图? ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • 本文介绍了如何通过安装 sqlacodegen 和 pymysql 来根据现有的 MySQL 数据库自动生成 ORM 的模型文件(model.py)。此方法适用于需要快速搭建项目模型层的情况。 ... [详细]
  • 本文详细介绍了如何利用Xshell配合Xftp实现文件传输,以及如何使用Pure-FTPd构建FTP服务,并探讨了VSFTP与MySQL结合存储虚拟用户的方法。 ... [详细]
  • 在使用 Nginx 作为服务器时,发现 Chrome 能正确从缓存中读取 CSS 和 JS 文件,而 Firefox 却无法有效利用缓存,导致加载速度显著变慢。 ... [详细]
author-avatar
嘛道理
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有