一、搭建共享目录

1.ogg目录配置

export OGG_HOME=/u01/ogg
PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:/u01/app/oracle/product/11.1.0/db_1/bin/perl/bin/:$OGG_HOME
export PATH

二、然后开始配置OGG设置

1.DB设置

alter database force logging ;
alter database add supplemental log data;
alter system set enable_goldengate_replication=true scope=both;

检查是否设置完成:

select name,supplemental_log_data_min , force_logging, log_mode from v$database;

2.创建OGG表空间和用户

create tablespace TBS_OGG_DATA datafile  '+DATA' SIZE 1g;
drop tablespace TBS_OGG_DATA including contents and datafiles;

创建用户:

CREATE USER GOLDENGATE IDENTIFIED BY oracle DEFAULT TABLESPACE  TBS_OGG_DATA ;
grant dba to GOLDENGATE;

5.配置进程

配置OGG管理进程

  • 命令:netstat -ntlp|grep 7809 查看该端口是否被占用
    MGR进程:
PORT 7809
DYNAMICPORTLIST 7801-7805
AUTORESTART ER *,RETRIES 5,WAITMINUTES 3       --重试五次 每次3分钟间隔
PURGEOLDEXTRACTS  /u01/app/ogg/dirdat/*,usecheckpoints, minkeepdays      */2---定期清理抽取出的过期文件  最小保留天数
LAGREPORTHOURS 1           ---保留尚未修改的所有行。1小时。 设置基本滞后阈值
LAGINFOMINUTES 30        ---保留尚未修改的所有行。30分钟 设置基本滞后阈值
LAGCRITICALMINUTES 45  ---以分钟为单位设置临界滞后阈值。
userid goldengate, password oracle

start mgr 启动管理进程

5.2 创建别名

  • 创建 credential store
GGSCI (host100) 6> add credentialstore
Credential store created in ./dircrd/.
GGSCI (host100) 7>
  • 把用户凭证加入Credentialstore
alter credentialstore add user goldengate@ORAPDB,password oracle alias ogg1
GGSCI (host100) 14> dblogin  useridalias ogg1;    --这样就可以直接OGG登录数据库不用dblogin  账号密码等等了。
Successfully logged into database.
GGSCI (host100 as goldengate@u01) 15>
  • 不用别名登录:
dblogin  USERID goldengate, PASSWORD RLSaaZtg 
 delete extnew
 threads 2
 USERID goldengate, PASSWORD RLSaaZtg
  • 注意:-----创建初级提取组ex1,源端是双节点RAC,此处设置参数THREADS 2 三个节点就设置为3
ADD EXTRACT ex1,TRANLOG,BEGIN NOW,THREADS 2             end;

6.添加抽取进程: 集群要加threads 2

  • add extract extnew,tranlog,threads 2 begin now end;(仅取消begi用)
  • ADD EXTTRAIL /home/oracle/ogg/dirdat/nt, EXTRACT EXTNEW,megabytes 100

--路径为OGG家目录下面的dirdat 也就是存放抽取数据的路径
配置抽取进程

edit params extnew

EXTRACT extnew                                    
EXTTRAIL /home/oracle/ogg/dirdat/nt
discardfile  /home/oracle/ogg/extnew.dsc,append,megabytes 1                                 
--setenv (NLS_LANG = AMERICAN_AMERICA.ZHS16GBK)
SETENV (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
setenv (ORACLE_SID= "ORCL1")
USERID goldengate, PASSWORD RLSaaZtg
tranlogoptions asmuser sys@asm, asmpassword  Kh_22_tcdmc
TRANLOGOPTIONS DBLOGREADER            --有此参数不需要添加登录asm的账号密码参数

WILDCARDRESOLVE DYNAMIC
DYNAMICRESOLUTION
CACHEMGR CACHESIZE 8G, CACHEDIRECTORY /u01/ogg/dirtmp 
table appadmin.tmp_zjw;


EXTTRAIL /u01/ogg/dirdat/ht
SETENV (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
SETENV (ORACLE_SID = "fmpaydb1")
USERID goldengate, PASSWORD IcdzQlM7
tranlogoptions asmuser sys@asm, asmpassword  Kh_22_tcdmc
WILDCARDRESOLVE DYNAMIC
DYNAMICRESOLUTION
CACHEMGR CACHESIZE 8G, CACHEDIRECTORY /u01/ogg/dirtmp

6.1添加抽取的表

打开表级补充日志(需要以最小补充日志为前提)
dblogin USERID goldengate, PASSWORD oracle
add trandata APPADMIN.TMP_ZJW   --不能加';' 分号
info trandata APPADMIN.TMP_ZJW        --查看这个表有没有同步

 info trandata WEBAPP.*    查看是否同步
add trandata WEBAPP.*     添加表同步    --可以添加某个用户下所有的表 *
add trandata TELSER.*     添加表同步
 ALTER TABLE RSPAY.PAYCUSTOMERCANCEL LOGGING;

7.添加传输进程:

add extract PMP,exttrailsource /u01/ogg/dirdat/nt   --注意:路径和抽取路径一样,本地的路径
EXTRACT added.
--指定传输进程的trail文件路径  指定传输到对方的trail文件的路径。
add rmttrail /u01/ogg/dirdat/rt,extract PMP,megabytes 100  --配置传输目标端文件路径
RMTTRAIL added.
--配置进程的参数文件
edit param PMP
EXTRACT PMP
PASSTHRU
USERID goldengate, PASSWORD oracle
RMTHOST 192.168.198.110, MGRPORT 7809          --可以写目标vip
RMTTRAIL /u01/ogg/dirdat/rt        --对方路径
Dynamicresolution
CACHEMGR CACHESIZE 8G, CACHEDIRECTORY /u01/ogg/dirtmp
TABLE appadmin.*;

网络参考:

EXTRACT P_TEST
rmthost 192.168.180.14, mgrport 7809 --目的端的IP
rmttrail /ogg/dirdat/replt/rac/lt --trail文件传送过去的存放路径
dynamicresolution  --动态解析表名,为缺省参数,可不显示指定
passthru  --使用该参数告诉ogg同步的两端表结构一致
OBEY /ogg/install/dirprm/ogg_tables_RAC.txt --载入所要传送的table list,和上面的同一个
---

目标端

create tablespace TBS_OGG_DATA datafile  '/data/ORCL/ogg.dbf' SIZE 1g;
--drop tablespace TBS_OGG_DATA including contents and datafiles;
---创建用户:
CREATE USER GOLDENGATE IDENTIFIED BY oracle DEFAULT TABLESPACE  TBS_OGG_DATA ;
grant dba to GOLDENGATE;

目标端配置OGG的检查点
是为了让OGG网络中断、服务器宕机、掉电等在突发情况下也能正确断点续传,Oracle建议配置OGG的检查点队列

dblogin USERID goldengate, PASSWORD oracle

add checkpointtable GOLDENGATE.checkpoint_tab

GGSCI (ogg2) 75> edit param ./GLOBALS
checkpointtable goldengate.checkpoint_tab
GGSCI (ogg2) 7> add checkpointtable goldengate.checkpoint_tab
Successfully created checkpoint table goldengate.checkpoint_tab.

8.目标端配置replycat进程

GGSCI (ogg2) 8> 

delete rep1
add replicat rep1 exttrail /u01/ogg/dirdat/rt, checkpointtable goldengate.checkpoint_tab
REPLICAT added.

 
/* add replicat rep2 exttrail /u01/ogg/dirdat/rt, checkpointtable goldengate.checkpoint_tab
add replicat rep3 exttrail /u01/ogg/dirdat/rt, checkpointtable goldengate.checkpoint_tab
 */
exttrail :表示这个进程获取数据的来源是什么地方,是我们源端 rmttrail 所设置过的。

GGSCI (ogg2) 12> edit  param rep1

REPLICAT rep1   --注意 这里修改为复制进程名
--setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
USERID goldengate, PASSWORD oracle
REPERROR DEFAULT, ABEND
ASSUMETARGETDEFS
DISCARDFILE /u01/ogg/dirrpt/rep1.dsc, APPEND, MEGABYTES 100 --注意 这里修改为复制进程名
WILDCARDRESOLVE DYNAMIC
Dynamicresolution
MAP appadmin.tmp_zjw, TARGET appadmin.tmp_zjw;

复制进程表和target 表:

--不带csn  适用于该复制进程里面的表全部都是重新初始化的。使用aftercsn启动。
  select  
        'MAP  TELSER.' || T.TABLE_NAME || ','||
        'TARGET TELSER.' || T.TABLE_NAME || ';'
   from dba_TABLES t
   WHERE t.OWNER='TELSER';

开启replycat进程

select to_char(dbms_flashback.get_system_change_number) from dual;
--根据scn号启动复制进程。。复制进程就里面就不用全部协商fileter···csn>xxx 了
GGSCI (ogg2) 18> start replicat rep1,aftercsn 6208946

**启动成功之后。基本可以同步没问题
然后挂掉2节点。看看同步有没有问题。
如有有问题。在一节点重启
2节点数据库shutdown
抽取进程abbend挂掉**

操作过程:
2节点:进入ogg里面stop所有进程 mgr 抽取和pmp

stop  mgr
stop ext  
stop   pmp

然后1节点

./ggsci
start mgr
start ext 
start pmp

检查同步--正常没问题

成功之后。在其中一个节点单独安装一个节点的OGG。如果需要新用户添加一个新用户。
这里使用之前的ogg用户

RAC安装一个节点:

1.安装ogg到新一个新目录

2.配置进程

配置OGG管理进程  
命令:netstat -ntlp|grep  7809  查看该端口是否被占用
安装的时候使用端口号 7810
MGR进程:
PORT 7810
DYNAMICPORTLIST 7806-7808
AUTORESTART ER *,RETRIES 5,WAITMINUTES 3       --重试五次 每次3分钟间隔
PURGEOLDEXTRACTS  /u01/ogg2/dirdat/*,usecheckpoints, minkeepdays      */2---定期清理抽取出的过期文件  最小保留天数
LAGREPORTHOURS 1           ---保留尚未修改的所有行。1小时。 设置基本滞后阈值
LAGINFOMINUTES 30        ---保留尚未修改的所有行。30分钟 设置基本滞后阈值
LAGCRITICALMINUTES 45  ---以分钟为单位设置临界滞后阈值。
userid goldengate, password oracle

start mgr  启动管理进程

登录:
dblogin USERID goldengate, PASSWORD oracle

  • 注意:-----创建初级提取组ex1,源端是双节点RAC,此处设置参数THREADS 2 三个节点就设置为3
    3.添加抽取进程: 集群要加threads 2
add extract ext1,tranlog,threads 2 begin now       end;(仅取消begi用)
 
 ADD EXTTRAIL /u01/ogg2/dirdat/nt, EXTRACT ext1,megabytes 100
--路径为OGG家目录下面的dirdat  也就是存放抽取数据的路径

配置抽取进程

edit params ext1

EXTRACT ext1                                    
EXTTRAIL /u01/ogg2/dirdat/nt
discardfile  /u01/ogg2/ext1.dsc,append,megabytes 1                                 
SETENV (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
USERID goldengate, PASSWORD oracle
WILDCARDRESOLVE DYNAMIC
DYNAMICRESOLUTION
CACHEMGR CACHESIZE 8G, CACHEDIRECTORY /u01/ogg2/dirtmp 
TRANLOGOPTIONS ALTARCHIVELOGDEST +REDO
TRANLOGOPTIONS ALTARCHIVEDLOGFORMAT '%t_%s_%r.dbf'
TRANLOGOPTIONS DBLOGREADER

table appadmin.tmp_zjw1;

OBEY /ogg/install/dirprm/ogg_tables_RAC.txt --载入所要抽取的table list;里面内容为: table TEST.TEST;


4添加抽取的表
打开表级补充日志(需要以最小补充日志为前提)
dblogin USERID goldengate, PASSWORD oracle
add trandata APPADMIN.TMP_ZJW1 --不能加';' 分号
info trandata APPADMIN.TMP_ZJW1 --查看这个表有没有同步

info trandata WEBAPP.* 查看是否同步
add trandata WEBAPP. 添加表同步 --可以添加某个用户下所有的表
add trandata TELSER.* 添加表同步

5.添加传输进程:
add extract PMP,exttrailsource /u01/ogg2/dirdat/nt --注意:路径和抽取路径一样,本地的路径
EXTRACT added.
--指定传输进程的trail文件路径 指定传输到对方的trail文件的路径。
add rmttrail /u01/ogg/dirdat/tt,extract PMP,megabytes 100 --配置传输目标端文件路径
RMTTRAIL added.
--配置进程的参数文件

edit param PMP
EXTRACT PMP
PASSTHRU
USERID goldengate, PASSWORD oracle
RMTHOST 192.168.198.110, MGRPORT 7809          --可以写目标vip
RMTTRAIL /u01/ogg/dirdat/tt        --对方路径
Dynamicresolution
CACHEMGR CACHESIZE 8G, CACHEDIRECTORY /u01/ogg/dirtmp
TABLE appadmin.*;

dynamicresolution --动态解析表名,为缺省参数,可不显示指定
passthru --使用该参数告诉ogg同步的两端表结构一致
OBEY /ogg/install/dirprm/ogg_tables_RAC.txt --载入所要传送的table list,和上面的同一个


6.目标端配置
---目标端:---

  • dblogin USERID goldengate, PASSWORD oracle
    目标端配置replycat进程
  • GGSCI (ogg2) 8>
    6.1添加一个新的复制进程。来复制新的一个OGG
delete rep2
add replicat rep2 exttrail /u01/ogg/dirdat/tt, checkpointtable goldengate.checkpoint_tab

REPLICAT rep2 --注意 这里修改为复制进程名
--setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

USERID goldengate, PASSWORD oracle
REPERROR DEFAULT, ABEND
ASSUMETARGETDEFS
DISCARDFILE /u01/ogg/dirrpt/rep2.dsc, APPEND, MEGABYTES 100 --注意 这里修改为复制进程名
WILDCARDRESOLVE DYNAMIC
Dynamicresolution
MAP appadmin.tmp_zjw1, TARGET appadmin.tmp_zjw1;

7.同步表
复制进程表和target 表:
--不带csn 适用于该复制进程里面的表全部都是重新初始化的。使用aftercsn启动。

select  
        'MAP  TELSER.' || T.TABLE_NAME || ','||
        'TARGET TELSER.' || T.TABLE_NAME || ';'
   from dba_TABLES t
   WHERE t.OWNER='TELSER';

8.开启replycat进程 使用同步表当时的scn

  • select to_char(dbms_flashback.get_system_change_number) from dual;
    --根据scn号启动复制进程。。复制进程就里面就不用全部协商fileter···csn>xxx 了
  • GGSCI (ogg2) 18> start replicat rep2,aftercsn 6735449
最后修改:2022 年 04 月 02 日
如果觉得我的文章对你有用,请随意赞赏