ogg配置搭建之前需要在数据库中将enable_goldengate_replication参数打开
SYS@cphl> alter system set enable_goldengate_replication = true scope=both;
goldgate错误日志地址:$GGS_HOME/ggserr.log

1、解压安装包
p23237964_1121033_Linux-x86-64.zip

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

unzip ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip
Archive: ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip inflating:
fbo_ggs_Linux_x64_ora11g_64bit.tar ogg的tar包
inflating: OGG_WinUnix_Rel_Notes_11.2.1.0.1.pdf ogg自述文件
inflating: Oracle GoldenGate 11.2.1.0.1 README.txt
inflating: Oracle GoldenGate 11.2.1.0.1 README.doc
解TAR,提醒解tar之后会产生N多文件最好提前放在一个文件夹中
tar xvf fbo_ggs_Linux_x64_ora11g_64bit.tar
2.创建goldgate系统用户或者直接在oracle系统用户增加环境变量
export GGS_HOME=/u01/app
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=o1
export ORACLE_ADMIN=$ORACLE_BASE/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:$GGS_HOME
export ORACLE_TERM=xterm
export PATH=/usr/sbin:/usr/bin:/usr/local/bin:$ORACLE_HOME/bin:$ORACLE_HOME/jdk/bin:$PATH:$GGS_HOME

Linux系统下oracle11g增加的环境变量为:
export GGS_HOME=/u01/app
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:$GGS_HOME
export PATH=/usr/sbin:/usr/bin:/usr/local/bin:$ORACLE_HOME/bin:$ORACLE_HOME/jdk/bin:$PATH:$GGS_HOME
Linux系统下oracle10g增加的环境变量为:
export GGS_HOME=/home/oracle/ogg
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export PATH=/usr/sbin:/usr/bin:/usr/local/bin:$ORACLE_HOME/bin:$ORACLE_HOME/jdk/bin:$PATH:$GGS_HOME
刷新环境变量
. .profile
检查环境变量是否正确
echo $GGS_HOME
echo $LD_LIBRARY_PATH
echo $PATH
3、数据库准备(源端、目标端)
开启归档模式
打开数据库附加日志
select supplemental_log_data_min from v$database;
alter database add supplemental log data; 启动附加日志
创建goldgate专属数据库用户ogg此用户需要拥有dba权限(源端、目标端都需要有ogg用户)
创建goldgate源端用户sender目的端接受用户receiver sender用户receiver用户只需要connect、resource权限
每个用户都需要有自己特有的表空间
源端和目标端都要创建 ogg 用户
源端创建 sender 用户
目标端创建 receiver 用户
思路:
source源 --主机名A --数据库1---用户sender
target源 --主机名B --数据库2 --用户receiver
目的把用户sender下表t1同步复制到receiver用户下表t1下
4、配置ogg工作目录(源端、目标端)
GGSCI (A) 2> ggsci 启动 OGG 命令行
GGSCI (A) 2> create subdirs 在安装目录下创建 OGG 工作目录

Reports (.rpt) /u01/app/ogg/dirrpt OGG 报告
Parameters (.prm) /u01/app/ogg/dirprm 存放参数文件
Stdout (.out) /u01/app/ogg/dirout
Replicat Checkpoints (.cpr) /u01/app/ogg/dirchk 检查点即可以放在表中也可以放在文件中
Extract Checkpoints (.cpe) /u01/app/ogg/dirchk 提取进程检查点
Process Status (.pcs) /u01/app/ogg/dirpcs 进程状态
SQL Scripts (.sql) /u01/app/ogg/dirsql 存放 SQL 脚本
Database Definitions (.def) /u01/app/ogg/dirdef 连接是什么类型数据库 oracle mysql db2 sqlserver

5、启动 manager 进程(源端、目标端)
Manager 进程:这是 GG 全局主进程,它是 GG 守护进程统筹全局,它可以启动、监控、终止 Golden Gate 的其它进
程,收集错误报告及事件,分配数据存储空间,发布阀值告警等,在源端和目标端有且只有一个 Manager 进程。
检查所有进程运行状态

info all 查看当前ogg进程状态

编辑mgr 进程参数文件 语法:edit params <group_name>

GGSCI (A) 2> edit params mgr
port 7809
start mgr 启动 mgr 进程
6、配置源端 Extract 复制进程(源端)


Add trandata schema.table_name (如 hdcs.t)

Add trandata schemas.*

(1)添加抓取进程 ext1
语法:add extract <extract_name>,tranlog,<开始时间或者 SCN 或者 RBA>
GGSCI (A) 3> add extract ext1,tranlog,begin now
info all
(2)指定队列文件路径
Extract 进程把日志数据抓取出来后(没有存放在本地)而是直接把信息投递到目标端生成队列文件
add rmttrail /u01/app/dirdat/sd,extract ext1
rmttrail:表示传输进程将日志传输到目标端后放置的目录和队列文件名
(3)修改 extract 进程参数文件(按照什么方式工作)并启动
语法:edit params <extract_name>
添加如下内容并保存
extract ext1
setenv (NLS_LANG="AMERICAN_AMERICA.ZHS16GBK")
setenv (ORACLE_SID="1")
userid ogg,password oracle
gettruncates
rmthost B,mgrport 7809
rmttrail /u01/app/ogg/dirdat/sd
table sender.t1;

注意:标点符号要用英文字体,必须以分号结尾。

start extract ext1 启动 ext1 进程,stop extract ext1 停止进程

info all(RUNNING即可)
----此时可以再目标端相应路径下查看到trail文件
7、配置目标端 replicat 进程
(1)在目标端数据库创建 checkpoint 表
GGSCI (B) 8> edit params globals 添加如下 2 条,说明 ogg 用户为 checkpoint 专属用户
ggschema ogg
checkpointtable ogg.checkpoint
GGSCI (B) 10> dblogin userid ogg,password oracle
Successfully logged into database. 通过 GGSCI 顺利登陆数据库,创建保存 checkpoint 信息的表
17
GGSCI (B) 11> add checkpointtable ogg.checkponit
Successfully created checkpoint table ogg.checkponit.
说明:checkpoint 表为防止在网络断开、进程终止时,从哪个位置来恢复应用。
--此时可以在目标端ogg数据库用户下查看到检查点的表
(2)在目标端创建 replicat 进程
GGSCI (B) 2> add replicat rep1,exttrail /u01/app/ogg/dirdat/sd,checkpointtable ogg.checkpoint
(3)修改 replicat 进程参数文件(按照什么方式工作)并启动
GGSCI (B) 4> edit params rep1
replicat rep1
--handlecollisions
assumetargetdefs
setenv (NLS_LANG="AMERICAN_AMERICA.ZHS16GBK")
setenv (ORACLE_SID="2")
userid ogg,password oracle
map sender.t1,target receiver.t1;
现在我们的 rep1 进程配置完毕,由于没有设置 DDL 复制,我们要在 receiver 用户下创建 t1 表
启动 start replicat rep1 进程
---此时即可在目标端查询到来着源端的复制数据

 

 


配置自动删除队列

1) 进入安装目录执行./ggsci;
2) 执行edit param mgr编辑管理进程参数,加入或修改以下行
purgeoldextracts /<goldengate安装目录>/dirdat/*, usecheckpoint, minkeepdays 7
其中,第一个参数为队列位置,*可匹配备份中心所有队列文件;
第二个参数表示是首先要保证满足检查点需要,不能删除未处理队列;
第三个参数表示最小保留多少天,后面的数字为天数。例如,如果希望只保留队列/ggs/dirdat/xm文件3天,可以配置如下:
purgeoldextracts /ggs/dirdat/xm, usecheckpoint, minkeepdays 3

3) 停止MGR进程,修改好参数后重启该进程
GGSCI > stop mgr
输入y确认停止
GGSCI > start mgr
注:临时停止mgr进程并不影响数据复制。

配置启动MGR时自动启动Extract和Replicat进程

1) 进入安装目录执行./ggsci;
2) 执行edit param mgr编辑管理进程参数,加入以下行
AUTOSTART ER *
3) 停止MGR进程,修改好参数后重启该进程
GGSCI > stop mgr
GGSCI > start mgr
注意:一般建议不用自动启动,而是手工启动,便于观察状态验证启动是否成功,同时也便于手工修改参数。

 

 设置goldengate支持ddl

1.在源端赋予ogg用户相应的权限,修改全局配置文件添加ggschema参数

SQL> grant execute on utl_file to ogg;

Grant succeeded
GLOBALS参数文件添加ggschema ogg
GGSCI (qht115) 1> edit param ./GLOBALS
CHECKPOINTTABLE ogg.ggschkpt
ggschema ogg
2.关闭recyclebin(目标和源都关闭)
SQL> alter system set recyclebin=off scope=spfile;(10g可以both修改,11g必须spfile修改重启生效)

3.运行所需要的脚本
SQL> @marker_setup.sql
@marker_setup --该脚本用于创建DDL的marker表GGS_MARKER,用于存储DDL信息,该表只进行insert操作


SQL> @ddl_setup.sql
@ddl_setup --该脚本创建了进行DDL复制抽取和复制所需的对象


SQL> @role_setup.sql
@role_setup --创建DDL复制所需的对象


SQL> grant ggs_ggsuser_role to ogg;

SQL> @ddl_enable.sql
@ddl_enable -- 启用DDL复制,实质上是创建触发器,用以想MARKER和HISTORY表插入DDL信息


--脚本地址在GGS_HOME
4.源端修改extract进程的params文件,添加"ddl include all"参数,重启extract进程
5.修改目标端的replicate进程
添加以下内容:

DDL INCLUDE ALL

DDLERROR DEFAULT IGNORE RETRYOP MAXRETRIES 3 RETRYDELAY 5
重启进程

--此时ogg架构支持ddl操作

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄