快速搭建golden gate环境
准备操作系统用户和文件系统
- 准备安装和运行用户(操作系统用户)
- 建议使用Oracle用户
- 也可使用新建用户,但需做以下配置
- 该用户必须加入到oinstall组
- 该用户使用与oracle相同的profile文件
- 操作系统必须为该用户开放一定的CPU、内存等资源限制,可以通过ulimit –a查看,建议在/etc/security/limits.conf中设置和oracle用户一致.
- 准备安装位置和空间
- OGG可以安装于任意位置,RAC下建议安装在存储阵列,可以在单点失败后切换到其它节点继续运行.只在一个节点上跑。
- 分配空间
- 软件本身所需空间约为200M以下 (OGG 12c需要约500M空间,建议1GB)
- 为缓存数据建议保留相当于1-3天归档日志的存储空间 (trial文件)--很多客户用1周的量。
- 将安装目录的owner修改为OGG运行用户
源库的准备
- 数据库必须打开归档模式:OGG重启时需要读取未提交交易开始时的日志。如果系统稳定,只要你不需要去归档日志读取就不需要打开。
- 验证未使用并行日志(只针对9i ):Sql> show parameter LOG_PARALLELISM。如结果为1,无需修改;否则需要修改为1。
- 如果是OGG12c,需要设置(不管源和目标,只要运行12c的就要设置):alter system set enable_goldengate_replication=true;
- 打开数据库最小附加日志:
- SQL>select supplemental_log_data_min from v$database;
- 结果为NO,表示没有打开附加日志。使用以下命令将数据库附加日志打开:
- SQL>alter database add supplemental log data;
- 切换日志以使附加日志生效:
- SQL>ALTER SYSTEM ARCHIVE LOG CURRENT;
- 建立OGG数据库用户:
- OGG需要从数据字典读取表结构
- 如Oracle日志中没有足够信息,则需通过flash back或者直接读取数据库记录(例如,CLOB/BLOG/BINARY等)
- OGG数据库用户权限:
- CREATE USER goldengate IDENTIFIED BY goldengate DEFAULT TABLESPACE USERS ;
- GRANT CONNECT TO goldengate;
- GRANT CREATE SESSION TO goldengate;
- GRANT ALTER SESSION TO goldengate;
- GRANT RESOURCE TO goldengate;
- GRANT SELECT ANY DICTIONARY TO goldengate;
- GRANT SELECT ANY TABLE TO goldengate;
- GRANT FLASHBACK ANY TABLE TO goldengate;
- GRANT ALTER ANY TABLE TO goldengate;
目标库的准备
- 建立OGG数据库用户:通过sql将数据写入数据库
- OGG目标数据库用户权限:
- CREATE USER goldengate IDENTIFIED BY goldengate DEFAULT TABLESPACE USERS ;
- GRANT CONNECT TO goldengate;
- GRANT CREATE SESSION TO goldengate;
- GRANT ALTER SESSION TO goldengate;
- GRANT RESOURCE TO goldengate;
- GRANT SELECT ANY DICTIONARY TO goldengate;
- GRANT SELECT ANY TABLE TO goldengate;
- GRANT FLASHBACK ANY TABLE TO goldengate;
- GRANT ALTER ANY TABLE TO goldengate;
- GRANT INSERT ANY TABLE TO goldengate;
- GRANT UPDATE ANY TABLE TO goldengate;
- GRANT DELETE ANY TABLE TO goldengate;
软件安装(源和目标)
- 上传软件包到安装目录
- 以oracle用户登录
- 使用unzip XXX.zip解压缩;
- 使用tar xvf XXX.tar解开tar包;
- 在goldengate目录下,执行./ggsci进入命令行界面,左侧提示出现GGSCI (myhost) 1>,表示进入成功
- 如果ggsci进入出错,设置一下环境变量:
- export LD_LIBRARY_PATH=$ORACLE_HOME/lib
- 在ggsci环境下创建GoldenGate子目录:GGSCI>create subdirs
- 该命令会在OGG安装目录下建立若干子目录,其中几个主要目录如下所示:
- dirchk:用于存放各个进程的检查点
- dirdat:用于存放数据队列文件
- dirprm:用于存放各进程参数文件
- dirrpt:用于存放各进程报告
- dirpcs:存放各个正在运行的进程信息
Mgr进程配置 (源和目标):
- 以oracle用户登录,在goldengate目录下,执行./ggsci进入命令行界面
- 为mgr进程配置参数:
- GGSCI>edit param mgr
- 会打开一个编辑窗口,在其中输入以下内容然后保存退出。
port 7809
--DYNAMICPORTLIST 7820-7830, 7833, 7835
--autostart er *
--autorestart er *, retries 5, waitminutes 3
--purgeoldextracts /u01/oracle/goldengate/dirdat/*,usecheckpoints, minkeepdays 7 - 启动mgr进程:GGSCI>start mgr
- 说明:参数前面加入两个中划线表示该参数被注释掉
添加表级附加日志(源):
- 以oracle用户进入goldengate目录下执行./ggsci命令进入命令行界面;
- 在GGSCI命令行中登录数据库,为所有要复制的数据表添加trandata:
- ggsci>dblogin userid goldengate, password goldengate
- ggsci>add trandata myschema.mytable1
- 或者
- ggsci>add trandata myschema.*
- 结尾无逗号,注意空格位置
添加抽取进程(源):
- 添加exta进程,从数据库日志中抓取有效数据
- GGSCI> add ext exta, tranlog, begin now
- exta为进程名,一般为ext开头表示是extract进程,后面可以加1-2位字符标识;
- tranlog表示要抽取数据库日志;
- begin now表示从当前时间点开始抽取
抽取进程直接到目标端(源):
- 添加远程队列ra, exta进程捕捉到的有效数据直接写入远程队列 :一般不会采用这样的方式。
- GGSCI> add rmttrail /u01/oracle/goldengate/dirdat/ra, ext exta, MEGABYTES 20
- 每一个ext进程都要对应一个本地或者远程队列,指明ext进程抽取的数据要写到何处。
- Rmttrail参数指定的位置就是目标队列的位置(注意:不是在源主机上的位置),队列一般以路径加上两个标识如ra来表示,ext后面指定该队列是对应哪个ext进程。
- Megabytes表示每个队列文件的大小限制,超过该大小则会滚动写下一个队列文件。
- 注意:如果网络中端,则extract会中止,如果长时间以后再启动则有可能日志已经被删除,因此建议在异地和系统经常要重启或停机的情况下采用添加一个传输进程的方式。
配置传输进程(源):
- 如果是异地复制或者网络不稳定,建议首先抽取到本地,然后再单独配一个进程传输到目标。
- 创建完exta进程后,使用本地队列时为exta进程配置队列如下:
GGSCI> add exttrail /u01/oracle/goldengate/dirdat/la, ext exta, MEGABYTES 20
- 由于此时exta复制到了本地,还需要配置一个传输进程负责将数据原封不动的搬运到目标端:
GGSCI> add extract dpea, EXTTRAILSOURCE /u01/oracle/goldengate/dirdat/la
- 注意此时exttrail指定的是本地队列位置。然后为该传输进程配置远程队列:
GGSCI> add rmttrail /u01/oracle/goldengate/dirdat/ra, ext dpea, MEGABYTES 20
- 其中队列位置是在目标主机上的位置
配置抽取进程参数(源):
- 如果是直接投递到目标端,不使用data pump (对应前面进程的配置方法,一般不这样用)
GGSCI>edit param exta
EXTRACT exta
setenv(NLS_LANG = AMERICAN_AMERICA.AL32UTF8)
setenv(ORACLE_SID = oggsource)
USERID goldengate, PASSWORD goldengate
rmthost oggtarget, mgrport 7809
rmttrail /u01/oracle/goldengate/dirdat/ra
dynamicresolution
--GETUPDATEBEFORES
--NOCOMPRESSDELETES
table myschema.maytable1;
table myschema.maytable2;
--table myschema.*;
--TABLE hq.acct, COLS (col1, col3);
--TABLE hq.acct, COLSEXCEPT (col4); - 如果是使用了data pump,则抽取日志进程exta参数如下:
GGSCI>edit param exta
EXTRACT exta
setenv ( NLS_LANG = AMERICAN_AMERICA.ZHS16GBK )
setenv (ORACLE_SID = oggsource)
USERID goldengate, PASSWORD goldengate
EXTTRAIL /u01/oracle/goldengate/dirdat/la
dynamicresolution
--GETUPDATEBEFORES
--NOCOMPRESSDELETES
table myschema.maytable1;
table myschema.maytable2;
--table myschema.*;
--TABLE hq.acct, COLS (col1, col3); //只复制该表的col1和col3列
--TABLE hq.acct, COLSEXCEPT (col4); //复制该表除col4外的所有列
--相比不使用data pump,其区别就是使用exttrail 代替了rmttrail,也无需再配置rmthost。 - 如果是使用了data pump,还需要配置data pump进程dpea
extract dpea
setenv ( NLS_LANG = AMERICAN_AMERICA.ZHS16GBK )
passthru
--REPORT AT 01:59
--reportrollover at 02:00
rmthost 99.16.1.11,mgrport 7809, compress
rmttrail /oradata/goldengate/dirdat/ra
dynamicresolution
table myschema.mytable1;
table myschema.mytable2;
TABLE hq.acct; //注意此时不用再过滤cols了。
--其中:passthru表示本进程是一个传输进程data pump,无需跟数据库交互,只需要搬运数据即可;
--因为data pump要传输数据到目标,所以需要配置rmthost和rmttrail指定目标主机和队列信息
启动源端进程(源):
- 启动源端所有进程:GGSCI>start ext *
- 表示启动所有的extract进程。也可以使用start直接加进程名,如 start dpea分别启动各个进程。
- 可以通过info all查看各进程状态,正常启动后应当是running状态。
- 注:此时应当保证目标端mgr已经启动,否则可能dpea进程无法启动。
投递进程配置(目标)初始化目标表:
- GoldenGate的extract进程CDC工作方式不负责为目标端建立对应表和初始数据
- 可以通过exp/imp、RMAN、init load进行数据初始化
- 如果目标端不需要历史数据,可以只建立表结构。
投递进程配置(目标端)– 添加投递进程:
- 添加repa进程,将队列中的数据应用到目标库
GGSCI> add rep repa, exttrail /u01/oracle/goldengate/dirdat/ra, nodbcheckpoint
- repa为进程名,一般为rep开头表示是replicat进程,后面可以加1-2位字符标识,一般与ext进程对应;
- exttrail表示要抽取的数据队列,注意是目标端的队列位置;
- nodbcheckpoint表示不使用数据库检查点。
投递进程配置(目标端)– 配置投递进程参数:
- 为投递进程配置参数:
GGSCI>edit param repa
replicat repa
setenv (NLS_LANG = 'SIMPLIFIED CHINESE_CHINA.AL32UTF8')
setenv (ORACLE_SID = GUTJ)
userid goldengate, password ********
--REPORT AT 01:59
--reportrollover at 02:00
reperror default,abend
discardfile /u01/oracle/goldengate/dirrpt/repa.dsc,append, megabytes 10
assumetargetdefs
--allownoopupdates
dynamicresolution
--INSERTALLRECORDS
map myschema.maytable, target myschema.maytable;
map gy25500.F_09B201A_APPEND, target odiu.F_B201A_APPEND, COLMAP ( usedefaults , etltime = @GETENV ("GGHEADER", "COMMITTIMESTAMP")); - 启动目标端投递进程:GGSCI>start rep * 表示启动所有的replicat进程。也可以使用start直接加进程名,如 start repa分别启动各个进程。可以通过info all查看各进程状态,正常启动后应当是running状态,注意:如果涉及到在线数据初始化过程,语法不一样.
安装过程总结:
- 分段配置
- 相关参数使用合理性
- 相对路径和绝对路径的一致性
快速搭建golden gate环境的更多相关文章
- 9款一键快速搭建PHP运行环境的好工具
9款一键快速搭建PHP运行环境的好工具 胡倡萌 2011/02/19 网络资源 77,063 1 内容提要: 建立一个PHP网站,首先需要搭建PHP的开发和运行环境,对于PHP初学者也是一个难 ...
- WAMP Server助你在Windows上快速搭建PHP集成环境
WAMP Server助你在Windows上快速搭建PHP集成环境 原文地址 我想只要爬过几天网的同学都会知道PHP吧,异次元的新版本就是基于PHP的WordPress程序制造出来的,还有国内绝大部分 ...
- CentOS 7快速搭建Nodejs开发环境
Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好.学习Nodejs首先需要会安装环境.这里我介绍如 ...
- 基于 Jenkins 快速搭建持续集成环境--转
源地址:http://www.ibm.com/developerworks/cn/java/j-lo-jenkins/ 持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础 ...
- Jenkins 快速搭建持续集成环境
持续集成概述 什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域 ...
- Linux下快速搭建php开发环境
php开发环境快速搭建 一.Linux下快速搭建php开发环境 1.安装XAMPP for Linux XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包,使用XA ...
- 利用Docker Compose快速搭建本地测试环境
前言 Compose是一个定义和运行多个Docker应用的工具,用一个YAML(dockder-compose.yml)文件就能配置我们的应用.然后用一个简单命令就能启动所有的服务.Compose编排 ...
- 一文教您如何通过 Docker 快速搭建各种测试环境(Mysql, Redis, Elasticsearch, MongoDB) | 建议收藏
欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 高级架构师吐血总结的 <Java 核心知识整理&面试.pdf>资源链接!! 个人网站: https://www.ex ...
- Windows下快速搭建安卓开发环境android-studio
Windows下快速搭建安卓开发环境android-studio 发布时间:2018-01-18 来源:网络 上传者:用户 关键字: 安卓 搭建 Android Windows 快速 环境 Studi ...
随机推荐
- 互联网的大数据神话——NoSQL
本文摘抄于:<纵横大数据--云计算数据基础设施> 何小朝著 Chapter5. NewSQL--关系数据库联邦/联合 5.4.2 互联网的神话 对强一致性的要求放松,是因为 互联网的分布 ...
- 京东专业“卖”队友,魅族手环将亮相1206魅蓝note新品发布会
京东一直是国内顶级的数码产品自营销售渠道,但是,正因为庞大的数据体系和平台特殊性,经常会帮我们发现一些“好玩的”保密性较高的东西,譬如价格.信息.谍照等.而在最新上线的京东超级品牌日活动页面上,专业“ ...
- SpringMVC(五)@RequestHeader和@CookieValue
通过使用@RequestHeader获取请求头 通过使用@CookieValue获取cookie值 代码: 1: @Controller 2: public class TestHeader_Cook ...
- jsoup解析页面
package com.java.jsoup; /** * jsoup解析网页 * @author nidegui * @version 2019年4月29日 下午5:12:02 * */ impor ...
- 为my_string类创建复制构造函数copy constructor ,拷贝函数名和类同名
为下面的my_string类创建一个复制构造函数,并将定义该类的代码提交. my_string类的定义: class my_string { char *s; public: my_string(ch ...
- Java常用类(I)-时间和日期
java开发中,常涉及到时间的处理,这里就做一个总结,同样也是一个笔记. 相关类及概念 1. java.util.Date:表示特定的瞬间,精确到毫秒.由于API 不易于实现国际化,日期和时间字段之间 ...
- Map之HashMap的get与put流程,及hash冲突解决方式
在java中HashMap作为一种Map的实现,在程序中我们经常会用到,在此记录下其中get与put的执行过程,以及其hash冲突的解决方式: HashMap在存储数据的时候是key-value的键值 ...
- [tyvj-1061]Mobile Service 动态规划
滚动数组优化一波. 原设计状态:表示三个员工分别的位置和执行到的任务. 考虑到:执行完第i个任务,一定有员工在pos[i],那么就可以压一维,空间复杂度就算不滚动数组也可以了. (喜闻乐见,今天第一次 ...
- Linux下常用函数-字符串函数
inux下常用函数-字符串函数 atof(将字符串转换成浮点型数) 相关函数 atoi,atol,strtod,strtol,strtoul 表头文件 #include <stdlib ...
- Mybatis-Plus的BaseMapper的使用
Mybatis-Plus 是一款 Mybatis 动态 SQL 自动注入 Mybatis 增删改查 CRUD 操作中间件, 减少你的开发周期优化动态维护 XML 实体字段. 下面简单举例,调用Base ...