转载:http://www.easyora.net/blog/goldengate_rac_threads_remap.html

当rac节点变更的时候,比如我们添加或者删除了集群中的节点,理所当然会对节点对应的log threads进行添加或者删除,但会造成goldengate的map log threads的顺序发生紊乱。在进行这一类行为变更的时候,特别需要注意goldengate端也需要进行特别处理。

比如,在节点添加之前,goldengate map log threads顺序如下(数据库log thread在后,下同):

1—>1 (假设是sequence 100,rba 1001)

2—>2(假设是sequence 88,rba 3009)

当添加节点后,map log threads的顺序会变成:

1—->3(sequence 88,rba 3009)

2—->1(sequence 100,rba 1001)

3—->2(new)

当ogg重新工作的时候,因为此时map的顺序发生了变化,因此会造成抽取进度出现问题。

如果有足够的处理时间,简单而又安全的做法是停止源端应用,删除extract进程后,重新配置新的extract进程并从当前开始抽取。但在这段时间内,所有的操作需确保在应用已经停止服务的前提下,否则数据将造成丢失或者不一致,需要手工处理或者重新初始化。

如果应用无法停机呢?我们可以将新建的extract进度修改成停止之前的进度状态,从而避免操作过程中应用的停机行为。

需要我们特别记录的checkpoint有:Current Checkpoint、Recovery Checkpoint以及Write Checkpoint

1.正常停止extract(略)

2.获得extract的checkpoint记录

GGSCI (node1) 21> info ext_r1 showch

EXTRACT    EXT_R1    Last Started 2011-08-16 22:35   Status STOPPED 
Checkpoint Lag       00:00:00 (updated 00:06:21 ago) 
Log Read Checkpoint  Oracle Redo Logs 
                     2011-08-17 03:32:48  Thread 1, Seqno 62, RBA 29890576 
Log Read Checkpoint  Oracle Redo Logs 
                     2011-08-17 03:32:34  Thread 2, Seqno 42, RBA 18674704

Current Checkpoint Detail:

Read Checkpoint #1

Oracle RAC Redo Log

Startup Checkpoint (starting position in the data source): 
    Thread #: 1 
    Sequence #: 61 
    RBA: 32112656 
    Timestamp: 2011-08-16 22:34:53.000000 
    SCN: 0.3743980 (3743980) 
    Redo File: +DATA1/my/onlinelog/group_1.261.758327805

Recovery Checkpoint (position of oldest unprocessed transaction in the data source): 
    Thread #: 1 
    Sequence #: 62 
    RBA: 29890576 
    Timestamp: 2011-08-17 03:32:48.000000 
    SCN: 0.3811675 (3811675) 
    Redo File: +DATA1/my/onlinelog/group_2.262.758327805

  Current Checkpoint (position of last record read in the data source): 
    Thread #: 1 
    Sequence #: 62 
    RBA: 29890576 
    Timestamp: 2011-08-17 03:32:48.000000 
    SCN: 0.3811675 (3811675) 
    Redo File: +DATA1/my/onlinelog/group_2.262.758327805

BR Previous Recovery Checkpoint: 
    Thread #: 1 
    Sequence #: 0 
    RBA: 0 
    Timestamp: 2011-08-16 22:35:09.416136 
    SCN: Not available 
    Redo File:

BR Begin Recovery Checkpoint: 
    Thread #: 1 
    Sequence #: 62 
    RBA: 22437392 
    Timestamp: 2011-08-17 02:35:11.000000 
    SCN: 0.3798208 (3798208) 
    Redo File:

BR End Recovery Checkpoint: 
    Thread #: 1 
    Sequence #: 62 
    RBA: 24120320 
    Timestamp: 2011-08-17 02:35:16.000000 
    SCN: 0.3801192 (3801192) 
    Redo File:

Read Checkpoint #2

Oracle RAC Redo Log

Startup Checkpoint (starting position in the data source): 
    Thread #: 2 
    Sequence #: 41 
    RBA: 25323024 
    Timestamp: 2011-08-16 22:34:40.000000 
    SCN: 0.3743980 (3743980) 
    Redo File: +DATA1/my/onlinelog/group_3.266.758328125

  Recovery Checkpoint (position of oldest unprocessed transaction in the data source): 
    Thread #: 2 
    Sequence #: 42 
    RBA: 18674704 
    Timestamp: 2011-08-17 03:32:34.000000 
    SCN: 0.3811674 (3811674) 
    Redo File: +DATA1/my/onlinelog/group_4.267.758328125

  Current Checkpoint (position of last record read in the data source): 
    Thread #: 2 
    Sequence #: 42 
    RBA: 18674704 
    Timestamp: 2011-08-17 03:32:34.000000 
    SCN: 0.3811674 (3811674) 
    Redo File: +DATA1/my/onlinelog/group_4.267.758328125

BR Previous Recovery Checkpoint: 
    Thread #: 2 
    Sequence #: 0 
    RBA: 0 
    Timestamp: 2011-08-16 22:35:09.416136 
    SCN: Not available 
    Redo File:

BR Begin Recovery Checkpoint: 
    Thread #: 2 
    Sequence #: 42 
    RBA: 15242240 
    Timestamp: 2011-08-17 02:35:02.000000 
    SCN: 0.3800455 (3800455) 
    Redo File:

BR End Recovery Checkpoint: 
    Thread #: 2 
    Sequence #: 42 
    RBA: 15242240 
    Timestamp: 2011-08-17 02:35:02.000000 
    SCN: 0.3800455 (3800455) 
    Redo File:

Write Checkpoint #1

GGS Log Trail

Current Checkpoint (current write position): 
    Sequence #: 3 
    RBA: 51132 
    Timestamp: 2011-08-17 03:32:48.695373 
    Extract Trail: /opt/ggs/dirdat/r1/ex

Header: 
  Version = 2 
  Record Source = A 
  Type = 6 
  # 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 = 2011-08-16 22:35:10 
  Last Update Time = 2011-08-17 03:32:48 
  Stop Status = G 
  Last Result = 402

3.新建extract进程。

GGSCI (node1) 34> ADD EXT ext_r1, BEGIN NOW, TRANLOG, THREADS 3

2011-08-17 03:52:26  INFO    OGG-01749  Successfully registered EXTRACT EXT_R1 to start managing log retention at SCN 3826107. 
EXTRACT added.

4.修改current checkpoint (注意每个thread都要修改)

GGSCI (node1) 35> alter EXTRACT ext_r1, TRANLOG, EXTSEQNO 62, EXTRBA 29890576,thread 1 
EXTRACT altered.

GGSCI (node1) 36> alter EXTRACT ext_r1, TRANLOG, EXTSEQNO 42, EXTRBA 18674704,thread 2

EXTRACT altered.

5. 修改recovery checkpoint (注意每个thread都要修改)

GGSCI (node1) 42> ALTER EXTRACT ext_r1, IOEXTSEQNO 62, IOEXTRBA 29890576,thread 1

GGSCI (node1) 42> ALTER EXTRACT ext_r1, IOEXTSEQNO 42, IOEXTRBA 18674704,thread 2

6. 修改exttrail或者rmttrail的write checkpoint

GGSCI (node1) 47> ADD EXTTRAIL /opt/ggs/dirdat/r1/ex,SEQNO 3, RBA 51132, EXTRACT ext_r1 
EXTTRAIL added.

7. 验证checkpoint是否修改成功(使用showch,略)

8.重新启动extract(略)

RAC环境中threads变更后如何确保goldengate继续正常复制的更多相关文章

  1. 怎么发现RAC环境中'library cache pin'等待事件的堵塞者(Blocker)?

    怎么发现RAC环境中的'library cache pin'等待事件的堵塞者(Blocker) 參考自 How to Find the Blocker of the 'library cache pi ...

  2. 【翻译自mos文章】在11gR2 rac环境中,文件系统使用率紧张,而且lsof显示有非常多oraagent_oracle.l10 (deleted)

    在11gR2 rac环境中,文件系统使用率紧张.而且lsof显示有非常多oraagent_oracle.l10 (deleted) 參考原文: High Space Usage and "l ...

  3. ReactJS antd 环境中项目上传图片后压缩(lrz的使用)

    lrz说明 ( github地址 :https://github.com/think2011/localResizeIMG ) 用于:在客户端压缩好要上传的图片可以节省带宽更快的发送给后端,特别适合在 ...

  4. Oracle rac集群环境中的特殊问题

    备注:本文摘抄于张晓明<大话Oracle RAC:集群 高可用性 备份与恢复> 因为集群环境需要多个计算机协同工作,要达到理想状态,必须要考虑在集群环境下面临的新挑战. 1.并发控制 在集 ...

  5. Oracle RAC 环境下的 v$log v$logfile

    通常情况下,在Oracle RAC 环境中,v$视图可查询到你所连接实例的相关信息,而gv$视图则包含所有实例的信息.然而在RAC环境中,当我们查询v$log视图时说按照常理的话,v$log视图应当看 ...

  6. Oracle 11g RAC 环境下单实例非缺省监听及端口配置

    如果在Oracle 11g RAC环境下使用dbca创建单实例数据库后,Oracle会自动将其注册到缺省的1521端口及监听器.大多数情况下我们使用的为非缺省监听器以及非缺省的监听端口.而且在Orac ...

  7. Oracle RAC环境下定位并杀掉最终阻塞的会话

    实验环境:Oracle RAC 11.2.0.4 (2节点) 1.模拟故障:会话被级联阻塞 2.常规方法:梳理找出最终阻塞会话 3.改进方法:立即找出最终阻塞会话 之前其实也写过一篇相关文章: 如何定 ...

  8. RAC环境修改参数生效测试

    本篇文档--目的:实验测试在RAC环境下,修改数据库参数与单实例相比,需要注意的地方 --举例说明,在实际生产环境下,以下参数很可能会需要修改 --在安装数据库完成后,很可能没有标准化,初始化文档,没 ...

  9. Oracle管理监控 之 rac环境密码文件管理

    密码文件作用: 密码文件用于dba用户的登录认证. dba用户:具备sysdba和sysoper权限的用户,即oracle的sys和system用户. RAC环境中多个节点的密码文件应该保证一致,否则 ...

随机推荐

  1. 用Python手把手教你搭一个Transformer!

    来源商业新知网,原标题:百闻不如一码!手把手教你用Python搭一个Transformer 与基于RNN的方法相比,Transformer 不需要循环,主要是由Attention 机制组成,因而可以充 ...

  2. vue--组件基础

    组件是可复用的 vue 实例,它与new Vue 接收相同的参数,例如:data.methods.computed.watch 以及生命周期钩子.除了 el 等. 1.组件注册必须有一个组件名. 组件 ...

  3. “AS3.0高级动画编程”学习:第二章转向行为(下)

    在上一篇里,我们学习了“自主角色”的一些基本行为:寻找(seek).避开(flee).到达(arrive).追捕(pursue).躲避(evade).漫游(wander).这一篇将继续学习其它更复杂, ...

  4. CentOS7 安装phpMyAdmin-4.8.3-all-languages

    1 需要先安装好web服务(如nginx).PHP.数据库(如MySQL) 在此略过... wget -O /tmp/phpMyAdmin--all-languages.tar.gz https:// ...

  5. html页面的CSS、DIV命名规则(仅供参考学习)

    CSS命名规则: 头:header 内容:content/containe 尾:footer 导航:nav 侧栏:sidebar 栏目:column 页面外围控制整体布局宽度:wrapper 左右中: ...

  6. Nevertheless 和 Nonetheless,你用对了吗?

    本文转自:https://www.sohu.com/a/229443257_338773 Nevertheless 以及 nonetheless 都可以表示转折.很多人很多课程也提到这两者基本上可以交 ...

  7. linux-kernel-4.4 移植 (2)解决上部遗留DMA-PL330的问题

    查看drivers/tty/serial/samsung.c文件发现,当传输数据量小于ourport->min_dma_size时,不使用DMA,大于等于min_mda_size时才是使用DMA ...

  8. C#smtp邮件消息提醒的一些bug总结

    软件通过检测公众号的某些链接是否异常发邮件提醒.. 1:网上找了些方法有说ssl  system.net.mail 不支持 ,这种说法是有问题的,其方法内设置的验证账号写成了邮箱的地址而不是账号也就是 ...

  9. devexpress总结 accordionControl 加载panelcontrol 的快捷方式

    先说保存: UserControl control; private void barButtonItem1_ItemClick(object sender, DevExpress.XtraBars. ...

  10. android 7.0 调用系统相机崩溃的解决方案(非谷歌官方推荐)

    解决方案: 1.(推荐)7.0之后你的app就算有权限,给出一个URI之后手机也认为你没有权限. 不用修改原有代码,在Application的oncreate方法中:(或者直接放在调用相机的activ ...