基于OGG实现Oracle 11G双主同步

247 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第11天,点击查看活动详情

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10年DBA工作经验 一位上进心十足的【大数据领域博主】!😜😜😜 中国DBA联盟(ACDU)成员,目前从事DBA及程序编程 擅长主流数据Oracle、MySQL、PG 运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。 ✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞 ❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

@TOC

前言

最近客户应客户需求,基于OGG 21.3实现Oracle 11.2.0.4双主同步,分享给大家

📣 1.双主环境

1.OGG服务器
[root@localhost ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.4 (Maipo)


hostname修改
[root@localhost ~]# hostname
[root@localhost ~]# ogg21c

--关闭防火墙还有selinux
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

修改/etc/selinux/config文件中设置SELINUX=disabled ,然后重启服务器
查看状态为:/usr/sbin/sestatus

2.源库11GR2
ip:192.168.1.48

3.目标库11GR2
ip:192.168.1.58

📣 2.数据库配置

## 以下操作在源库及目标库均操作

1 开启数据库归档
[oracle@rhel64 ~]$ sqlplus / as sysdba
SQL> !lsnrctl start
SQL> alter system register;

System altered.

SQL> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Oldest online log sequence     15
Next log sequence to archive   17
Current log sequence           17

SYS@PROD>shutdown immediate;
SYS@PROD>startup mount;
SYS@PROD>alter database archivelog; 
SYS@PROD>alter database open; 
SYS@PROD>archive log list;

2 开启数据库级别附加日志
SQL> select name,supplemental_log_data_min , force_logging, log_mode from v$database;

NAME      SUPPLEME FOR LOG_MODE
--------- -------- --- ------------
MES       YES      YES ARCHIVELOG

开启方法如下:
alter database add supplemental log data;
alter database add supplemental log data (all) columns;

3 开启强制日志
alter database force logging;


4 参数为设置
SQL> show parameter enable_goldengate_replication;
SQL> alter system set enable_goldengate_replication=TRUE;
SQL> startup force


5 OGG管理用户
SQL> select username from dba_users where username='OGG';

CREATE USER ogg identified by jea;
grant SELECT ANY DICTIONARY to ogg;
GRANT EXECUTE ON SYS.DBMS_LOCK TO ogg;
grant select any transaction to ogg;
grant select any table to ogg;
grant flashback any table to ogg;
grant alter any table to ogg;

exec dbms_goldengate_auth.grant_admin_privilege('OGG','*',TRUE); 


6 业务用户,源库操作
CREATE USER it_mes identified by it_mes;
GRANT DBA to it_mes ;
grant SELECT ANY DICTIONARY to it_mes;
GRANT EXECUTE ON SYS.DBMS_LOCK TO it_mes;

7 启动监听
lsnrctl start
lsnrctl status

📣 3.创建身份证明

1.登陆OGG
[oracle@ogg21c ~]$ ggsci

Oracle GoldenGate Command Interpreter for Oracle
Version 21.3.0.0.0 OGGCORE_21.3.0.0.0_PLATFORMS_210728.1047_FBO
Oracle Linux 7, x64, 64bit (optimized), Oracle Database 21c and lower supported versions on Jul 29 2021 03:59:23
Operating system character set identified as UTF-8.

Copyright (C) 1995, 2021, Oracle and/or its affiliates. All rights reserved.

2.OGG初始化

GGSCI (ogg21c) 1> create subdirs

Creating subdirectories under current directory /ogg

Parameter file                 /ogg/dirprm: created.
Report file                    /ogg/dirrpt: created.
Checkpoint file                /ogg/dirchk: created.
Process status files           /ogg/dirpcs: created.
SQL script files               /ogg/dirsql: created.
Database definitions files     /ogg/dirdef: created.
Extract data files             /ogg/dirdat: created.
Temporary files                /ogg/dirtmp: created.
Credential store files         /ogg/dircrd: created.
Master encryption key wallet files /ogg/dirwlt: created.
Dump files                     /ogg/dirdmp: created.


3.身份证明注册
GGSCI (ogg21c) 2> add credentialstore
Credential store created.

GGSCI (ogg21c) 3> alter credentialstore add user ogg@192.168.1.48/MES, password jea alias ora11ga
Credential store altered.

GGSCI (ogg21c) 4> alter credentialstore add user ogg@192.168.1.58/MES, password jea alias ora11gb
Credential store altered.


GGSCI (ogg21c) 5> INFO CREDENTIALSTORE

Reading from credential store:

Default domain: OracleGoldenGate

  Alias: ora11ga
  Userid: ogg@192.168.1.48/MES

  Alias: ora11gb
  Userid: ogg@192.168.1.58/MES


5.测试登陆
GGSCI (ogg21c) 6> dblogin useridalias ora11ga
Successfully logged into database.

GGSCI (ogg21c as ogg@MES) 7> dblogin useridalias ora11gb
Successfully logged into database.

以上测试均OK

📣 4.源端添加SCHEMATRANDATA

GGSCI (ogg21c as ogg@MES) 8> dblogin useridalias ora11ga
Successfully logged into database.

GGSCI (ogg21c as ogg@MES) 9> ADD SCHEMATRANDATA IT_MES

GGSCI (ogg21c as ogg@MES) 10> INFO  SCHEMATRANDATA IT_MES
2022-10-12 23:04:21  INFO    OGG-06480  Schema level supplemental logging, excluding non-validated keys, is enabled on schema "IT_MES".
2022-10-12 23:04:21  INFO    OGG-01980  Schema level supplemental logging is enabled on schema "IT_MES" for all scheduling columns.

📣 5.源端和目标端创建脉动表

## 源端、目标端均操作
GGSCI (ogg21c as ogg@MES) 11> dblogin useridalias ora11ga
Successfully logged into database.

GGSCI (ogg21c as ogg@MES) 12> ADD HEARTBEATTABLE
2022-10-12 23:08:14  INFO    OGG-14101  Successfully added heartbeat table.

GGSCI (ogg21c as ogg@MES) 13> INFO HEARTBEATTABLE
HEARTBEAT table ogg.gg_heartbeat exists.
HEARTBEAT table ogg.gg_heartbeat_seed exists.
HEARTBEAT table ogg.gg_heartbeat_history exists.
HEARTBEAT table ogg.gg_heartbeat supplemental logging ENABLED.
HEARTBEAT table ogg.gg_heartbeat_seed supplemental logging ENABLED.
HEARTBEAT table ogg.gg_heartbeat_history partitioning DISABLED.
Frequency interval: 60 seconds.
Purge frequency interval: 1 days.
Retention time: 30 days.

📣 6.配置11G双向同步

✨ ora11ga到ora11gb的同步

1.创建extract进程
[oracle@ogg21c ogg]$ ggsci

ADD EXTTRAIL ./dirdat/ea EXTRACT exta
dblogin useridalias ora11ga
REGISTER EXTRACT exta DATABASE

GGSCI (ogg21c as ogg@MES) 5> edit params exta

EXTRACT exta
USERIDALIAS ora11ga
DDL INCLUDE MAPPED
DDLOPTIONS REPORT
TRANLOGOPTIONS EXCLUDETAG 99
EXTTRAIL ./dirdat/ea
TABLE IT_MES.*;

在这里插入图片描述

2.创建replicate进程
ADD REPLICAT repb INTEGRATED EXTTRAIL ./dirdat/ea

GGSCI (ogg21c as ogg@MES) 11> edit params repb

REPLICAT repb
USERIDALIAS ora11gb
DBOPTIONS ENABLE_INSTANTIATION_FILTERING
DDL INCLUDE MAPPED
DDLOPTIONS REPORT
DBOPTIONS SETTAG 99
MAP IT_MES.*, TARGET IT_MES.*;

注:配置完成后启动相关进程即可

在这里插入图片描述

✨ ora11gb到ora11ga的同步

1.创建extract进程
[oracle@ogg21c ~]$ ggsci

ADD EXTRACT extb INTEGRATED TRANLOG BEGIN NOW
ADD EXTTRAIL ./dirdat/eb EXTRACT extb
dblogin useridalias ora11gb
REGISTER EXTRACT extb DATABASE

GGSCI (ogg21c as ogg@MES) 5> edit params extb

EXTRACT extb
USERIDALIAS ora11gb
DDL INCLUDE MAPPED
DDLOPTIONS REPORT
TRANLOGOPTIONS EXCLUDETAG 99
EXTTRAIL ./dirdat/eb
TABLE IT_MES.*;

2.创建replicate进程
ADD REPLICAT repa INTEGRATED EXTTRAIL ./dirdat/eb

GGSCI (ogg21c as ogg@MES) 9> edit params repa

REPLICAT repa
USERIDALIAS ora11ga
DDL INCLUDE MAPPED
DDLOPTIONS REPORT
DBOPTIONS SETTAG 99
MAP IT_MES.*, TARGET IT_MES.*;

📣 7.双主数据对比

测试DDL和DML同步
在Oracle 11g 目标端操作,操作前启动进程repa、extb
SQL> create table IT_MES.TEST (id number primary key,name varchar2(255));
SQL> insert into IT_MES.TEST  select object_id,object_name from dba_objects where object_id<=20;
SQL> commit;

源端和目标端可以对比数据:
【源库】
SQL> select count(*) from IT_MES.TEST;
  COUNT(*)
----------
        19
【目标库】
SQL> select count(*) from IT_MES.TEST;
  COUNT(*)
----------
        19
        
可见,DDL和DML同步都已经完成!

在这里插入图片描述 在这里插入图片描述 功夫不负有心人,这样一套双主的11G双主实时同步就部署完成了

在这里插入图片描述