【ORACLE】OGG-命令行搭建一个简单环境(O2O)

 环境描述

主机角色数据库版本操作系统数据库名称管理员名称口令
192.168.0.201源库oracle19cOracle Linux7.9

PROD

sys/Cloud_4u
192.168.0.111目标库oracle19cOracle Linux7.9PRODsys/Cloud_4u

ogg版本:213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip 

部署架构简介

最新的OGG架构目前有经典模式架构和微服务模式架构。本次部署采用的是经典模式,且为了理解它整个的运行机制和模式,采用的是非图形化模式部署(21版已经提供了一个web界面的管理图形界面,但是实际操作下来,对于我这样的新手,排查问题是个比较困难的事情,也不清楚其内在联系)。经典模式下,OGG和数据库部署在同一个节点,所以需要在每台数据库上分别配置OGG和数据库。作为入门,这里采用的是单向数据同步的架构,即单一源同步到单一目标,目标不同步到源的架构。OGG还支持多种不同的架构,如双向同步,一源多目标登复杂的场景。 

参考文献

Oracle GoldenGate 12c Installation And Configuration -1 - IT Tutorial

Oracle GoldenGate 12c Installation And Configuration -2 - IT Tutorial

Oracle GoldenGate 12c Installation And Configuration -3 - IT Tutorial

 Oracle Goldengate Step by Step Replication -1 - IT Tutorial

 Oracle Goldengate Step by Step Replication -2 - IT Tutorial

操作流程

  1.  环境准备:创建虚拟机;安装操作系统;服务器网络设置;安装数据库软件。
  2. OGG软件安装(第一步,第二步可以先在一台机器上操作,目标服务器直接克隆源服务器,再稍作修改即可)
  3. 在源库和目标库上各自创建ogg对象(创建完全相同的对象)
  4. 源库上的OGG管理服务和提取服务,pump服务配置
  5. 目标库上的OGG管理服务和复制服务配置
  6. 验证数据同步

环境准备:

参考文档:https://blog.csdn.net/bendywu/article/details/125180073?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22125180073%22%2C%22source%22%3A%22bendywu%22%7D&ctrtid=7E9mEhttps://blog.csdn.net/bendywu/article/details/125180073?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22125180073%22%2C%22source%22%3A%22bendywu%22%7D&ctrtid=7E9mE

OGG安装(源和目标,用oracle用户操作)然后执行:

第一步        创建安装目录(/u01/app/ogg21),解压安装软件

# OGG安装目录
mkdir /u01/app/ogg21
# 解压安装包到/home/oracle/
unzip 213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip -d /home/oracle/
cd /home/oracle/fbo_ggs_Linux_x64_Oracle_shiphome/Disk1/response
# 备份后修改静默安装属性文件
cp oggcore.rsp oggcore-setup.rsp
vim oggcore-setup.rsp
# 修改下面几项,例如:
INSTALL_OPTION=ora21c
SOFTWARE_LOCATION=/u01/app/ogg21
START_MANAGER=false
# 保存退出(:wq)

第二步        执行静默安装

cd /home/oracle/fbo_ggs_Linux_x64_Oracle_shiphome/Disk1
./runInstaller -silent -responseFile /home/oracle/fbo_ggs_Linux_x64_Oracle_shiphome/Disk1/response/oggcore-setup.rsp

 提示:OGG软件将安装在/u01/app/ogg21目录下

第三步        配置环境变量

# 长期生效可以编辑~/.bashrc
vi ~/.bashrc
export OGG_HOME=/u01/app/ogg21
export LD_LIBRARY_PATH=/u01/app/ogg21:$LD_LIBRARY_PATH
export PATH=/u01/app/ogg21:$PATH
# 数据库环境变量,如果安装数据库的时候已经配置了,这里可以省去
export ORACLE_SID=PROD
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
# 重新加载环境变量 
source ~/.bashrc

 第四步        验证

# oracle用户
cd $OGG_HOME
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
操作系统字符集标识为 UTF-8。

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

创建OGG对象(源库+目标库分别执行)

第一步        OGG增量同步需要Oracle端开启归档日志和补充日志:

su - oracle
# 创建归档目录(可选)
# mkdir /home/oracle/ora_PROD_archive 
sqlplus / as sysdba
# 查看归档是否开启
archieve log list
# Automatic archival	       Enabled  是为开启,否则执行下面的开启归档脚本

-- 开启补充日志
SHUTDOWN IMMEDIATE
STARTUP MOUNT
-- 开启归档(可选)
-- ALTER SYSTEM SET log_archive_dest='/home/oracle/ora_PROD_archive';
-- ALTER DATABASE ARCHIVELOG;
ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION=TRUE;
ALTER DATABASE FORCE LOGGING;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
ALTER DATABASE OPEN;

第二步        创建OGG专用账户和表空间,并授权

--获取数据文件目录(可选)
--select name from v$datafile;

--1. 创建ogg用户专用表空间(ggts),主要要打开闪回功能
CREATE TABLESPACE ggts DATAFILE '/u01/app/oracle/oradata/PROD/ggts01.dbf' SIZE 10M AUTOEXTEND ON NEXT 1024M MAXSIZE UNLIMITED
LOGGING
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO
FLASHBACK ON;
--2. 创建ogg用户(gguser)
CREATE USER gguser IDENTIFIED BY Cloud_4u DEFAULT TABLESPACE ggts
TEMPORARY TABLESPACE TEMP
PROFILE DEFAULT
ACCOUNT UNLOCK;
--3. 给gguser授权 
GRANT RESOURCE,CONNECT ,SELECT_CATALOG_ROLE ,dba TO gguser;
ALTER USER gguser DEFAULT ROLE ALL;
GRANT CREATE SESSION TO gguser;
GRANT ALTER SESSION TO gguser;
GRANT SELECT ANY TRANSACTION TO gguser;
GRANT SELECT ANY DICTIONARY TO gguser;
GRANT FLASHBACK ANY TABLE TO gguser;
GRANT SELECT ANY TABLE TO gguser;
GRANT UNLIMITED TABLESPACE TO gguser;
-- ggts表空间配额不限制
ALTER USER gguser QUOTA UNLIMITED ON ggts;
-- 闪回对象操作权限 
GRANT EXECUTE ON SYS.DBMS_FLASHBACK TO gguser;
GRANT FLASHBACK ON SYS.USER_SOURCE TO gguser;
--4. ogg管理员权限
exec dbms_goldengate_auth.grant_admin_privilege('gguser');

在所有节点上完成上述脚本操作后,ogg所需的基础环境就准备好了。接下来可以开始分别在源库和目标库上配置OGG的各种服务。 

OGG源库配置

配置流程大纲

  1. 创建OGG子目录(这个只在首次配置时需要)
  2. 创建OGG管理服务
  3. 创建Extract服务
  4. 创建Pump服务

首先打开GGSCI工具 

cd $OGG_HOME
ggsci

第一步,创建子目录

这是初始化步骤,只需要第一次进入GGSCI执行

GGSCI > create subdirs

正在当前目录 /u01/app/ogg21 下创建子目录

参数文件                   /u01/app/ogg21/dirprm:已存在。
报表文件                   /u01/app/ogg21/dirrpt:已存在。
检查点文件                /u01/app/ogg21/dirchk:已存在。
进程状态文件             /u01/app/ogg21/dirpcs:已存在。
SQL 脚本文件               /u01/app/ogg21/dirsql:已存在。
数据库定义文件          /u01/app/ogg21/dirdef:已存在。
提取数据文件             /u01/app/ogg21/dirdat:已存在。
临时文件                   /u01/app/ogg21/dirtmp:已存在。
身份证明存储文件       /u01/app/ogg21/dircrd:已存在。
主加密密钥 Wallet 文件  /u01/app/ogg21/dirwlt:已存在。
转储文件                   /u01/app/ogg21/dirdmp:已存在。

 * 提示:/u01/app/ogg21/dirdat将作为我们的提取文件主目录

 第二步,配置manager服务

编辑manager配置文件:

GGSCI > edit param mgr
# 内容如下:
--Deletion interval of old trail file  
PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS

-- Autorestart Parameters
AUTORESTART ER *, RETRIES 3, WAITMINUTES 5, RESETMINUTES 30

-- Lag control parameters
LAGCRITICALMINUTES 20
LAGINFOMINUTES 20
LAGREPORTMINUTES 20

 启动服务

GGSCI > start manager

# 可选,关闭manager
# GGSCI > stop manager

# 查看服务配置
# view params mgr

# 查看服务运行日志
# view report mgr

第三步,配置Extract服务

首先用ogg用户(gguser)连接到数据库

# GGSCI中的操作,需要用户连接到数据库,这个用户要有足够权限。
GGSCI >DBLOGIN USERID gguser@host201:1521/PROD PASSWORD Cloud_4u

 3.1 编辑Extract配置文件(ex201)

文件名就是组名(最多8个字符),与对应Extract组名相同,编辑完后,$OGG_HOME/dirprm目录下将创建名为ext201.prm的文本文件:

-- Extract组名
EXTRACT ex201

-- 客户端的编码,如果oracle字符串编码不是UTF8会转为UTF8
SETENV (NLS_LANG="AMERICAN_AMERICA.UTF8")  

-- 连接Oracle服务器的信息,最好OGG与Oracle安装在同一台机器上
USERID gguser@host201:1521/prod, PASSWORD Cloud_4u

-- discard文件,出错时可查看详细信息
DISCARDFILE /u01/app/ogg21/dirrpt/ex201.dsc, APPEND, MEGABYTES 100
-- Trail文件路径,会生成多个Trail文件,文件名为前缀ex+文件编号
EXTTRAIL /u01/app/ogg21/dirdat/ex

--支持truncate
GETTRUNCATES
GETUPDATEBEFORES
-- 捕获delete、update不使用压缩方式
NOCOMPRESSDELETES FETCHMISSINGCOLUMNS
NOCOMPRESSDELETES
NOCOMPRESSUPDATES
WARNLONGTRANS 1H, CHECKINTERVAL 10M

-- 需要捕获的表,每个表一行,全部列出,包含schema名
TABLE HR.EMPLOYEES;

 配置文件更多参数说明可以参考:

Summary of Oracle GoldenGate Parameters

3.2 创建Extract组

GGSCI>ADD EXTRACT ex201,TRANLOG,BEGIN NOW
# 或者指定捕获时间点
# GGSCI>ADD EXTRACT ex201,TRANLOG,BEGIN 2022-03-25 17:00

# 可选:删除Extract组:
# GGSCI >DELETE EXTRACT ex201

3.3 注册Extract组

GGSCI >register extract ex201, database
# 否则启动Extract时,会有ERROR OGG-02022 Logmining server does not exist on this Oracle database

# 可选:取消注册Extract组:
# GGSCI >unregister extract ex201, database

3.4 创建Trail文件

GGSCI >ADD EXTTRAIL /u01/app/ogg21/dirdat/ex, EXTRACT ex201, MEGABYTES 100

# 可选,删除Trail文件:
# GGSCI >DELETE EXTTRAIL /u01/app/ogg21/dirdat/ex
# rm /u01/app/ogg21/dirdat/ex*

 3.5 启动Extract服务

GGSCI >start extract ex201

# 可选
# 停止服务
# GGSCI >stop extract ex201

#查看状态:
# GGSCI >info ex201
# GGSCI >stats ex201
# GGSCI >status ex201

#如果成功运行,会在本地Trail路径下应该生成文件,如果出错,查看错误原因:
# GGSCI >view report ex201

第四步,配置Pump服务

 首先用ogg用户(gguser)连接到数据库

# GGSCI中的操作,需要用户连接到数据库,这个用户要有足够权限。
GGSCI >DBLOGIN USERID gguser@host201:1521/PROD PASSWORD Cloud_4u

4.1 编辑Data Pump配置文件

文件名随便取(8个字符以内),组名和文件名相同

GGSCI >edit param pump201

# 编辑以下内容
-- Data Pump组名称
EXTRACT pump201

-- 不处理数据,直接转发给目标端
PASSTHRU

-- 目标端IP和manager监听端口(manager服务中设置的)
RMTHOST 192.168.0.111, MGRPORT 7809

-- 目标端Trail文件所在目录(源端和目标端目录结构一致可以省去很多麻烦)
RMTTRAIL /u01/app/ogg21/dirdat/ex

-- 需要转发给目的端的表名,每个表一行,包括schema名称
TABLE HR.EMPLOYEES;

# :wq 保存退出

4.2 创建Data Pump组

Data Pump进程也是一种Extract进程,只因配置不同而功能不同。

GGSCI >ADD EXTRACT pump201, EXTTRAILSOURCE /u01/app/ogg21/dirdat/ex
# EXTTRAILSOURCE指前面ex201的Trail文件

# 可选:删除Extract组:
# GGSCI >DELETE EXTRACT pump201

4.3 创建远程(目标端)Trail文件路径

Data Pump从本地Trail文件提取的变更,保存到远程Trail文件路径的位置,一个本地(源端)Trail文件可以分成多个远程Trail文件,在远程用多个Replicat同步,以增大速度。

GGSCI >ADD RMTTRAIL /u01/app/ogg21/dirdat/ex, EXTRACT pump201, MEGABYTES 100
# 可选,删除Data Pump组:DELETE EXTRACT pump201
# 删除远程Trail文件:
# DELETE RMTTRAIL /u01/app/ogg21/dirdat/ex
# rm /u01/app/ogg21/dirdat/ex*

4.4 启动:(注意:这一步要先启动目标端的manager)

GGSCI >start extract pump201
# 可选,查看状态:
# GGSCI >stats pump201
# GGSCI >status pump201
# GGSCI >info pump201
#如果成功运行,在远程的Trail目录下应该生成文件,如果出错,查看错误内容:
# GGSCI >view report pump201

OGG目标库设置

配置流程大纲

  1. 创建子目录
  2. 配置和启动manager服务
  3. 配置GLOBALS和检查点对象
  4. 配置和启动REPLICAT服务
cd $OGG_HOME
ggsci

 第一步,创建子目录

这是初始化步骤,只需要第一次进入GGSCI执行

GGSCI > create subdirs

 第二步,配置和启动manager服务

编辑manager配置文件:

GGSCI > edit param mgr
# 内容如下:
PORT 7809

--Deletion interval of old trail file  

PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS

-- Autorestart Parameters
AUTORESTART ER *, RETRIES 3, WAITMINUTES 5, RESETMINUTES 30

-- Lag control parameters
LAGCRITICALMINUTES 20
LAGINFOMINUTES 20
LAGREPORTMINUTES 20

提示:这里的配置内容和源端保持一致可以减少很多麻烦。 

启动服务

GGSCI > start manager

# 可选,关闭manager
# GGSCI > stop manager

# 可选,查看manager运行日志
# GGSCI > view report manager

第三步,配置GLOBALS

GGSCI (ogg2) 5> edit params ./GLOBALS
# 内容
ggschema gguser
checkpointtable gguser.checkpoint

连接目标库创建检查表

GGSCI (ogg2) 7> dblogin userid gguser@host111:1521/PROD PASSWORD Cloud_4u
GGSCI (ogg2) 8> add trandata hr.employees
GGSCI (ogg2 as ) 9> add checkpointtable gguser.checkpoint

第四步,配置replicat文件

GGSCI (host111) 2> edit params re201

# 加入下面的内容
replicat re201
SETENV (ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1)
SETENV (ORACLE_SID=PROD)

USERID gguser@host111:1521/prod, PASSWORD Cloud_4u

STATOPTIONS, RESETREPORTSTATS
REPORTCOUNT EVERY 1 MINUTES, RATE
REPORT AT 00:00
REPORTROLLOVER ON SUNDAY

DISCARDFILE /u01/app/ogg21/dirrpt/re201.dsc,APPEND,MEGABYTES 100

ASSUMETARGETDEFS

DBOPTIONS NOSUPPRESSTRIGGERS

-- dynamicresolution
MAP hr.employees, target hr.employees,colmap(usedefaults);

4.1 添加replicat组

GGSCI (ogg2 as ) 13> add replicat re201,exttrail /u01/app/ogg21/dirdat/re,checkpointtable gguser.checkpoint

4.2 启动replicat

GGSCI (ogg2) 1> start replicat re201
#可选,停止:GGSCI >stop replicat re201
#查看状态:
# GGSCI >info re201
# GGSCI >stats re201
# GGSCI >status re201
#如果成功运行,会在本地Trail路径下应该生成文件,如果出错,查看错误原因:
# GGSCI >view report re201
# GGSCI (ogg2) 2> info all

验证

源库

update hr.employees set salary=5000 where employee_id=200;
commit;

select salary from hr.employees where employee_id=200;
salary
--------
    5000

目标库

select salary from hr.employees where employee_id=200;
salary
--------
    5000

如果能同步过来就说明搭建成功。

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值