快速搭建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 ...
随机推荐
- 模拟试题A
模拟试题A 一.单项选择题(2′*12=24′) 1.下面各种坐标变换中,会产生变换前后维度的改变的是( ) A)建模变换 B)观察变换 C)投影变换 D)视口变换 2.下列描述深度缓冲消隐算法的特点 ...
- MyBatis 基础入门
MyBatis 是一个半自动化的持久层的框架,能让开发者专注SQL本身 JDBC 连接数据库的硬编码问题,通过config,mapper配置文件解决 Mybatis开发需要关注的文件 l POJO类( ...
- BZOJ 1264: [AHOI2006]基因匹配Match DP_树状数组_LCS转LIS
由于有重复数字,我们以一个序列为基准,另一个序列以第一个序列每个数所在下标为这个序列每个数对应的值. 注意的是,拆值的时候按照在第一个序列中的位置从大到小排,强制只能选一个. 最后跑一边最长上升子序列 ...
- Django:Admin,Cookie,Session
一. Admin的配置 1.Admin基础设置 admin是django强大功能之一,它能够从数据库中读取数据,呈现在页面中,进行管理.默认情况下,它的功能已经非常强大,如果你不需要复杂的功能,它已经 ...
- 邓_ php SESSION
学会php session可以在很多地方使用,比如做一个后台登录的功能,要让程序记住用户的session,其实很简单,看了下面的文章你就明白了. PHP session用法其实很简单它可以把用户提交的 ...
- RobotFrameWork+APPIUM实现对安卓APK的自动化测试----第四篇【AppiumLibrary实用函数介绍】
http://blog.csdn.net/deadgrape/article/details/50585677 通过前几篇的讲述,我相信大家已经对RF+Appium的框架已经有所了解了. 接下来我告诉 ...
- java import跨包引用类理解
当前类要用其他类时,import具体包路径+.+具体的类 import引入的是被引用类的class文件,所以当我们build path第三方jar包时, 要用他们的类,要把jar包add to bui ...
- [HTML5] Why ARIA?
For some reason, you build a custom checkbox component, if without ARIA in mind, basiclly this site ...
- Java - 经常使用函数Random函数
http://blog.csdn.net/pipisorry/article/details/44411541 Random()函数生成随机数 java.util.Random 在Java的API帮助 ...
- Android 四大组件学习之BroadcastReceiver四
本节学习系统中特殊的广播接收者. 我们前面几节不是说了,当广播接受者一旦注冊到系统中,当系统发送的广播和你注冊的广播的action匹配时,系统就会启动广播接收者所在的进程.除非用户手动停止广播接收者所 ...