模拟oracle rac节点异常时如何保持ogg正常运行

来源:这里教程网 时间:2026-03-03 18:19:55 作者:

--下面步骤为在ogg环境已经搭建完毕的情况下的测试,故不涉及到ogg的安装步骤。

一、模拟环境介绍

环境简介

系统

Oracle 版本

OGG 版本

源端

Linux 6.9

oracle11204

112101

目标端

Linux 6.9

oracle11204

122022

 

 

二、 准备测试ogg 环境

源端ogg

GGSCI (rac11gn1) 2> info *

 

 

EXTRACT    EXT28     Last Started 2020-11-06 11:20   Status RUNNING

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

Log Read Checkpoint  Oracle Redo Logs

                     2020-11-06 11:38:43  Thread 1, Seqno 10, RBA 180652544

                     SCN 2979.2159160499 (12796866735283)

Log Read Checkpoint  Oracle Redo Logs

                     2020-11-06 11:38:43  Thread 2, Seqno 17, RBA 573440

                     SCN 2979.2159160499 (12796866735283)

 

----- 挖掘进程的具体参数-----

 

 

GGSCI (rac11gn1) 3> view param ext28

 

extract ext28

setenv (NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK")

--setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

userid odc,password odc

exttrail ./dirdat/z3

tranlogoptions dblogreader

FETCHOPTIONS FETCHPKUPDATECOLS

ddl include objname test.* exclude objtype 'TRIGGER'

ddloptions addtrandata

table test.test1;

 

 

目标端ogg

GGSCI (oradb) 4> info rep28

 

REPLICAT   REP28     Last Started 2020-11-05 13:38   Status RUNNING

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

Process ID           5044

Log Read Checkpoint  File ./dirdat/z3000010

                     2020-11-06 13:48:24.927157  RBA 1567

 

----- 应用进程的具体参数-----

GGSCI (oradb) 5> view param rep28

 

replicat rep28

setenv (NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK")

userid odc, password odc

ASSUMETARGETDEFS                        

ALLOWNOOPUPDATES               

DBOPTIONS DEFERREFCONST

HANDLETPKUPDATE

ddl include mapped

DISCARDFILE /ogg/dirrpt/z3.dsc, APPEND megabytes 20

DISCARDROLLOVER on sunday

map test.* target test.*;

 

三、 测试RAC 中一个节点挂机

将二节点关机

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

 

 

观察ogg 变化

观察挖掘进程信息,可以看到二节点的RBA 变为了0.

GGSCI (rac11gn1) 10> info *

 

EXTRACT    DMP28     Last Started 2020-11-06 13:27   Status RUNNING

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

Log Read Checkpoint  File ./dirdat/z3000013

                     2020-11-06 11:20:33.296830  RBA 1075

 

EXTRACT    EXT28     Last Started 2020-11-06 13:27   Status RUNNING

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

Log Read Checkpoint  Oracle Redo Logs

                     2020-11-06 13:27:37  Thread 1, Seqno 10, RBA 187623440

                     SCN 2979.2159173792 (12796866748576)

Log Read Checkpoint  Oracle Redo Logs

                     2020-11-06 13:26:37  Thread 2, Seqno 18, RBA 0

                     SCN 2979.2159173716 (12796866748500)

 

 

观察日志信息,出现大量关于二节点信息

 

2020-11-06 13:30:01  INFO    OGG-01513  Oracle GoldenGate Capture for Oracle, ext28.prm:  Positioning to (Thread 2) Sequence 18, RBA 0, SCN 2979.2159173716.

2020-11-06 13:30:02  INFO    OGG-01513  Oracle GoldenGate Capture for Oracle, ext28.prm:  Positioning to (Thread 2) Sequence 18, RBA 0, SCN 2979.2159173716.

2020-11-06 13:30:04  INFO    OGG-01513  Oracle GoldenGate Capture for Oracle, ext28.prm:  Positioning to (Thread 2) Sequence 18, RBA 0, SCN 2979.2159173716.

2020-11-06 13:30:05  INFO    OGG-01513  Oracle GoldenGate Capture for Oracle, ext28.prm:  Positioning to (Thread 2) Sequence 18, RBA 0, SCN 2979.2159173716.

2020-11-06 13:30:06  INFO    OGG-01513  Oracle GoldenGate Capture for Oracle, ext28.prm:  Positioning to (Thread 2) Sequence 18, RBA 0, SCN 2979.2159173716.

2020-11-06 13:30:07  INFO    OGG-01513  Oracle GoldenGate Capture for Oracle, ext28.prm:  Positioning to (Thread 2) Sequence 18, RBA 0, SCN 2979.2159173716.

2020-11-06 13:30:08  INFO    OGG-01513  Oracle GoldenGate Capture for Oracle, ext28.prm:  Positioning to (Thread 2) Sequence 18, RBA 0, SCN 2979.2159173716.

2020-11-06 13:30:09  INFO    OGG-01513  Oracle GoldenGate Capture for Oracle, ext28.prm:  Positioning to (Thread 2) Sequence 18, RBA 0, SCN 2979.2159173716.

2020-11-06 13:30:10  INFO    OGG-01513  Oracle GoldenGate Capture for Oracle, ext28.prm:  Positioning to (Thread 2) Sequence 18, RBA 0, SCN 2979.2159173716.

 

 

 

删除二节点

此时挖掘进程无法正常抽取数据,有两种方法恢复ogg正常运行,一种是重建进程,另外一种则是先排除第二个节点,后续还可以加回去。

我们采用第二种方案。

1. 确认数据库节点顺序

SQL> select distinct thread# from v$log;

   THREAD#

----------

     1

     2

 

--- 注意日志节点顺序与ogg 节点顺序是否一致

 

2.禁用 二节点redo

SQL> alter database disable thread 2;

 

3. 加入参数排除二节点

如果上述日志节点不是顺序排序,排除时根据相应的节点排除

GGSCI (rac11gn1) 11> view param ext28

extract ext28

setenv (NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK")

userid odc,password odc

exttrail ./dirdat/z3

tranlogoptions dblogreader

FETCHOPTIONS FETCHPKUPDATECOLS

THREADOPTIONS PROCESSTHREADS EXCEPT 2

或者 THREADOPTIONS PROCESSTHREADS SELECT 1

ddl include objname xjm.* exclude objtype 'TRIGGER'

ddloptions addtrandata

table test.test1;

 

4. 观察日志

2020-11-06 14:51:42  ERROR   OGG-01937  Oracle GoldenGate Capture for Oracle, ext28.prm:  Extract is not configured to capture changes from thread 2,158,926,566. To avoid data loss, the Extract must be dropped and recreated with the THREADS option to specify the correct number of RAC instances. See the Oracle GoldenGate administration documentation for the procedure to follow.

 

5. 加入参数修复错误

根据mos 参考文档:

https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=486823160967100&id=1507081.1&_adf.ctrl-state=174svw9y8a_851

bug 是在 ogg11.2.0.5 以下版本中会出现,在 11.2.0.5 中已被修复好

GGSCI (rac11gn1) 28> view param ext28

 

extract ext28

setenv (NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK")

--setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

userid odc,password odc

exttrail ./dirdat/z3

tranlogoptions dblogreader

FETCHOPTIONS FETCHPKUPDATECOLS

THREADOPTIONS PROCESSTHREADS EXCEPT 2

TRANLOGOPTIONS _IGNORETHREADEVENT

ddl include objname test.* exclude objtype 'TRIGGER'

ddloptions addtrandata

table test.test1;

  

观察后台日志,没有明显错误出现。

四、 添加二节点

1. 在二节点修复之前做以下操作

--- 将挖掘的参数文件中将二节点添加回去

GGSCI (rac11gn1) 11> view param ext28

extract ext28

setenv (NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK")

userid odc,password odc

exttrail ./dirdat/z3

tranlogoptions dblogreader

FETCHOPTIONS FETCHPKUPDATECOLS

--THREADOPTIONS PROCESSTHREADS EXCEPT 2

TRANLOGOPTIONS _IGNORETHREADEVENT

ddl include objname test.* exclude objtype 'TRIGGER'

ddloptions addtrandata

table test.test1;

 

--激活 二节点redo

SQL> alter database enable thread 2;

 

2. 将二节点拉起来

SQL>startup

 

观察进程是否都正常运行。

相关推荐