一、搭建共享目录
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