快速搭建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 ...
随机推荐
- box-shadow 阴影剖析
box-shadow的四个值分别是左右偏移,上下偏移,向四周模糊扩算,距离四周边缘的距离,最后一个是阴影的颜色值,如图示例: 上代码,复制代码,就可以看到上图的效果 <!DOCTYPE html ...
- Swift语法3.03(类型Types)
类型 在Swift中,有两种类型:命名型类型和复合型类型.命名型类型是在定义时可以给定的特定名字的类型.命名型类型包括类,结构体,枚举和协议.例如,自定义的类MyClass的实例拥有类型MyClass ...
- Memory management in RxSwift – DisposeBag
I’ve noticed a lot of beginners in RxSwift ask about DisposeBag. DisposeBag isn’t a standard thing i ...
- js prototype 原型
//https://xxxgitone.github.io/2017/06/10/JavaScript%E5%88%9B%E5%BB%BA%E5%AF%B9%E8%B1%A1%E7%9A%84%E4% ...
- hibernate增删改查总结
hibernate操作的都是基于对象的(曾save删delete改update) 进行hql查询是设置参数从零开始(session.setParameter(0,#)) hql查询设置参数可以是其他( ...
- BZOJ 1266: [AHOI2006]上学路线route Floyd_最小割
十分简单的一道题. 图这么小,跑一边 Floyd 就得到第一问最短路径的答案. 考虑第二问怎么求:我们可以先将最短路径组成的图从原图中抽离出来,构成新图 $G$. 我们发现,只要 $G$ 的起点与终点 ...
- 洛谷P1297 [国家集训队]单选错位_数学期望
考虑第 iii 位, 那么当前共有 a[i]a[i]a[i] 种选项,那么当前选项正确的情况就是下一个被误填的答案与当前答案相同.换句话说,当前答案一共有 a[i]a[i]a[i] 种可能,而下一个答 ...
- BZOJ 2333 [SCOI2011]棘手的操作 (可并堆)
码农题.. 很显然除了两个全局操作都能用可并堆完成 全局最大值用个multiset记录,每次合并时搞一搞就行了 注意使用multiset删除元素时 如果直接delete一个值,会把和这个值相同的所有元 ...
- UVA 12633 Super Rooks on Chessboard (生成函数+FFT)
题面传送门 题目大意:给你一张网格,上面有很多骑士,每个骑士能横着竖着斜着攻击一条直线上的格子,求没被攻击的格子的数量总和 好神奇的卷积 假设骑士不能斜着攻击 那么答案就是没被攻击的 行数*列数 接下 ...
- django rest-farme-work 的使用(2)
serialization (序列化) 本测试项目例子地址为: tomchristie/rest-framework-tutorial 开始构建一个新的程序 创建一个新的环境 virtualenv e ...