oracle Golden Gate 实现数据同步
1.应用场景
生产数据库正常运行下进行ogg操作,实现到测试库的实时同步功能。
2.原理分析
ogg主要是四个服务:Manager,Extract,Pump,Replicat
- Manager:控制ogg 启动 状态 停止 等
- Extract:捕获 源 端数据 利用其内在的checkpoint机制,周期性地检查 并记录其读写的位置,通常是写入到本地的trail文件
- Pump:把Trail文件以数据块的形式通过 TCP/IP协议发送到目标端
- Replicat:读取目标端Trail文件中的内容,并将解析其解析为DML或DDL语句,然后应用到目标数据库中。
针对当前场景,
在官网:https://docs.oracle.com/goldengate/1212/gg-winux/GIORA/instantiate.htm#GIORA403
中介绍了如下方式。
实际部署时需要注意正确的执行顺序:
(1) 源端和目标端创建配置各个同步进程。
(2) 开启源端同步抓取进程(图上的Change Extract),开始捕获变化。
(3) 开启初始化进程(图上的Initial-Load Extract),开始数据初始化加载。
(4) 等初始化加载结束,开启目标端复制应用进程(图上的ChangeReplicat),开始实时同步应用。
3.实现方式
3.1下载
官网的下载地址:选择适合自己oracle版本的ogg版本。https://www.oracle.com/middleware/technologies/goldengate-downloads.html
或者下载百度云分享的链接文件
https://download.csdn.net/download/fzxiaocai/85018709
3.2当前版本信息
服务器ip | 系统 | oracle | goldengate | 实例 | 用户密码 | 表空间 | 端 |
---|---|---|---|---|---|---|---|
192.168.66.2 | centos7.5 | 11.2.0.4 | 19.1.0.0.4 | orcl | Lczy_2022 | ogg | 源端 |
192.168.66.3 | centos7.5 | 11.2.0.4 | 19.1.0.0.4 | orcl | Lczy_2022 | ogg | 目标端 |
3.3安装ogg
源端操作:
- 目录创建
mkdir /home/goldengate
mkdir -p /home/oracle/product/ogg_src
chown -R oracle:oinstall /home/goldengate/
chown -R oracle:oinstall /home/oracle/product/ogg_src
- 文件解压
unzip fbo_ggs_Linux_x64_Oracle_shiphome.zip -d /home/goldengate/
chown -R oracle:oinstall /home/goldengate/
- 环境变量
vim /home/oracle/.bash_profile
------------------------------
export OGG_HOME=/home/oracle/product/ogg_src
export PATH=$OGG_HOME:$PATH
export LD_LIBRARY_PATH=$OGG_HOME:$LD_LIBRARY_PATH
------------------------------
source /home/oracle/.bash_profile
- 安装ogg-manager
cd /home/goldengate/fbo_ggs_Linux_x64_Oracle_shiphome/Disk1
./runInstaller ## 也可以选择静默安装
alias ggsci="rlwrap /home/oracle/product/ogg_src/ggsci"
##关闭终端再连接一次,出现此页面说明安装完成 --oracle执行 如下报错:bash: rlwrap: command not found... 解决:重连ssh
[oracle@oracle-m ~]$ ggsci
·················
GGSCI (oracle-m) 1> view param mgr
PORT 7809
GGSCI (oracle-m) 2> info mgr
Manager is running (IP port TCP:oracle-m.7809, Process ID 4669).
- 创建用户和分配权限
还有其他的权限配置方式,详见文末。
cd
mkdir -p oradata/orcl
sqlplus / as sysdba
create tablespace OGG logging datafile '/home/oracle/oradata/orcl/OGG.DBF' size 20m autoextend on uniform size 2m;
create user ogg identified by ogg default tablespace OGG temporary tablespace TEMP quota unlimited on OGG;
grant unlimited tablespace to ogg;
grant dba to ogg;
- 开启数据库附加日志
## oracle 11.2.0.4和oracle 12.1.0.2及之后的版本需要设置如下参数
SQL> alter system set enable_goldengate_replication=true scope=both;
##打开最小附加日志
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
SQL> ALTER DATABASE FORCE LOGGING;
SQL> SELECT supplemental_log_data_min, force_logging FROM v$database;
SQL> ALTER SYSTEM SWITCH LOGFILE;
## 有操作如下:涉及重启数据库 !!! 慎重 !!! 操作
SQL> select log_mode, supplemental_log_data_min, force_logging from v$database;
LOG_MODE SUPPLEME FOR
------------ -------- ---
NOARCHIVELOG NO NO
###查看后发现没有开启归档模式,需要开启
shutdown immediate ##--关闭数据库
startup mount; ##--启动mount模式
alter database archivelog; ## --启用归档日志
alter database open; ##--打开数据库
alter database force logging; ##--启用強制日志
alter database add supplemental log data; ##--启用附加日志
alter system switch logfile; ##--切换日志文件
# 源端需要添加 用户级别的 或者 表级别 的附加
# 选择其一
##用户级别的附加
ggsci
dblogin userid ogg, password ogg
add schematrandata ogg
##表级别的附加
ggsci
dblogin userid ogg, password pwd
add trandata ogg.togg;
目标端:
- 目录创建
mkdir /home/goldengate
mkdir -p /home/oracle/product/ogg_trg