暂无图片
暂无图片
5
暂无图片
暂无图片
暂无图片

通过OGG技术实现Oracle数据库容灾需求的实施方案

原创 zwtian 2025-05-30
696

项目背景

背景

本方案是搭建部署OGG实施方案。

版本兼容性

部署需求

主机名

源库(生产库)

目标库

操作系统

RedHat 7.6

RedHa 7.6

内存

预留至少4G内存给OGG使用

预留至少4G内存给OGG使用

CPU

IP地址

200.200.200.120

200.200.200.121

数据库版本

Oracle 11.2.0.3

Oracle 11.2.0.3

实例名

xxx

xxxogg

OGG版本

12.2.0.1

12.2.0.1

磁盘

为OGG软件及相关队列文件存储划分独立的磁盘空间,大小根据数据库日志量来估算(事务日志大小*日志每天切换次数*保留天数)

部署架构

采用本地部署架构

部署方式

采用经典模式

前期准备工作

检查生产库是否开启归档

archive log list;

生产库开启强制日志

使用OGG需要在源库上开启强制日志模式,操作如下:

select NAME,FORCE_LOGGING from v$database;

alter database force logging;

alter system switch logfile;

生产库开启附加日志

使用OGG需要在源库上开启附加日志模式,操作如下:

select SUPPLEMENTAL_LOG_DATA_MIN from v$database;

alter database add supplemental log data;

创建OGG用户

在源库及目标库上建ogg表空间及ogg用户,并对用户授权:

create tablespace oggtbs datafile '/oracle/oradata/xxx/oggtbs01.dbf' size 5g autoextend off;

create user ogg identified by "OracleGoldengate";

alter user ogg default tablespace oggtbs ;

grant dba to ogg;

实施步骤

源库安装OGG

上传软件包

使用sftp上传122011_ fbo_ggs_Linux_x64_shiphome.zip到两台数据库服务器的/ogg/soft上面,并解压。

安装OGG软件

使用oracle用户到/ogg/soft/fbo_ggs_Linux_x64_shiphome/Disk1目录下执行./runInstaller安装OGG。

点击next:

OGG软件安装到 /ogg/app目录下,点击next:

点击Install

点击Close完成安装。

目标库(200.200.200.121)安装方式与源库一样。

配置源端OGG

源端配置检查点与心跳表

EDIT PARAMS ./GLOBALS

CHECKPOINTTABLE ogg.checkpoint

ggschema ogg

dblogin userid ogg,password OracleGoldengate

ADD CHECKPOINTTABLE ogg.checkpoint

ADD HEARTBEATTABLE

源端添加表级补充日志

add SCHEMATRANDATA tzw01

add SCHEMATRANDATA tzw02

info SCHEMATRANDATA tzw01

info SCHEMATRANDATA tzw02

生成加密密码串

encrypt password OracleGoldengate,ENCRYPTKEY default

配置源端mgr进程

进入安装目录cd /ogg/app,执行./ggsci:

edit params mgr

PORT 7809

DYNAMICPORTLIST 7810-7820

PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS, MINKEEPDAYS 3

PURGEDDLHISTORY MINKEEPDAYS 3, MAXKEEPDAYS 7

PURGEMARKERHISTORY MINKEEPDAYS 3, MAXKEEPDAYS 7

LAGREPORTHOURS 1

LAGINFOMINUTES 30

LAGCRITICALMINUTES 45

ACCESSRULE, PROG *, IPADDR 200.200.200.*, ALLOW

配置源端抽取进程

cd /ogg/app

mkdir -p ./dirdat/etzw01

mkdir -p ./dirrpt/etzw01

mkdir -p ./dirdat/etzw02

mkdir -p ./dirrpt/etzw02

--抽取进程1采用密码明文方式

edit params etzw01

extract etzw01

SETENV(ORACLE_SID="xxx")

SETENV (ORACLE_HOME="/oracle/app/oracle/product/11.2.0/db_1")

SETENV(NLS_LANG=AMERICAN_AMERICA.AL32UTF8)

userid ogg,password "OracleGoldengate"

FETCHOPTIONS NOUSESNAPSHOT

REPORTCOUNT EVERY 1 MINUTES,RATE

WARNLONGTRANS 1h,CHECKINTERVAL 5m

EXTTRAIL ./dirdat/etzw01/ex

DISCARDFILE ./dirrpt/etzw01/etzw01.dsc, APPEND,MEGABYTES 4000

table tzw01.tzw_yw01;

table tzw01.tzw_yw02;

table tzw01.tzw_yw03;

table tzw01.tzw_tab01;

--抽取进程2采用密码加密方式

edit params etzw02

EXTRACT etzw02

SETENV (ORACLE HOME="/oracle/app/oracle/product/11.2.0/db_1")

SETENV (ORACLE SID="xxx")

SETENV (NLS LANG=AMERICAN AMERICA.AL32UTF8)

userid ogg,password AACAAAAAAAAAAAQAPEGFYGFILCVHGAIBBESIDAQCXEUHKJND,encryptkey default

DBOPTIONS ALLOWUNUSEDCOLUMN

FETCHOPTIONS NOUSESNAPSHOT

WARNLONGTRANS 2h,CHECKINTERVAL 5m

DISCARDFILE ./dirrpt/etzw02/etzw02.dsc,APPEND,MEGABYTES 1024

DISCARDROLLOVER AT 02:30

REPORTCOUNT EVERY 1 MINUTES, RATE

EXTTRAIL ./dirdat/etzw02/ex

TABLE tzw02.*;

添加抽取进程

add extract etzw01 ,tranlog,begin now

add exttrail ./dirdat/etzw01/ex ,extract etzw01 MEGABYTES 100

add extract etzw02,tranlog,begin now

add exttrail ./dirdat/etzw02/ex, extract etzw02, MEGABYTES 1024

注册抽取进程

dblogin userid ogg,password "OracleGoldengate";

register extract etzw02 database

register extract etzw01 database

配置源端投递进程

cd /ogg/app

mkdir -p ./dirdat/ptzw01

mkdir -p ./dirrpt/ptzw01

mkdir -p ./dirdat/ptzw02

mkdir -p ./dirrpt/ptzw02

--投递进程1采用密码明文方式

edit params ptzw01

EXTRACT ptzw01

RMTHOST 200.200.200.121, MGRPORT 7809, compress

PASSTHRU

RMTTRAIL ./dirdat/rtzw01/re

DYNAMICRESOLUTION

table tzw01.tzw_yw01;

table tzw01.tzw_yw02;

table tzw01.tzw_yw03;

table tzw01.tzw_tab01;

--投递进程2采用密码加密方式

edit params ptzw02

EXTRACT ptzw02

SETENV (NLS_LANG="AMERICAN_AMERICA.AL32UTF8")

userid ogg,password AACAAAAAAAAAAAQAPEGFYGFILCVHGAIBBESIDAQCXEUHKJND,encryptkey default

PASSTHRU

RMTHOST 200.200.200.121, MGRPORT 7809

RMTTRAIL ./dirdat/rtzw02/re

DISCARDFILE ./dirrpt/ptzw02/ptzw02.dsc, APPEND, MEGABYTES 1024

DISCARDROLLOVER AT 02:30

TABLE tzw02.*;

添加投递进程

add extract ptzw01 ,exttrailsource ./dirdat/etzw01/ex

add rmttrail ./dirdat/rtzw01/re ,extract ptzw01

add extract ptzw02, exttrailsource ./dirdat/etzw02/ex

add rmttrail ./dirdat/rtzw02/re,EXTRACT ptzw02,MEGABYTES 1024

配置目标端OGG

配置目标端mgr进程

进入安装目录cd /ogg/app,执行./ggsci:

edit params mgr

PORT 7809

DYNAMICPORTLIST 7810-7820

PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS, MINKEEPDAYS 3

PURGEDDLHISTORY MINKEEPDAYS 3, MAXKEEPDAYS 7

PURGEMARKERHISTORY MINKEEPDAYS 3, MAXKEEPDAYS 7

LAGREPORTHOURS 1

LAGINFOMINUTES 30

LAGCRITICALMINUTES 45

ACCESSRULE, PROG *, IPADDR 200.200.200.*, ALLOW

配置目标端复制进程

cd /ogg/app

mkdir -p ./dirdat/rtzw01

mkdir -p ./dirrpt/rtzw01

mkdir -p ./dirdat/rtzw02

mkdir -p ./dirrpt/rtzw02

--复制进程1采用密码明文方式

edit params rtzw01

REPLICAT rtzw01

SETENV(ORACLE_SID="xxxogg")

SETENV (ORACLE_HOME="/oracle/app/oracle/product/11.2.0/db_1")

setenv (NLS_LANG="AMERICAN_AMERICA.AL32UTF8")

userid ogg,password "OracleGoldengate";

DISCARDFILE ./dirrpt/rtzw01/rtzw01.dsc, APPEND, MEGABYTES 1000

REPORT AT 01:59

REPORTCOUNT EVERY 30 MINUTES, RATE

REPERROR DEFAULT, ABEND

GETTRUNCATES

ALLOWNOOPUPDATES

HANDLECOLLISIONS

assumetargetdefs

map tzw01.tzw_yw01,target tzw01.tzw_yw01;

map tzw01.tzw_yw02,target tzw01.tzw_yw02;

map tzw01.tzw_yw03,target tzw01.tzw_yw03;

map tzw01.tzw_tab01,target tzw01.tzw_tab01;

--复制进程2采用密码加密方式

edit params rtzw02

REPLICAT rtzw02

SETENV(ORACLE_SID="xxxogg")

SETENV (ORACLE_HOME="/oracle/app/oracle/product/11.2.0/db_1")

setenv (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)

userid ogg,password AACAAAAAAAAAAAQAPEGFYGFILCVHGAIBBESIDAQCXEUHKJND,encryptkey default

DISCARDFILE ./dirrpt/rtzw02/rtzw02.dsc, APPEND, MEGABYTES 1024

DISCARDROLLOVER AT 02:30

REPERROR DEFAULT, ABEND

REPORTCOUNT EVERY 30 MINUTES, RATE

DBOPTIONS ENABLE_INSTANTIATION_FILTERING

ALLOWNOOPUPDATES

assumetargetdefs

GETTRUNCATES

MAP tzw02.*, TARGET tzw02.*;

添加目标端复制进程

dblogin userid ogg,password "OracleGoldengate";

ADD CHECKPOINTTABLE ogg.checkpoint

ADD HEARTBEATTABLE

add replicat rtzw01,exttrail ./dirdat/rtzw01/re ,checkpointtable ogg.checkpoint

add replicat rtzw02 exttrail ./dirdat/rtzw02/re,checkpointtable ogg.checkpoint

初始化数据

启动源库的抽取和投递进程

启动抽取进程:

start etzw01

start etzw02

Info all

启动投递进程:

start ptzw01

start ptzw02

Info all

查看最老事务时间

select min(START_TIME) from v$transaction;

select current_scn from v$database ;

导出基量数据

expdp \'/as sysdba\' directory=oracle_base dumpfile=xxx_base.dmp logfile =exp_emp.log schemas=tzw01,tzw02 FLASHBACK_SCN=312784

传输基量数据

加载基量数据

impdp \'/as sysdba\' directory= oracle_base dumpfile= xxx_base.dmp logfile =imp_emp.log

启动目标端复制进程

--源端

--在启动目标端复制进程前,需要先检查源端的抽取进程和投递进程是否启动

info all

--目标端再启动复制进程

info all

start REPLICAT rtzw01,aftercsn 312784

start REPLICAT rtzw02,aftercsn 312784

查看OGG状态

源端

ggsci

info all

info etzw01

info etzw02

info ptzw01

info ptzw02

目标端

info all

info rtzw01

info rtzw02

至此OGG同步搭建完成。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论