现在的位置: 首页 > 综合 > 正文

Oracle GoldenGate 系列:深入理解 Oracle GoldenGate 检查点机制

2013年09月09日 ⁄ 综合 ⁄ 共 5380字 ⁄ 字号 评论关闭

 

      检查点将进程的当前读写位置存储在磁盘中用于恢复目的。检查点不仅可以真实地标记 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进程的检查点文件扩展名为
cps
Replicat进程的检查点文件扩展名为 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
TX4
CaptureExtract)进程将从事务日志中捕获的最早开始运行的未提交的事务
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

原文链接:http://blog.csdn.net/xiangsir/article/details/8967577

QQ:444367417

MSN:xiangsir@hotmail.com

【上篇】
【下篇】

抱歉!评论已关闭.