目录
2.1.源库与备库ogg登录测试,先进入到ogg软件目录下再进行ogg登录测试
说明:配置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的学习文档!!!