【该文章主要面向Oracle goldengate初学者的搭建配置,文中删去了不需要的多余参数,让初学者一目了然一学就会】
★适用场景
本文适用于单实例间的单向传输,集群配置和双向传输只需要做不多的改变即可,所以先学会本文打好基础
★实验环境
1。数据库情况
源端 :11gR2(11.2.0.4)
目标端:11gR2(11.2.0.4)
2.操作系统情况
源端 :RedHat 6.4 IP:1.1.1.1 已关闭防火墙
目标端:RedHat 6.4 IP:1.1.1.2 已关闭防火墙
★关闭数据库的recyclebin(两节点)
(10g必须,11g可选)同步DDL要求关闭10g中的回收站特性
SQL> alter system set recyclebin=off scope=spfile;
★创建系统OGG用户(两节点)
useradd -g oinstall -G dba oggos
mkdir -p /ogg
chmod 777 -R /ogg
chown -R oggos:oinstall /ogg
echo "oggos"|passwd --stdin oggos
★准备OGG环境变量(两节点)
vi /home/oggos/.bash_profile
export ORACLE_SID=ora11g
export ORACLE_BASE=/u01/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0
export GG_HOME=/ogg
export PATH
export PATH=$ORACLE_HOME/bin:$HOME/bin:$ORACLE_HOME/jdk/bin:$GG_HOME:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$GG_HOME
#AIX下为export LIBPATH=$ORACLE_HOME/lib:$GG_HOME
★配置日志模式(两节点/一节点)
startup force
shut immediate
startup mount
alter database archivelog;
alter database open;
alter database force logging;
alter database add supplemental log data;
》》查看配置结果:
SQL> select log_mode,supplemental_log_data_min,force_logging from v$database;
LOG_MODE SUPPLEME FOR
------------ -------- ---
ARCHIVELOG YES YES
★创建DB OGG用户(两节点)
su - oracle
sqlplus /nolog
conn / as sysdba;
create tablespace ogg datafile '/home/oracle/ogg.dbf' size 10m autoextend on next 10m;
create user ogg identified by ogg default tablespace ogg temporary tablespace TEMP;
grant dba to ogg;
或者常规模式
grant connect,resource to ogg;
grant create session,alter session to ogg;
grant select any dictionary,select any table to ogg;
grant alter any table to ogg;
grant flashback any table to ogg;
grant execute on dbms_flashback to ogg;
★OGG的运行环境脚本(两节点)
cd /ogg
sqlplus / as sysdba
@marker_setup.sql
@ddl_setup.sql
@role_setup.sql
grant ggs_ggsuser_role to ogg;
@ddl_enable.sql
温馨提示:全部输入DB用户名“ogg”即可
★安装OGG软件(两节点)
》》高版本
./runInstaller
》》低版本
GGSCI > create subdirs
温馨提示:这个功能适用于低版本ogg,新版ogg提供图形化安装
★源端配置
① MGR配置
edit params mgr
port 7809
dynamicportlist 7800-7899
autostart extract *
autorestart extract *,retries 5,waitminutes 2,resetminutes 60
userid ogg,password ogg
purgeoldextracts /ogg/dirdat/*,usecheckpoints,minkeepdays 7
purgeddlhistory minkeepdays 11,maxkeepdays 14
purgemarkerhistory minkeepdays 11, maxkeepdays 14
lagreporthours 1
laginfominutes 30
lagcriticalminutes 45
》》启动mgr进程
GGSCI > start mgr
》》配置全局配置文件
edit params ./GLOBALS
GGSCHEMA ogg
CHECKPOINTTABLE ogg.checkpoint
exit
》》添加checkpoint表
[ogg@ogg1 ogg]$ ./oggci
GGSCI > dblogin userid ogg,password ogg
GGSCI > add checkpointtable ogg.checkpoint
Successfully created checkpoint table ogg.checkpoint.
切换到数据库下,可以看到checkpoint表
SQL> conn ogg/ogg
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
CHECKPOINT TABLE
CHECKPOINT_LOX TABLE
② Extract配置
GGSCI > edit params ex_scott
extract ex_scott
setenv (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
setenv (ORACLE_SID=orcl)
userid ogg, password ogg
exttrail /ogg/dirdat/es
discardfile /ogg/dirrpt/ex_scott.dsc,append,megabytes 1024
gettruncates
dynamicresolution
ddl include all
table scott.*;
》》添加抽取进程
GGSCI > add extract ex_scott,tranlog,begin now
》》添加抽取进程日志文件
GGSCI > add exttrail /ogg/dirdat/es,extract ex_scott,megabytes 200
》》在scott的所有表上添加附加日志
GGSCI > dblogin userid ogg,password ogg
GGSCI > add trandata scott.*
》》启动所有服务
GGSCI >start ex_scott
》》查看所有服务
GGSCI > info all
③ Pump配置
GGSCI >edit params pu_scott
extract pu_scott
dynamicresolution
passthru
rmthost 1.1.1.2,mgrport 7809,compress
rmttrail /ogg/dirdat/ps
table scott.*;
》》添加pump源进程
GGSCI > add extract pu_scott,exttrailsource /ogg/dirdat/es
》》添加pump目标进程
GGSCI > add rmttrail /ogg/dirdat/ps,extract pu_scott,megabytes 200
》》启动pump进程
GGSCI > start extract pu_scott
★目标端配置
①MGR配置
GGSCI >edit param mgr
port 7809
dynamicportlist 7800-7899
autostart er *
autorestart er *,retries 5,waitminutes 2,resetminutes 60
userid ogg,password ogg
purgeoldextracts /ogg/dirdat/*,usecheckpoints,minkeepdays 7
purgeddlhistory minkeepdays 11,maxkeepdays 14
purgemarkerhistory minkeepdays 11, maxkeepdays 14
lagreporthours 1
laginfominutes 30
lagcriticalminutes 45
》》启动mgr
GGSCI > start mgr
》》配置全局配置文件
edit params ./GLOBALS
ggschema ogg
checkpointtable ogg.checkpoint
exit
》》添加checkpoint表
[ogg@ogg2 ogg]$ ./oggci
GGSCI > dblogin userid ogg,password ogg
Successfully logged into database.
GGSCI > add checkpointtable ogg.checkpoint
Successfully created checkpoint table ogg.checkpoint.
切换到数据库下,可以看到checkpoint表
SQL> conn ogg/ogg
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
CHECKPOINT TABLE
CHECKPOINT_LOX TABLE
》》对表应用额外日志
GGSCI > dblogin userid ogg,password ogg
GGSCI > add trandata scott.*
② Replicat配置
GGSCI >edit params re_scott
replicat re_scott
userid ogg, password ogg
assumetargetdefs
gettruncates
reperror default,abend
ddl include mapped
ddlerror default abend
discardfile /ogg/dirrpt/re_scott.dsc,append,megabytes 1024
dynamicresolution
allownoopupdates
map scott.*,target scott.*;
》》添加复制进程
GGSCI > add replicat re_scott,exttrail /ogg/dirdat/ps,checkpointtable ogg.checkpoint
★数据导入导出
》》查看此时源端的scn
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
402721
》》查看此时测试表的数据
SQL> select sal from scott.emp;
》》源端数据导出
exp system/oracle file=scott.dump log=scott_exp.log owner=scott flashback_scn=402721
》》Dump文件传输
scp /home/oracle/dump/scott.dump 1.1.1.2:/home/oracle/dump
》》目标端数据导入
imp system/oracle file=scott.dump log=scott_imp.log fromuser=scott touser=scott
》》启动Replicate进程(注意带SCN值)
GGSCI > start replicat test_r,aftercsn 402721
》》查看OGG进程状态(两节点)
GGSCI > info all
》》修改源端测试表数据
SQL> update scott.emp set sal=sal+1;
SQL> commit;
》》查看目标端测试表数据变化
SQL> select sal from scott.emp;
搭建完成
《OVER》