GoldenGate安装、配置、实例化

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wzy0623/article/details/53895301

一、环境 两台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';

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券