10.Oracle Golden Date(ogg)的搭建和管理
一. GoldenGate 概述
GoldenGate现在是业内成熟的数据容灾与复制产品;GoldenGate是一种基于日志的结构化数据复制方式,它通过解析源数据库在线日志或归档日志获得数据的增删改变化(数据量只有日志的四分之一左右),再将这些变化应用到目标数据库,实现源数据库与目标数据库同步、双活。
二. GoldenGate 搭建
目标在linux系统下安装Oracle;利用GoldenGate 实现数据同步;可复制DML和DDL操作
环境如下:本环境目标端是源端的克隆;步骤请参考第8篇
| 源端 | 目标端 | |
| 操作系统 | linux6.5 | linux6.5 |
| IP | 192.168.1.235 | 192.168.1.221 |
| 数据库版本 | 11.2.0.4.0 | 11.2.0.4.0 |
| GoldenGate版本 | 11.2.1.0.1 | 11.2.1.0.1 |
2.1 创建 GoldenGate 操作系统用户
两台服务器都需要创建 ogg 操作系统用户(此步骤非必须,也可以使用ORACLE用户安装)。
useradd -u -g oinstall -G dba ogg
passwd ogg
2.2 修改 GoldenGate 系统用户环境变量
source /home/oracle/.bash_profile
# or
export ORACLE_BASE=/u01/app
export ORACLE_HOME=$ORACLE_BASE/oracle
export ORACLE_SID=ora221
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin/data/ogg
export NLS_LANG=AMERICAN_AMERICA.UTF8
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
alias sqlplus='rlwrap sqlplus'
alias ggsci='rlwrap ggsci'
2.3 创建 GoldenGate 安装目录
两台服务器都需要做同样的操作。
mkdir -p /data/ogg
chown -R ogg:oinstall /data/ogg
2.4 安装 GoldenGate
两台服务器都需要操作。
unzip fbo_ggs_Linux_x64_ora11g_64bit.tar.zip
tar -xvf fbo_ggs_Linux_x64_ora11g_64bit.tar -C /data/ogg
2.5 建立 GoldenGate表空间
两台服务器都需要操作: 建议使用单独的表空间存放 GoldenGate 数据
create tablespace tsp_ogg datafile '/data/oracle/data/ogg01.dbf' size 100M autoextend on;
2.6 创建 GoldenGate 用户并赋权
两台服务器都需要操作
create user ogg identified by ogg default tablespace tsp_ogg;
grant dba to ogg;
GRANT CREATE TABLE,CREATE SEQUENCE TO OGG;
2.7 配置数据库
由于 GoldenGate 的原理是根据 Oracle 的日志进行抽取复制。为了保证日志的完整性;需要打开 Oracle 数据库归档;
alter system set log_archive_dest_1 = 'LOCATION=/data/arch' scope = spfile;
shutdown immediate;
startup mount
alter database archivelog;
alter database open;
还需要开启 force log 和 supplemental log
alter database force logging;
alter database add SUPPLEMENTAL log data;
最后查询结果如下:
SQL> select NAME,OPEN_MODE,FORCE_LOGGING,SUPPLEMENTAL_LOG_DATA_MIN from v$database; NAME OPEN_MODE FOR SUPPLEME
--------- -------------------- --- --------
ORA235 READ WRITE YES YES
2.8 运行 GoldenGate 支持 DDL 脚本
如果要让 GoldenGate 支持DDL操作,还需要额外运行几个脚本,这些脚本是OGG带的而不是 Oracle 带的,在 GoldenGate 的安装目录都可以找到,源端与目标端都需要运行,如下:
@marker_setup.sql
@ddl_setup.sql
@role_setup.sql
@ddl_enable.sql
在11.2.0.4.0版本;需要设置
ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION = TRUE SCOPE=BOTH;
三. GoldenGate单向复制流程配置
现在就可以正式配置OGG了,在配置OGG之前,先看下OGG的复制流程,OGG和其他传统复制软件一样,也是通过源端捕获/挖掘ORACLE的日志信息, 目标端根据源端传送过来的日志信息进行重塑,实现源端-目标端数据同步,可以参考下图。

只有commit之后的日志信息才会被Capture进程捕获,未提交的事务OGG不会捕获。
3.1 创建 GoldenGate 的工作目录
源端和目标端都需要创建,登录GoldenGate,只需要执行create subdirs命令就可以了。
[ogg@oracle235 ogg]$ ggsci Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0. OGGCORE_11.2.1..1_PLATFORMS_120423.0230_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Apr :: Copyright (C) , , Oracle and/or its affiliates. All rights reserved. GGSCI (oracle235) > create subdirs Creating subdirectories under current directory /data/ogg Parameter files /data/ogg/dirprm: already exists
Report files /data/ogg/dirrpt: created
Checkpoint files /data/ogg/dirchk: created
Process status files /data/ogg/dirpcs: created
SQL script files /data/ogg/dirsql: created
Database definitions files /data/ogg/dirdef: created
Extract data files /data/ogg/dirdat: created
Temporary files /data/ogg/dirtmp: created
Stdout files /data/ogg/dirout: created
3.2 添加 CheckPoint 表
为了保证源和目标端在传数据的时候不会重复或者少传,在目标端添加checkpoin表。
操作如下:
GGSCI (oracle235) > EDIT PARAMS ./GLOBALS
CHECKPOINTTABLE ogg.ggschkpt GGSCI (oracle235) > exit
[ogg@oracle235 ogg]$ ggsci Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0. OGGCORE_11.2.1..1_PLATFORMS_120423.0230_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Apr :: Copyright (C) , , Oracle and/or its affiliates. All rights reserved. GGSCI (oracle235) > DBLOGIN USERID ogg, PASSWORD ogg
Successfully logged into database. GGSCI (oracle235) > ADD CHECKPOINTTABLE No checkpoint table specified, using GLOBALS specification (ogg.ggschkpt)... Successfully created checkpoint table ogg.ggschkpt.
3.3 配置 MGR 进程组
在源端和目标端都必须运行一个MGR进程组;负责启动GoldenGate进程,以及启动动态进程,管理trail文件,错误信息。
运行ggsci程序;输入 “EDIT PARAMS MGR” 编辑参数文件:
[ogg@oracle235 ogg]$ ggsci Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0. OGGCORE_11.2.1..1_PLATFORMS_120423.0230_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Apr :: Copyright (C) , , Oracle and/or its affiliates. All rights reserved. GGSCI (oracle235) > EDIT PARAMS MGR
输入内容如下:
PORT
DYNAMICPORTLIST -
AUTORESTART EXTRACT *, WAITMINUTES , RESETMINUTES
PURGEOLDEXTRACTS /data/ogg/dirdat, USECHECKPOINTS, MINKEEPDAYS
- PORT:指定服务监听端口;默认端口为7809
- DYNAMICPORTLIST:动态端口:可以制定最大256个可用端口的动态列表,当指定的端口不可用时,管理进程将会从列表中选择一个可用的端口,源端和目标段的Collector、Replicat、GGSCI进程通信也会使用这些端口
- AUTORESTART:自动重启参数设置:本处设置表示每2分钟尝试重新启动所有EXTRACT进程;以后5分钟清零。
- PURGEOLDEXTRACTS:定期清理trail文件设置:本处设置表示对于超过3天的trail文件进行删除
启动MGR进程
GGSCI (oracle235) > start mgr Manager started. GGSCI (oracle235) > info mgr Manager is running (IP port oracle235.).
3.4 源端配置 Extract 进程
负责抓取需要传输数据;下面在源端配置抽取进程。
GGSCI (oracle235) > EDIT PARAMS EORA_1 EXTRACT EORA_1
SETENV (NLS_LANG=AMERICAN_AMERICA.UTF8)
USERID ogg, PASSWORD ogg
EXTTRAIL /data/ogg/dirdat/aa
TABLE lottu.*;
在源端用 add extract 命令创建 extract 组;用add exttrail 命令创建本地 trail 文件
GGSCI (oracle235) > ADD EXTRACT EORA_1, TRANLOG, BEGIN NOW
EXTRACT added. GGSCI (oracle235) > ADD EXTTRAIL /data/ogg/dirdat/aa, EXTRACT EORA_1, MEGABYTES
EXTTRAIL added.
启动 extract 进程;在 ggsci 中:可以使用 add, alter, cleanup, delete, info, kill命令管理extract进程
GGSCI (oracle235) > start extract eora_1 Sending START request to MANAGER ...
EXTRACT EORA_1 starting GGSCI (oracle235) > info eora_1 EXTRACT EORA_1 Last Started -- : Status RUNNING
Checkpoint Lag :: (updated :: ago)
Log Read Checkpoint Oracle Redo Logs
-- :: Seqno , RBA
SCN 0.0 ()
3.5 配置 Pump 进程
extract进程负责将抓取的数据写入本地trail文件;而需要Pump进程把trail文件传输到目标端。使用 EDIT PARAMS PORA_1 添加配置文件
GGSCI (oracle235) > EDIT PARAMS PORA_1 EXTRACT PORA_1
SETENV (NLS_LANG=AMERICAN_AMERICA.UTF8)
PASSTHRU
RMTHOST 192.168.1.221, MGRPORT
RMTTRAIL /data/ogg/dirdat/pa
TABLE lottu.*;
用 add extract 指定本地 trail 文件
GGSCI (oracle235) > ADD EXTRACT PORA_1, EXTTRAILSOURCE /data/ogg/dirdat/aa
EXTRACT added.
用 add rmttrail 指定远程 trail 文件
GGSCI (oracle235) > ADD RMTTRAIL /data/ogg/dirdat/pa, EXTRACT PORA_1, MEGABYTES
RMTTRAIL added.
启动 pump 进程
GGSCI (oracle235) > START EXTRACT PORA_1 Sending START request to MANAGER ...
EXTRACT PORA_1 starting GGSCI (oracle235) > info all Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING
EXTRACT RUNNING EORA_1 :: ::
EXTRACT RUNNING PORA_1 :: ::
3.6 配置目标端的 Replicat 进程
Replicat 进程运行于目标端;负责将源端传过来的 trail 文件;在目标端数据库应用。实现源端和目标端数据同步。
GGSCI (oracle221) > EDIT PARAMS RORA_1 REPLICAT RORA_1
SETENV (NLS_LANG=AMERICAN_AMERICA.UTF8)
USERID ogg, PASSWORD ogg
HANDLECOLLISIONS
ASSUMETARGETDEFS
DISCARDFILE /data/ogg/dirrpt/RORA_aa.rpt, append
MAP lottu.*, TARGET lottu.*;
在目标端使用 add replicat 添加 Replicat 进程
GGSCI (oracle221) > add replicat RORA_1, exttrail /data/ogg/dirdat/pa
REPLICAT added.
使用 start replicat 启动 Replicat 进程
GGSCI (oracle221) > start REPLICAT RORA_1 Sending START request to MANAGER ...
REPLICAT RORA_1 starting GGSCI (oracle221) > info all Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING
REPLICAT RUNNING RORA_1 :: ::
四. 配置 DDL 同步
在前面我们已经配置 GoldenGate 支持DDL脚本;其中有创建 Trigger;DDL跟DML 复制机制不同;DML复制是基于redo log。其DDL复制原理是基于Trigger;它扑捉DDL操作记录在中间表;Extract读取中间表DDL操作;Pump投递到目标端;目标端在应用DDL语句。
4.1 运行 GoldenGate 支持 DDL 脚本
前面已级操作 ;略。
4.2 关闭 Oracle 的 recyclebin
在执行上一步操作有一个温馨提示:‘NOTE: For an Oracle 10g source, the system recycle bin must be disabled. For Oracle 11g and later, it can be enabled.’ GoldenGate10G DDL不支持Oracle回收站功能;本文提供的GoldenGate版本是11G;该操作也略;
关闭Oracle回收站功能
alter system set recyclebin=off scope=both;
4.3 源端配置
指定DDL复制的用户
GGSCI (oracle235) > view params ./GLOBALS GGSCHEMA OGG
停MGR,Extract进程;
配置Extract配置文件;在配置文件添加一下内容:
DDL INCLUDE ALL
DDLOPTIONS ADDTRANDATA,REPORT
4.4 目标端配置
停MGR,Replicat进程;
配置Replicat配置文件;在配置文件添加一下内容:
DDL INCLUDE MAPPED
DDLOPTIONS REPORT
配置完成;在重启各进程进行验证。
五. 总结
本文只涉及到 GoldenGate 的单向复制的配置和安装;其实GoldenGate还有很多架构:例如1对多同步,级联同步;双向同步等等。根据场景不同应用不同架构;还有GoldenGate日常维护,错误分析,监控,以及性能优化调整。大家可以阅读《企业级IT运维宝典之GoldenGate实战》或者查看官方文档
10.Oracle Golden Date(ogg)的搭建和管理的更多相关文章
- linux下单节点oracle数据库间ogg搭建
环境说明: linux为Linux 2.6.32-573.el6.x86_64 oracle为 11g Enterprise Edition Release 11.2.0.1.0 - 64 ...
- 转://Oracle Golden Gate 概念和原理
引言:Oracle Golden Gate是Oracle旗下一款支持异构平台之间高级复制技术,是Oracle力推一种HA高可用产品,简称“OGG”,可以实现Active-Active 双业务中心架构 ...
- ORACLE插入DATE类型字段
1 怎样在ORACLE中输入DATE类型的字段 insert into table_name (date_column) values(to_date('2006-06-04','yyyy-mm-dd ...
- ORACLE中date类型字段的处理
(1)在英文版本的ORACLE中默认日期格式为'DD-MON-YY',例如'01-JAN-98' 在汉化的中文版本中ORACLE默认日期格式为'日-月-年',例如'21-8月-2003'或'21-8月 ...
- Oracle GoldenGate (以下简称ogg)在异种移植os同一种db之间的数据同步。
Oracle GoldenGate (以下简称ogg)在异种移植os同一种db之间的数据同步. ogg要实现的功能: 同步可以细化到单个表,满足特定的where条件rows同步,称号column同步. ...
- Oracle 19c使用dbca来搭建物理DG
Using DBCA to Create a Data Guard Standby The Database Configuration Assistant (DBCA) can also be us ...
- Oracle Golden Gate原理简介
Oracle Golden Gate原理简介 http://www.askoracle.org/oracle/HighAvailability/20140109953.html#6545406-tsi ...
- Oracle服务端及客户端搭建帮助文档
Oracle服务端及客户端搭建帮助文档 目录 简介 Oracle服务端安装 Oracle客户端安装 PLSQL安装 登录测试 系统配置修改 用户操作 解锁账户.密码 创建账户及密码 配置监听文件 监听 ...
- win10 + VS2010 + OpenCV2.4.10重编译OpenCV开发环境搭建
win10 + VS2010 + OpenCV2.4.10重编译OpenCV开发环境搭建 重编译的优点:能够调试的时候看OpenCV的源码. 重编译要得到的东西:Debug版本号和Release版本号 ...
随机推荐
- 生成缓存文件cache file
生成缓存文件cache file class Test{ public function index(){ $arrConfig = Array( 'name' => 'daicr', 'age ...
- Spring 4 MVC example with Maven - [Source Code Download]
In this tutorial, we show you a Spring 4 MVC example, using Maven build tool. Technologies used : Sp ...
- bootstrap常见的面试题
1. 如果让一个元素在pc端显示而在手机端隐藏,下列选项正确的是(b). A. visible-xs-8 hidden-md B. visible-md-8 hidden-xs C. visibl ...
- 【经典】5种IO模型 | IO多路复用
上篇回顾:静态服务器+压测 3.2.概念篇 1.同步与异步 同步是指一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成后,依赖的任务才能算完成. 异步是指不需要等待被依赖的任务完成,只是通 ...
- centos安装系统全过程
--查看系统 lsb_release -a --查看端口 netstat -lnp|grep 80 ps 进程ID #查看进程的详细信息 kill -9 进程ID --查看Java 版本 java - ...
- ssh 多次登录禁用账号
vi /etc/pam.d/sshd #%PAM-1.0auth required pam_tally2.so deny=3 unlock_time=600 even_deny_root root_u ...
- java后台服务器启动脚本
最近由于经常在项目上线或者调试中启动服务,由于要设置环境变量这些,所以为了方便写了个启动脚本,希望能够帮助大家,也算是给自己做个小笔记: example_project_start.sh: # /bi ...
- Java通过SMS短信平台实现发短信功能
在项目中使用过发短信的功能,但那个由于公司内部的限制很麻烦,今天在网上找到一个简单的,闲来无事就把它记录如下: 本程序是通过使用中国网建提供的SMS短信平台实现的(该平台目前为注册用户提供5条免费短信 ...
- vue-cli使用sockjs即时通信
基于webSocket通信的库主要有 socket.io,SockJS,这次用的是 SockJS. 这里我们使用sockjs-client.stomjs这两个模块,要实现webSocket通信,需要后 ...
- Javascript 面向对象的编程思想
面向对象,首先得有类的概念,没有类造不出来对象,,Javascript把函数名看成类. 其次分为不同结构层,如三层架构.MVC.MVVM. 本文根据实际项目演练,分为几个适用的结构层,如果项目不大一般 ...