什么是checkpoint?

在Oracle 数据库中checkpoint的意思是将内存中的脏数据强制写入到磁盘的事件,其作用是保持内存中的数据与磁盘上的数据一致。SCN是用来描述该事件发生的准确的时间点。

而GoldenGate中出现的checkpoint有着不同的含义。简单的说就是position,位置的意思。它记录了Extract进程在抽取事务时的进度。
使用INFO showch 命令可以查看当前正在运行的Extract进程中所记录的checkpoint。

当GoldenGate被计划内或者是计划外中断了,为了保证事务的连续性我们从哪里续传呢?答案是:哪里中断,哪里继续。在一个繁忙的数据库中用时间戳来衡量OGG抽取进度是不准确的,因为任何一个时间点都有可能截断了正在处理中的事务。准确的记录的方法是参考该事物在发起时所在trail文件的字节位置(RBA)。

startup checkpoint:

Extract进程启动时的信息,用多个参数描述了一个确切的时间点。包括thread,sequence,timestamp,RBA,SCN,redo log
sequence表示redo log、或者archive log的序列号。
RBA表示改时间点处于该sequence号日志文件中的字节地址。
SCN表示Oracle内部时钟

recovery checkpoint:

到目前为止还没结束的并且耗时最长的事务信息。包括thread,sequence,timestamp,RBA,SCN,redo log。
如果源端的抽取进程中断了,那么断点续传的位置就是这里了。

current checkpoint:

当前正在读取的事务信息。包括thread,sequence,timestamp,RBA,SCN,redo log

write checkpoint:
当前正在写入的trail文件信息。包括队列号(sequence),RBA,时间戳,队列文件
sequence表示trail文件的序号,有别于数据库中的同名概念。例如:trail文件ex000001的sequence为1

RBA表示当前信息在trail文件中的位置,有别于数据库中事务日志的RBA。通常这个RBA的数值等于当前正在写的trail文件的大小。
可以通过ls -al ./dirdat/ex000001来查看该文件的字节数来对比write checkpoint的RBA

下面通过一个屏幕输出来对应一下刚才提到的概念。在实验开始时,还需要再次执行该命令来获取最新的检查点信息。

查看抽取进程ex1的检查点:
GGSCI (node3) 9> info ex1 showch

EXTRACT    EX1       Last Started 2014-11-03 13:23   Status RUNNING  << 进程开始抽取事务的时间,ADD EXTRACT之后就生效了
Checkpoint Lag       00:00:03 (updated 00:00:07 ago)
Log Read Checkpoint  Oracle Redo Logs
                     2014-11-03 15:13:04  Thread 1, Seqno 21, RBA 26012672  << 2个节点的RAC就有2个Checkpoint
                     SCN 0.1614343 (1614343)
Log Read Checkpoint  Oracle Redo Logs
                     2014-11-03 15:13:02  Thread 2, Seqno 29, RBA 6584832
                     SCN 0.1614345 (1614345)

Current Checkpoint Detail:

Read Checkpoint #1  << 抽取进程的读检查点 节点1

Oracle Threaded Redo Log

Startup Checkpoint (starting position in the data source):
    Thread #: 1
    Sequence #: 11
    RBA: 6084096
    Timestamp: 2014-11-02 17:41:26.000000
    SCN: Not available
    Redo File:

Recovery Checkpoint是我们续传时关注的位置  
Recovery Checkpoint (position of oldest unprocessed transaction in the data source):
    Thread #: 1
    Sequence #: 21  << 所在队列序号
    RBA: 26012176   << 所在队列中的具体位置
    Timestamp: 2014-11-03 15:13:04.000000  << 事务发起的时间戳
    SCN: 0.1614343 (1614343)
    Redo File: +DATA/prod/onlinelog/group_1.299.859509355

Current Checkpoint (position of last record read in the data source):
    Thread #: 1
    Sequence #: 21
    RBA: 26012672
    Timestamp: 2014-11-03 15:13:04.000000
    SCN: 0.1614343 (1614343)
    Redo File: +DATA/prod/onlinelog/group_1.299.859509355

Read Checkpoint #2  << 抽取进程的读检查点 节点2

Oracle Threaded Redo Log
     
  Startup Checkpoint (starting position in the data source):
    Thread #: 2
    Sequence #: 11
    RBA: 4263936
    Timestamp: 2014-11-02 17:41:26.000000
    SCN: Not available
    Redo File:

Recovery Checkpoint (position of oldest unprocessed transaction in the data source):
    Thread #: 2
    Sequence #: 29
    RBA: 6584336
    Timestamp: 2014-11-03 15:13:02.000000
    SCN: 0.1614345 (1614345)
    Redo File: +DATA/prod/onlinelog/group_3.301.859509357

Current Checkpoint (position of last record read in the data source):
    Thread #: 2
    Sequence #: 29
    RBA: 6584832
    Timestamp: 2014-11-03 15:13:02.000000
    SCN: 0.1614345 (1614345)
    Redo File: +DATA/prod/onlinelog/group_3.301.859509357

Write Checkpoint #1

GGS Log Trail

Current Checkpoint (current write position):
    Sequence #: 47
    RBA: 1124760
    Timestamp: 2014-11-03 15:13:07.093886
    Extract Trail: /goldengate/dirdat/ex

CSN state information:
  CRC: E4-D6-3B-B4
  CSN: Not available

Header:
  Version = 2
  Record Source = A
  Type = 11
  # Input Checkpoints = 2
  # Output Checkpoints = 1

File Information:
  Block Size = 2048
  Max Blocks = 100
  Record Length = 4096
  Current Offset = 0

Configuration:
  Data Source = 3
  Transaction Integrity = 1
  Task Type = 0

Status:
  Start Time = 2014-11-03 13:23:05
  Last Update Time = 2014-11-03 15:13:07
  Stop Status = A
  Last Result = 0

当前源端有100万条记录
SYS@PROD2 > select count(*) from snow.t1;

COUNT(*)
----------
   1000000

系统时间为2014-11-03 15:37:08
SYS@PROD2 > alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

Session altered.

SYS@PROD2 > select sysdate from dual;

SYSDATE
-------------------
2014-11-03 15:37:08

源端插入一条新数据,不提交
SYS@PROD2 > insert into snow.t1 values(1000001,'Snow');

1 row created.

SYS@PROD2 >

关闭源端所有Extract进程
GGSCI (node3) 4> stop *

Sending STOP request to EXTRACT DP1 ...
Request processed.

Sending STOP request to EXTRACT EX1 ...
Request processed.

观察最新的checkpoint信息
GGSCI (node3) 14> info ex1 showch

EXTRACT    EX1       Last Started 2014-11-03 15:41   Status RUNNING
Checkpoint Lag       00:00:02 (updated 00:00:01 ago)
Log Read Checkpoint  Oracle Redo Logs
                     2014-11-03 15:41:48  Thread 1, Seqno 21, RBA 27887616
                     SCN 0.1620285 (1620285)
Log Read Checkpoint  Oracle Redo Logs
                     2014-11-03 15:41:46  Thread 2, Seqno 29, RBA 7889920
                     SCN 0.1620284 (1620284)

Current Checkpoint Detail:

Read Checkpoint #1

Oracle Threaded Redo Log

Startup Checkpoint (starting position in the data source):
    Thread #: 1
    Sequence #: 21
    RBA: 27644432
    Timestamp: 2014-11-03 15:39:18.000000
    SCN: Not available
    Redo File: +DATA/prod/onlinelog/group_3.301.859509357

Recovery Checkpoint (position of oldest unprocessed transaction in the data source):
    Thread #: 1
    Sequence #: 21
    RBA: 27887120
    Timestamp: 2014-11-03 15:41:48.000000
    SCN: 0.1620285 (1620285)
    Redo File: +DATA/prod/onlinelog/group_1.299.859509355

Current Checkpoint (position of last record read in the data source):
    Thread #: 1
    Sequence #: 21
    RBA: 27887616
    Timestamp: 2014-11-03 15:41:48.000000
    SCN: 0.1620285 (1620285)
    Redo File: +DATA/prod/onlinelog/group_1.299.859509355

Read Checkpoint #2

Oracle Threaded Redo Log

Startup Checkpoint (starting position in the data source):
    Thread #: 2
    Sequence #: 29
    RBA: 7750160
    Timestamp: 2014-11-03 15:39:16.000000
    SCN: Not available
    Redo File: +DATA/prod/onlinelog/group_3.301.859509357

Recovery Checkpoint (position of oldest unprocessed transaction in the data source):
    Thread #: 2
    Sequence #: 29
    RBA: 7750160
    Timestamp: 2014-11-03 15:37:40.000000
    SCN: 0.1619666 (1619666)
    Redo File: +DATA/prod/onlinelog/group_3.301.859509357

Current Checkpoint (position of last record read in the data source):
    Thread #: 2
    Sequence #: 29
    RBA: 7889920
    Timestamp: 2014-11-03 15:41:46.000000
    SCN: 0.1620284 (1620284)
    Redo File: +DATA/prod/onlinelog/group_3.301.859509357

Write Checkpoint #1

GGS Log Trail

Current Checkpoint (current write position):
    Sequence #: 48
    RBA: 1076
    Timestamp: 2014-11-03 15:41:50.718150
    Extract Trail: /goldengate/dirdat/ex

CSN state information:
  CRC: CE-DB-CE-78
  CSN: Not available

Header:
  Version = 2
  Record Source = A
  Type = 11
  # Input Checkpoints = 2
  # Output Checkpoints = 1

File Information:
  Block Size = 2048
  Max Blocks = 100
  Record Length = 4096
  Current Offset = 0

Configuration:
  Data Source = 3
  Transaction Integrity = 1
  Task Type = 0

Status:
  Start Time = 2014-11-03 15:41:29
  Last Update Time = 2014-11-03 15:41:50
  Stop Status = A
  Last Result = 0

修改抽取进程启动位置,两个进程
GGSCI (node3) 7> ALTER EXTRACT ex1, EXTSEQNO 21, EXTRBA 27644432 THREAD 1
EXTRACT altered.

GGSCI (node3) 8> ALTER EXTRACT ex1, EXTSEQNO 29, EXTRBA 7750160 THREAD 2
EXTRACT altered.

重启进程后源端发起提交命名,结束该事务。
SYS@PROD2 > commit;

Commit complete.

第1000001条数据插入完成
SYS@PROD2 > select count(*) from snow.t1;

COUNT(*)
----------
   1000001

目标端第1000001条数据复制完成! 
SQL> select count(*) from snow.t1;

COUNT(*)
----------
   1000001

实验结束

http://blog.itpub.net/29047826/viewspace-1328761/

关于Oracle GoldenGate中Extract的checkpoint的理解 转载的更多相关文章

  1. Oracle GoldenGate中HANDLECOLLISIONS参数使用详解

    Oracle GoldenGate中HANDLECOLLISIONS参数使用详解   HANDLECOLLISIONS 是一个 replicat 进程参数,主要在 initial load 中使用.在 ...

  2. 【翻译自mos文章】在Oracle GoldenGate中循环使用ggserr.log的方法

    在OGG中循环使用ggserr.log的方法: 參考原文: OGG How Do I Recycle The "ggserr.log" File? (Doc ID 967932.1 ...

  3. Oracle中B-TREE索引的深入理解(转载)

    索引概述 索引与表一样,也属于段(segment)的一种.里面存放了用户的数据,跟表一样需要占用磁盘空间.只不过,在索引里的数据存放形式与表里的数据存放形式非常的不一样.在理解索引时,可以想象一本书, ...

  4. 为Oracle GoldenGate准备数据库

    了解如何为Oracle GoldenGate准备数据库,包括如何配置连接和日志记录,如何在数据库中启用Oracle GoldenGate,如何设置闪回查询以及如何管理服务器资源. 为集成进程配置连接 ...

  5. oracle中extract()函数----用于截取年、月、日、时、分、秒

    oracle中extract()函数从oracle 9i中引入,用于从一个date或者interval类型中截取到特定的部分 语法如下: extract ( { year | month | day ...

  6. 使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务

    使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务 作者:Nikolay Manchev 分步构建一个跨这些平台的 ...

  7. [转]Oracle GoldenGate安装配置

    ref:http://blog.sina.com.cn/s/blog_5d29418d0101cvyx.html 1 简介 Oracle Golden Gate软件是一种基于日志的结构化数据复制备份软 ...

  8. Oracle GoldenGate 异构平台同步(Mysql到Oracle)

    一.OGG安装配置(源端) 1.OGG下载 http://www.oracle.com/technetwork/cn/middleware/goldengate/downloads/index.htm ...

  9. Oracle GoldenGate实现数据库同步

    前言:最近刚好在弄数据库同步,网上查了些资料再加上自己整理了一些,做个分享! 一.GoldenGate的安装 1.安装包准备 数据库版本:Oracle Database 11g Release 2(1 ...

随机推荐

  1. ABAP下载txt文件

    IF NOT DOWN_F[] IS INITIAL.    CASE DOWN_MODE . "下载模式是放在所选路径下的.TXT文档中      WHEN 'X' .        CA ...

  2. C# 获取 oracle 存储过程的 返回值

    存储过程 CREATE OR REPLACE PROCEDURE ADMIN.INSERT_OBJ ( OBJEFIRT_parms IN NVARCHAR2, OBJEDATT_parms IN N ...

  3. Android Studio的简单设置:

    4.关闭更新: 如下图所示: 6.添加api文档悬浮提示: AS默认是没有api文档悬浮提示的,只有按住[Ctrl+Q]太会出现提示.如果要添加api的自动悬浮提示,设置如下: 上图中,在红框部分打钩 ...

  4. Spring 4.x Task 和 Schedule 概述(代java配置)

    转载请注明https://zhangzhaoyu.github.io/2016/09/30/spring-task-and-schedule-deep-research/ 摘要 在很多业务场景中,系统 ...

  5. 我是如何在我的unbuntu 虚拟机上安装 配置QT的

    ①使用 linux公社 上面的脚本下载 qt5.5离线版 在上一篇随笔中 ②配置环境变量使bash能早到qmake编译器 # sudo vi  /etc/profile (打开 全局环境变量保存位置) ...

  6. Qt 多线程和网络编程学习

    一,Qt多线程类学习 QThread类,开始一个新的线程就是开始执行重新实现QThread::run(),run()是默认现实调用exec(),QThread::start()开始线程的执行,run( ...

  7. bash shell,调用ffmpeg定期截图

    #!/bin/bash #获取当前目录中所有m3u8文件,并 var=$(ls |grep '.m3u8'|cut -d '.' -f1) #死循环 = ] do #循环每个文件 for stream ...

  8. Chrome Devtools简介

    Chrome开发工具(又称DevTools),是一套内嵌在chrome浏览器内部的web编写和调试工具.DevTools提供给web开发人员深入地访问浏览器内部和web应用的机会.DevTools可以 ...

  9. 远程连接Oracle时出现ORA-01034 和ORA-27101 的解决办法

    服务器本地连接自身没有问题,但远程客户端连接时报错,远程客户端使用tnsping也没有问题. cmd->tnsping 192.168.56.101:1521/ora11gR2 tnsping命 ...

  10. Jeesite的cahche工具类

    本CacheUtils主要是基于shiro的cache进行处理. 其他选择: 类似的我们可以选择java cache ,spring cahche等方案.                   再进一步 ...