记录Oracle11g数据库OGG同步实验

目录

一、系统环境准备

1.1.基础环境

1.2.上传OGG软件

1.3.主备机hosts参数

二、OGG前期准备

2.1.源库与备库ogg登录测试,先进入到ogg软件目录下再进行ogg登录测试

2.2.创建OGG应用目录

2.3.开启数据库级别补全日志

2.4.创建OGG管理用户及其表空间,查询一下数据文件路径

2.5.添加功能和角色给OGG用户

2.6.配置OGG全局参数

三、OGG进程配置

3.1.管理进程(主备机配置)

3.2.捕获进程(主机配置),主机端添加表级附加日志

3.3.投递进程(主机配置)

3.4.交付进程(备机配置)

3.5.OGG测试

3.6.进程参数解释

四、OGG进程停用与删除

4.1.OGG进程停用

4.2.OGG进程删除

4.3.OGG管理进程删除


官网:Oracle GoldenGate

说明:配置Oracle GoldenGate以满足您组织的业务需求。Oracle GoldenGate可以配置为不同的拓扑,从简单的单向拓扑到更复杂的对等拓扑。支持的拓扑取决于底层数据库要求及其支持的配置。

一、系统环境准备

1.1.基础环境

注:未特殊说明,下面操作主备机需要同时配置,确保一致。

源库:

操作系统:redhat_linux6.8

数据库:oracle11g

备库:

操作系统:redhat_linux6.8

数据库:oracle11g

数据库需要在归档模式下,开归档步骤:

SQL> shutdown immediate

SQL> startup mount

SQL> alter database archivelog;

SQL> alter database open;

SQL> archive log list;

1.2.上传OGG软件

创建目录(建议与oracle软件同级母目录),将OGG软件上传新建目录中,目录进行赋权解压OGG软件

mkdir -p /u01/ogg

chown -R oracle:dba /u01/ogg

tar -xvf fbo_ggs_Linux_x64_ora11g_64bit.tar

1.3.主备机hosts参数

vi /etc/hosts

192.168.3.99 source

192.168.3.98 back

二、OGG前期准备

2.1.源库与备库ogg登录测试,先进入到ogg软件目录下再进行ogg登录测试

cd /u01/ogg

./ggsci

主机:

备机:

2.2.创建OGG应用目录

复制代码
CREATE SUBDIRS

2.3.开启数据库级别补全日志

bash 复制代码
sqlplus / as sysdba
ALTER DATABASE FORCE LOGGING;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA(PRIMARY KEY, UNIQUE,FOREIGN KEY) COLUMNS;
ALTER SYSTEM ARCHIVE LOG CURRENT;

查询补全日志开启状态

bash 复制代码
SELECT SUPPLEMENTAL_LOG_DATA_MIN,SUPPLEMENTAL_LOG_DATA_PK,SUPPLEMENTAL_LOG_DATA_UI,SUPPLEMENTAL_LOG_DATA_FK,SUPPLEMENTAL_LOG_DATA_ALL FROM v$DATABASE;

2.4.创建OGG管理用户及其表空间,查询一下数据文件路径

复制代码
select name from v$datafile;

创建表空间ogg,创建用户ogg,并将dba权限授权给ogg用户。

bash 复制代码
CREATE TABLESPACE ogg DATAFILE '/oradb/orcl/ogg.dbf' size 200M AUTOEXTEND ON;
CREATE USER ogg IDENTIFIED BY oracle DEFAULT TABLESPACE ogg;
GRANT dba TO ogg;

2.5.添加功能和角色给OGG用户

注:单项复制只需在主机端配置添加,双向复制需要在主备机配置。我实验内容为单项复制只在主机端配置,备机未配置。

cd /u01/ogg

sqlplus / as sysdba

添加序列支持

复制代码
@sequence.sql

提示需要输入schema, 我们再次输入上边创建的用户ogg回车继续。

GRANT EXECUTE ON ogg.updateSequence TO ogg;

ALTER TABLE sys.seq$ ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;​​​​​

添加ddl支持,注意提示输入ogg用户

@marker_setup.sql

@ddl_setup.sql​​​​​​​

添加角色,注意提示输入ogg用户

@role_setup.sql

GRANT GGS_GGSUSER_ROLE TO ogg;

@ddl_enable.sql

@marker_status.sql​​​​​​​

2.6.配置OGG全局参数

cd /u01/ogg

./ggsci

EDIT PARAMS ./GLOBALS

复制代码
GGSCHEMA ogg

三、OGG进程配置

3.1.管理进程(主备机配置)

复制代码
GGSCI (source) 1> edit params mgr

port 7839

DYNAMICPORTLIST 7840-7940

PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 7

LAGREPORTHOURS 1

LAGINFOMINUTES 30

LAGCRITICALMINUTES 45​​​​​​​

接着

GGSCI (source) 1> info all

GGSCI (source) 2> start manager

GGSCI (source) 3> info all

复制代码
GGSCI (back) 1> edit params mgr

port 7839

DYNAMICPORTLIST 7840-7940

PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 7

LAGREPORTHOURS 1

LAGINFOMINUTES 30

LAGCRITICALMINUTES 45

再次查看

GGSCI (back) 1> info all

GGSCI (back) 2> start manager

GGSCI (back) 3> info al

3.2.捕获进程(主机配置),主机端添加表级附加日志

./ggsci

dblogin userid ogg,password oracle

add trandata hr.*​​​​​​​

复制代码
info trandata hr.*

创建主机端捕获进程

复制代码
add extract ext_hr, tranlog, begin now, threads 1
复制代码
add EXTTRAIL ./dirdat/hr, extract ext_hr,MEGABYTES 100
复制代码
GGSCI>edit params ext_hr

编辑如下内容:

EXTRACT ext_hr

setenv (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)

TRANLOGOPTIONS DBLOGREADER

userid ogg,password oracle

REPORTCOUNT EVERY 1 MINUTES, RATE

numfiles 5000

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

DISCARDROLLOVER AT 3:00

exttrail ./dirdat/hr, megabytes 100

dynamicresolution

TRANLOGOPTIONS EXCLUDEUSER ogg

TABLE HR.*;

DDL INCLUDE ALL

启动捕获进程

start EXTRACT ext_hr

info all

报错:启动捕获进程没启动成功,进入/u01/ogg/dirrpt/下查看最新日志信息。

提示:

复制代码
ERROR OGG-02091 Operation not supported because enable_goldengate_replication is not set to true.

解决:

复制代码
SQL> alter system set enable_goldengate_replication=true scope=both;

3.3.投递进程(主机配置)

创建投递进程

复制代码
add extract hr_pump, exttrailsource ./dirdat/hr   

告诉投递进程如何投递。

复制代码
add rmttrail ./dirdat/hr, extract hr_pump, MEGABYTES 100

配置投递进程参数

复制代码
edit params hr_pump

extract hr_pump

dynamicresolution

USERID ogg, PASSWORD oracle

rmthost 192.168.3.98, mgrport 7839, compress

rmttrail ./dirdat/hr

numfiles 5000

TABLE HR.*;

DDL INCLUDE ALL

​​​​​​​开启投递进程

start EXTRACT hr_pump

info all​​​​​​​

3.4.交付进程(备机配置)

oracle用户进入备机ogg的HOME目录,启动并登录

cd /u01/ogg

./ggsci

dblogin userid ogg,password oracle

add checkpointtable ogg.rep_hr_ckpt​​​​​​​

注:建议为每个 replicat 进程创建 checkpointtable。

创建交付进程

复制代码
add replicat rep_hr,exttrail ./dirdat/hr,checkpointtable ogg.rep_hr_ckpt

注:

exttrail 须同主机投递进程配置的 rmttrail 参数一致;

checkpointtable 引用的表必须已用 add checkpointtable 命令创建;​​​​​​​

复制代码
GGSCI>edit params rep_hr

REPLICAT rep_hr

SETENV (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)

USERID ogg,PASSWORD oracle

REPORTCOUNT EVERY 30 MINUTES, RATE

REPERROR DEFAULT, ABEND

numfiles 5000

assumetargetdefs

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

ALLOWNOOPUPDATES

map HR.*, target HR.*;

启动备机交付进程

start REPLICAT rep_hr

info all

3.5.OGG测试

主机登录数据库,使用hr用户连接,新建一个表yulu,向新建表插入一条数据(插入数据未提交)。

sqlplus hr/hr

select tname from tab;

create table yulu(id int,name varchar(30));

insert into yulu values (1,'zhang');​​​​​​​

备机登录数据库,使用hr用户连接,查询hr用户下的表,发现主机新建表已同步到备机上来,但主机插入的数据备机没有。

sqlplus hr/hr

select tname from tab;

select * from yulu;​​​​​​​

主机进行commit操作,

备机进行查询,主机插入的数据已经同步到备机上来。

到此,单机单实例Oracle数据库OGG的单向复制操作已部署完成,测试可正常同步。

3.6.进程参数解释

Oracle GoldenGate 参数配置说明表

参数名称 参数设定值 / 示例 作用与解释(基于你的注释) 关键补充/批注
DBOPTIONS DEFERREFCONST 约束延迟设置:在复制进程的事务被提交之前,延迟级联删除、级联更新时的校验和实施。 适用于目标端,能提高带有级联约束的表的复制性能。
GETTRUNCATES (无参数值) 不捕获 生产端 TRUNCATE TABLE 的操作。 注意:OGG 默认会捕获截断操作,使用此参数即明确关闭该捕获。
REPORT AT 06:00 每天早上 6 点生成一次运行报告。 属于常规的进程状态监控配置。
REPORTCOUNT EVERY 30 MINUTES, RATE 每隔 30 分钟报告一次从程序开始到现在的抽取/复制进程的事务记录数,并汇报进程统计信息。 RATE 关键字表示同时输出处理速率(如每秒记录数)。
REPORTROLLOVER AT 02:00 为了防止 report 文件被写满,每天凌晨 2:00 做一次文件过期设定(滚动生成新文件)。 避免日志文件无限增大,建议配合定期清理策略。
REPERROR DEFAULT, ABEND 除了特殊指定的 REPERROR 语句外,报告所有复制期间出现的错误,回滚非正常中断的事务和进程。 高风险 :遇到错误直接 ABEND(异常中止),生产环境需配合告警监控,否则可能导致数据同步停滞。
HANDLECOLLISIONS (前面有"---"号) ---HANDLECOLLISIONS 当灾备端已存在数据时,解决复制过程中出现的冲突。(注:若重新初始化,可通过 drop 备端库后 RMAN 恢复,此时不需要该参数)。 批注 :前面的"---"代表被注释掉了(未启用)。通常不建议长期开启,仅在特定冲突排查时使用。
ALLOWNOOPUPDATES (无参数值) 当生产端有某些列但目标表没有(或配置了 COLSEXCEPT),生产端对这些列进行更新时,目标表不发生任何变化。 用于容忍源端和目标端表结构不一致的情况。
ASSUMETARGETDEFS (无参数值) 指示 OGG 不在生产端查找源表的结构定义,默认 MAP 语句中指定的源表和目标表具有相同的列结构。 能显著降低对源库数据字典的查询压力;但前提是源表和目标表结构确实一致。
DISCARDFILE ./dirrpt/repsa.dsc, APPEND, MEGABYTES 1024M 将执行失败的记录保存在 discard 文件中,大小限制为 1024MB。APPEND 表示如果文件已有记录,则继续追加,不删除旧记录。 仅记录无法处理的冲突或错误数据,是排查问题的重要依据。
DISCARDROLLOVER AT 02:00 为了防止 discard 文件被写满,每天 2:00 做一次文件过期设定(滚动替换)。 与 REPORTROLLOVER 类似,属于文件生命周期管理。

四、OGG进程停用与删除

4.1.OGG进程停用

停用顺序:主机-捕获进程、投递进程;备机-交付进程;主备机管理进程

启动顺序:主备机管理进程;主机-捕获进程、投递进程;备机-交付进程

主机:

$ ./ggsci

GGSCI (source) 1> info all

GGSCI (source) 2> stop EXTRACT ext_hr

GGSCI (source) 3> stop EXTRACT hr_pump

GGSCI (source) 4> info all​​​​​​​

备机:

$ ./ggsci

GGSCI (back) 1> info all

GGSCI (back) 2> stop REPLICAT rep_hr

GGSCI (back) 3> info all

主机:

复制代码
GGSCI (source) 2>stop manager

备机:

复制代码
GGSCI (back) 2> stop manager

4.2.OGG进程删除

主机:

./ggsci

GGSCI (source) 1> dblogin userid ogg,password oracle

GGSCI (source) 2> info all

GGSCI (source) 3> delete ext_hr

GGSCI (source) 4> delete hr_pump

备机:

./ggsci

GGSCI (back) 1> dblogin userid ogg,password oracle

GGSCI (back) 2> info all

GGSCI (back) 3> delete rep_hr​​​​​​​

4.3.OGG管理进程删除

在Oracle GoldenGate(OGG)中,‌管理进程(mgr)是核心进程,负责启动和管理其他OGG进程(如 Extract、Replicat、Pump等)。‌必须先停止所有依赖mgr的OGG进程‌(Extract、Replicat、Pump等)。

mgr本身不能通过 delete 命令直接移除‌,因为它不是常规数据同步进程,而是OGG实例的守护进程。删除mgr实际上意味着‌卸载或清理整个OGG环境‌,需手动清理OGG安装目录下的配置文件、日志等,使用操作系统rm命令进入对应的目录下删除目录下文件即可。

以上内容为网上收集!!后边将根据官网整理一篇关于OGG的学习文档!!!

相关推荐
晴天¥1 小时前
Oracle集群中是该如何管理控制文件和日志文件组?
数据库·oracle
云策数链1 小时前
用友 T+Cloud / U8 项目交接时的账套健康度核查清单
数据库·oracle·erp·用友·云策数链
jnrjian2 小时前
Oracle RAC crs stop时force 关闭DB,另一个node会立即进行recover
数据库·oracle
次次皮2 小时前
Oracle判空踩坑(对比mysql)
数据库·mysql·oracle
znnnk12 小时前
数据库被AI“重写”:2026,从CPU中心走向GPU中心
数据库·人工智能·oracle
胖头鱼的鱼缸(尹海文)1 天前
胖头鱼的技术专栏-482 Oracle AI DB 23.26.4新特性一览(20261027)
数据库·人工智能·oracle
欢醉1 天前
Flink实时同步Oracle到StarRocks的几个踩坑经验分享
starrocks·oracle·flink
心静财富之门2 天前
Python 数据共享四种方案完整实例(同进程 / JSON / Redis / HTTP)
数据库·python·oracle
鸢尾掠地平2 天前
MySQL建库命令总结(含练习)
数据库·oracle