GoldenGate安装、配置、实例化

63 篇文章 6 订阅
一、环境
两台Oracle VM VirtualBox虚拟机
host:master1、master2
IP:192.168.1.1、192.168.1.2
OS:Linux 2.6.32 
DB:Oracle 11.2.0.3,启用归档
OGG:ogg112101_fbo_ggs_Linux_x64_ora11g_64bit 2.2.3

二、安装OGG
在master1、master2两台上执行以下步骤:
1. 解压到OGG安装目录
cd /home/oracle/ogg
unzip ogg112101_fbo_ggs_Linux_x64_ora11g_64bit

2. 在OGG安装目录执行ggsci,在GGSCI下执行

CREATE SUBDIRS

3. 环境变量LD_LIBRARY_PATH加入OGG的安装目录

LD_LIBRARY_PATH=/home/oracle/ogg:$LD_LIBRARY_PATH export LD_LIBRARY_PATH

三、配置OGG支持sequence和DDL
1. 配置支持Oracle sequences,除特别指出的外,均在master1、master2两台上执行以下步骤:
在SQLPLUS里用SYSDBA执行以下命令,建立ogg用户并授权
CREATE USER ogg IDENTIFIED BY 123456;
GRANT CONNECT,RESOURCE,DBA TO ogg;
在OGG安装目录执行ggsci,在GGSCI下执行
EDIT PARAMS ./GLOBALS
# 输入以下内容后,保存并关闭文件
GGSCHEMA ogg
在SQLPLUS里用SYSDBA执行OGG安装目录下的sequence.sql脚本
@sequence.sql
提示用户信息时输入ogg
在SQLPLUS里用SYSDBA执行以下命令,其中ogg是第1步建立的ogg用户,wxy是要复制的schema
在master1上执行
GRANT EXECUTE on ogg.updateSequence TO wxy;
在master2上执行
GRANT EXECUTE on ogg.replicateSequence TO wxy;
在master1上执行
alter table sys.seq$ add supplemental log data (primary key) columns;

2. 配置DDL支持
在SQLPLUS里用SYSDBA用户执行以下命令,给ogg用户授予utl_file包的执行权限
GRANT EXECUTE ON utl_file TO ogg;
在SQLPLUS里用SYSDBA执行OGG安装目录下的marker_setup.sql脚本
@marker_setup.sql
提示用户信息时输入ogg
在SQLPLUS里用SYSDBA执行OGG安装目录下的ddl_setup.sql脚本
@ddl_setup.sql
提示用户信息时输入ogg
在SQLPLUS里用SYSDBA执行OGG安装目录下的role_setup.sql脚本
@role_setup.sql
提示用户信息时输入ogg
在SQLPLUS里用SYSDBA执行以下命令,其中wxy是要复制的schema
GRANT GGS_GGSUSER_ROLE TO wxy;
在SQLPLUS里用SYSDBA执行OGG安装目录下的ddl_enable.sql脚本
@ddl_enable.sql
在SQLPLUS里用SYSDBA执行OGG安装目录下的ddl_pin.sql脚本
@ddl_pin ogg

四、在源和目标库上配置OGG
1. 建立管理参数文件,在OGG安装目录执行ggsci,在GGSCI下执行
EDIT PARAMS MGR
# 输入以下内容后,保存并关闭文件
PORT 7809
DYNAMICPORTLIST 7810-7820, 7830
AUTOSTART ER t*
AUTORESTART ER t*, RETRIES 4, WAITMINUTES 4
STARTUPVALIDATIONDELAY 5
PURGEOLDEXTRACTS /home/oracle/ogg/dirdat/tt*, USECHECKPOINTS, MINKEEPHOURS 2
这步在master1、master2两台上执行,两个机器的MGR相同配置

2. 配置主抽取进程,在master1的OGG安装目录执行ggsci,在GGSCI下执行 
EDIT PARAMS pri_ext
# 输入以下内容后,保存并关闭文件
EXTRACT pri_ext
USERID ogg, PASSWORD 123456
EXTTRAIL /home/oracle/ogg/dirdat/lt
DDL
SEQUENCE wxy.*;
TABLE wxy.*;

FLUSHCSECS 10
EOFDELAYCSECS 10

3. 配置数据泵进程,在master1的OGG安装目录执行ggsci,在GGSCI下执行 
EDIT PARAMS pum_ext
# 输入以下内容后,保存并关闭文件
EXTRACT pum_ext
USERID ogg, PASSWORD 123456
RMTHOST 192.168.1.2, MGRPORT 7809
RMTTRAIL /home/oracle/ogg/dirdat/rt
SEQUENCE wxy.*;
TABLE wxy.*;

FLUSHCSECS 10
EOFDELAYCSECS 10

4. 建立检查点,在master2的OGG安装目录执行ggsci,在GGSCI下执行 
DBLOGIN USERID ogg, PASSWORD 123456
ADD CHECKPOINTTABLE ogg.cpt
EDIT PARAMS ./GLOBALS
# 添加以下内容后,保存并关闭文件
CHECKPOINTTABLE ogg.cpt

5. 配置复制进程,在master2的OGG安装目录执行ggsci,在GGSCI下执行 
EDIT PARAMS rep
# 输入以下内容后,保存并关闭文件
REPLICAT rep
USERID ogg, PASSWORD 123456
DBOPTIONS SUPPRESSTRIGGERS, DEFERREFCONST
DDL
ASSUMETARGETDEFS
DISCARDFILE /home/oracle/ogg/disc
MAP wxy.*, TARGET wxy.*;

EOFDELAYCSECS 10

五、配置Oracle数据库
在master1、master2两台上,在SQLPLUS里用SYSDBA执行以下命令在库级添加补充日志
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
ALTER SYSTEM SWITCH LOGFILE;
SELECT SUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE;
-- 输出应该为YES 或 IMPLICIT
exec dbms_goldengate_auth.grant_admin_privilege('WXY');

六、使用To direct bulk load to SQL*Loader方式实例化并开始OGG复制
1. 准备测试的初始化结构和数据,用wxy用户执行下面的SQL语句(这里的wxy用户已经授予了DBA权限)
-- master 1:
create table t1 (a int primary key);
CREATE SEQUENCE WXY.SEQ1 START WITH 0 MAXVALUE 99999999999 MINVALUE 0 NOCYCLE NOCACHE NOORDER;
insert into t1 select seq1.nextval from dual;
insert into t1 select seq1.nextval from dual;
insert into t1 select seq1.nextval from dual;
insert into t1 select seq1.nextval from dual;
commit;

-- master 2:
create table t1 (a int primary key);
CREATE SEQUENCE WXY.SEQ1 START WITH 0 MAXVALUE 99999999999 MINVALUE 0 NOCYCLE NOCACHE NOORDER;

2. 启动OGG管理进程,在master 1、master 2的OGG安装目录执行ggsci,在GGSCI下执行
START MANAGER

3. 添加初始抽取进程,在master 1的OGG安装目录执行ggsci,在GGSCI下执行
ADD EXTRACT init_ext, SOURCEISTABLE
EDIT PARAMS init_ext
# 输入以下内容后,保存并关闭文件
EXTRACT init_ext
USERID ogg, PASSWORD 123456
RMTHOST 192.168.1.2, MGRPORT 7809
RMTTASK replicat, GROUP init_rep
TABLE wxy.*;

4. 添加初始复制进程,在master 2的OGG安装目录执行ggsci,在GGSCI下执行
ADD REPLICAT init_rep, SPECIALRUN
EDIT PARAMS init_rep
# 输入以下内容后,保存并关闭文件
REPLICAT init_rep
USERID ogg, PASSWORD 123456
BULKLOAD
ASSUMETARGETDEFS
MAP wxy.*, TARGET wxy.*;

5. 注册初始抽取进程到数据库,在master 1的OGG安装目录执行ggsci,在GGSCI下执行
DBLOGIN USERID ogg, PASSWORD 123456
REGISTER EXTRACT init_ext DATABASE

6. 在master 1的数据库上配置归档日志删除策略
rman target /
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY

7. 配置抽取进程,在master 1的OGG安装目录执行ggsci,在GGSCI下执行
# 添加主抽取进程
ADD EXTRACT pri_ext, TRANLOG, BEGIN NOW
# 添加本地trail文件
ADD EXTTRAIL /home/oracle/ogg/dirdat/lt, EXTRACT pri_ext
# 添加数据泵进程
ADD EXTRACT pum_ext, EXTTRAILSOURCE /home/oracle/ogg/dirdat/lt
# 添加远程trail文件
ADD RMTTRAIL /home/oracle/ogg/dirdat/rt, EXTRACT pum_ext

8. 配置复制进程,在master 2的OGG安装目录执行ggsci,在GGSCI下执行
# 添加复制进程
ADD REPLICAT rep, EXTTRAIL /home/oracle/ogg/dirdat/rt

9. 启动抽取,在master 1的OGG安装目录执行ggsci,在GGSCI下执行
START EXTRACT pri_ext
START EXTRACT pum_ext
DBLOGIN USERID ogg, PASSWORD 123456
FLUSH SEQUENCE wxy.seq1
START EXTRACT init_ext

10. 启动复制,在master 2的OGG安装目录执行ggsci,在GGSCI下执行
VIEW REPORT init_ext
EDIT PARAMS rep
# 输入以下内容后,保存并关闭文件
HANDLECOLLISIONS
# 启动复制进程
START REPLICAT rep
INFO REPLICAT rep
# 初始化复制结束后,去掉HANDLECOLLISIONS
SEND REPLICAT rep, NOHANDLECOLLISIONS
EDIT PARAMS rep
# 删除HANDLECOLLISIONS,保存并关闭文件

七、测试
先查看一下master 1、master 2库里的数据,确认初始化结果
-- 启动复制前master 2上没有数据,初始化结束后两个机器上的以下查询结果应该一致
select * from t1;
select * from dba_sequences where sequence_name = 'SEQ2';

-- 进一步测试,在master 1的库里,用wxy用户执行创建用户、创建表,创建序列,查询序列,插入、修改、删除表数据,truncate table、drop table等一系列DML、DDL操作,查询master 2的库,确认复制是否正确。
-- master 1:
create table t2 (a int);
insert into t2 values (1);
commit;
select * from t2;

-- master 2:
select * from t2;

-- master 1:
insert into t2 values (2);
commit;
select * from t2;

-- master 2:
select * from t2;

-- master 1:
delete from t2 where a=1;
commit;
select * from t2;

-- master 2:
select * from t2;

-- master 1:
update t2 set a=10;
commit;
select * from t2;

-- master 2:
select * from t2;

-- master 1:
truncate table t2;

-- master 2:
select * from t2;

-- master 1:
drop table t2 purge;

-- master 2:
select * from t2;

-- master 1:
create user u1 identified by 123456;
grant connect to u1;

-- master 2:
conn u1
select * from user_role_privs;

-- master 1:
CREATE SEQUENCE WXY.SEQ2 START WITH 0 MAXVALUE 99999999999 MINVALUE 0 NOCYCLE NOCACHE NOORDER;
select seq2.nextval from dual;
select seq2.nextval from dual;
select seq2.nextval from dual;
select * from dba_sequences where sequence_name = 'SEQ2';

-- master 2:
select * from dba_sequences where sequence_name = 'SEQ2';


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值