一、GoldenGate实施环境

source database:oracle 11.2.0.3

target  database:oracle 11.2.0.3

需要配置的进程如下:

source database:extract、data pump

target database:replicat

说明如下:

1、主提取进程首先将trail生成在本地,然后datapump读取本地trail再发送到目标服务器,即便网络故障,主提取进程仍然能随着事务生成trail文件,而datapump则会暂时停止传输,等待网络通畅后在将堆积的本地trail文件发送至目标服务器,从而实现了断点传输的功能。在实际应用中,每一个同步流程都应该配置datapump以应对网络问题。

2、配置进程检查点(checkpoint):检查点记录了进程读写的位置信息用以数据恢复,目的是为了防止进程因系统、网络崩溃而导致的数据丢失。oracle推荐将复制进程的检查点信息存放到数据库表中进行管理:

首先在./globals参数文件中加入:

CHECKPOINTTABLE [<owner>.<table>] --指定的检查点记录表

然后运行:

GGSCI> DBLOGIN USERID <db_user>, PASSWORD <pw>

GGSCI> ADD CHECKPOINTTABLE [<owner>.<table>] --生成这个检查点记录表

3、GoldenGate的DDL同步只支持两边一致的数据库,限制条件较多(如不能进行字段映射、转换等),具体可以参考官方文档。DDL的抓取不是通过日志抓取来捕获的,而是通过触发器来实现,所以对源数据库的性能影响要比单纯的数据抓取要大很多,可谓屏弃了GoldenGate的优势。尽量不要使用GoldenGate的DDL复制功能,在大多数业务系统中,实际上不会有频繁的数据库结构变动,完全可以通过手工的方式进行维护。确实有大量DDL操作的环境,如果可以,还是推荐物理DG之类的替换方案;确实要使用GoldenGate的DDL复制,请详细参考官方文档的限制和说明。

4、如果需要配置DDL支持,需运行如下几个脚本:marker_setup.sql,ddl_setup.sql,role_setup.sql,grant GGS_GGSUSER_ROLE to <user>; ddl_enable.sql

5、配置source和target端tnsnames.ora

6、查询是否有不支持的数据类型

7、是否有压缩表和不支持的表类型

8、禁用容灾端数据库的外键,trigger和有DML操作的JOB

二、GoldenGate软件安装,

2.1 Unix下安装 在source database 和 target database 都执行如下操作:

# su - oracle

/home/oracle> mkdir goldengate

在此goldengate下面解压下载的安装包

/home/oracle>cd goldengate

/home/oracle/goldengate> ldd ggsci

将列出所有需要的lib和当前缺少的

添加环境变量

在/home/oracle/. profile文件里添加如下内容:

export PATH=/home/oracle/goldengate:$PATH

export LIBPATH =/home/oracle/goldengate:$ORACLE_HOME/lib;

export GGATE=/home/oracle/goldengate

注:

IBM AIX:LIBPATH

HPUX: SHLIB_PATH

SOLARIS/LINUX:LD_LIBRARY_PATH

使环境变量生效

source /home/oracle/. profile

2.2创建目录 使用ggsci工具,创建必要的目录

/home/oracle/goldengate > ./ggsci

--调用ggsci 工具

GGSCI> create subdirs

Creating subdirectories under currentdirectory /home/oracle/goldengate

Parameter files                /home/oracle/goldengate/dirprm: created

Report files                   /home/oracle/goldengate/dirrpt: created

Checkpoint files               /home/oracle/goldengate/dirchk: created

Process status files           /home/oracle/goldengate/dirpcs: created

SQL script files               /home/oracle/goldengate/dirsql: created

Database definitions files     /home/oracle/goldengate/dirdef: created

Extract data files             /home/oracle/goldengate/dirdat: created

Temporary files                /home/oracle/goldengate/dirtmp: created

Veridata files                 /home/oracle/goldengate/dirver: created

Veridata Lock files            /home/oracle/goldengate/dirver/lock: created

Veridata Out-Of-Sync files     /home/oracle/goldengate/dirver/oos: created

Veridata Out-Of-Sync XML files/home/oracle/goldengate/dirver/oosxml: created

Veridata Parameter files       /home/oracle/goldengate/dirver/params: created

Veridata Report files          /home/oracle/goldengate/dirver/report: created

Veridata Status files          /home/oracle/goldengate/dirver/status: created

Veridata Trace files           /home/oracle/goldengate/dirver/trace: created

Stdout files                   /home/oracle/goldengate/dirout: created

以上就是GG 的安装,在source 和target database 都执行。

三、配置Source database

注意:只配置Source database,而非target database

归档模式、附加日志、强制日志

Oracle数据库需要开启归档日志,并开启最小附加日志模式。

SQL>archive log list;(需要mount状态,并重启数据库,步骤略)

SQL> select supplemental_log_data_min from v$database; --查看是否开启了最小附加日志模式

SQL> alter database add supplemental log data; --开启最小附加日志模式

实际生产应用中,最好同时打开ORACLE的强制日志模式, 以防止源数据库因直接路径加载忽略redo生成而导致这部分数据无法同步:

SQL> select force_logging from v$database;

SQL> Alter database force logging;

开启最小附加日志模式还不够,还需要打开表级的补全日志, 可以在GoldenGate中使用add trandata命令强制重做日志记录主键值, 以保证在目标端能成功复制:

GGSCI> dblogin userid username,password pw --GoldenGate中登录OARCLE数据库

GGSCI>add trandata username.<tablename> --表名可以使用通配符

注:此方法必须要求表有主键值或者非空唯一索引键, 如果需要同步的只是一个用户或者某几个用户下的某些表, 则推荐此方法即可,如下步骤则不需要。

GGSCI> add trandata coss3.per_test,nokey,cols(sampletime, objectid)

--无主键指定字段补全的示例

也可以在数据库中打开:

SQL> alter table <tablename> add supplemental log data (primary key) columns;

千万不要小看这步日志设置,其实在GoldenGate的配置中,这步是最容易出错的环节。 如果开启DDL复制做冗灾备份,最好直接在数据库级别打开补全日志:

SQL> alter database add supplemental log data (primary key,unique,foreign key) columns;

检查一下,全是YES就OK了(整个数据库级别补全)

SQL> select supplemental_log_data_min,

supplemental_log_data_pk,supplemental_log_data_ui

from v$database;

关于Oracle补全日志,如果表中无主键, 则补全一个非空唯一索引列, 如果非空唯一索引键也没, 那么会补全除了LOB和LONG类型字段以外的所有列,更多信息请参考官方文档。

四、golden gate进程配置

4.1 在Source和Target上配置Manager Source:

GGSCI>edit param mgr --配置GoldenGate主进程参数

port 7801 --GoldenGate主进程端口号

DYNAMICPORTLIST 7802-7810 -GoldenGate为进程间通讯动态分配的端口段,注意这里如果分配的端口端少于extract-replicat进程对的话,会导致部分进程因通讯失败而出错。

AUTOSTART EXTRACT *

AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 7

PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 3

LAGREPORTHOURS 1

LAGINFOMINUTES 30

LAGCRITICALMINUTES 45

target:

GGSCI>edit param mgr

port 7801

DYNAMICPORTLIST 7802-7810

AUTOSTART REPLICAT *

AUTORESTART REPLICAT *,RETRIES 5,WAITMINUTES 7

PURGEOLDREPLICAT S ./dirdat/*,usecheckpoints, minkeepdays 3

LAGREPORTHOURS 1

LAGINFOMINUTES 30

LAGCRITICALMINUTES 45

保存,生成的参数文件保存在GG_HOME\ dirprm下

然后可以启动GoldenGate主控制进程:

GGSCI>start mgr

GGSCI>info all --查看进程状态

如果进程MANAGER状态显示为RUNNING则表示主进程已在运行

4.2 source端添加提取进程(extract process) 增加一个抽取:

GGSCI > add extract ext1,tranlog, begin now

GGSCI > edit params ext1

EXTRACT ext1

setenv (NLS_LANG="AMERICAN_AMERICA.ZHS16GBK")

userid tianch3,password tianch3

GETTRUNCATES

REPORTCOUNT EVERY 5 MINUTES, RATE

numfiles 50000

DISCARDFILE ./dirrpt/extsa.dsc,APPEND,MEGABYTES 50

WARNLONGTRANS 2h,CHECKINTERVAL 3m

EXTTRAIL ./dirdat/sa

DYNAMICRESOLUTION

table rme_eqp;

4.3 source端添加data pump进程 GGSCI> ADD EXTRACT dpext1, EXTTRAILSOURCE ./dirdat/sa, BEGIN now

GGSCI>view params dpext1

EXTRACT dpext1

RMTHOST 172.16.1.81, MGRPORT 7801

PASSTHRU --直通模式或普通模式

numfiles 50000

RMTTRAIL ./dirdat/ra

DYNAMICRESOLUTION

table rme_eqp;

GGSCI> add rmttrail ./dirdat/ra extract dpext1

4.4 target端创建表空间及授权

Create tablespace tianch datafile size 10240m;

CREATE USER sjcktb IDENTIFIED by oracle DEFAULT TABLESPACE tianch;

GRANT CONNECT TO sjcktb;

GRANT RESOURCE TO sjcktb;

GRANT CREATE SESSION to sjcktb;

GRANT ALTER SESSION to sjcktb;

GRANT CREATE TABLE TO sjcktb;

GRANT FLASHBACK ANY TABLE TO sjcktb;

GRANT SELECT ANY DICTIONARY TO sjcktb;

GRANT SELECT ANY TABLE TO sjcktb;

GRANT ALTER ANY TABLE TO sjcktb;

GRANT UPDATE ANY TABLE TO sjcktb;

GRANT DELETE ANY TABLE TO sjcktb;

授权比较繁琐,有直接给dba权限的。

4.5 增加target进程检查点 Add a Replicat checkpoint table

GGSCI >edit params ./globals

CHECKPOINTTABLE sjcktb.checkpoint

GGSCI > dblogin userid sjcktb, password sjcktb

Successfully logged into database.

GGSCI >add CHECKPOINTTABLE sjcktb.checkpoint

4.6 配置target同步队列

GGSCI>add replicat rep1 exttrail ./dirdat/ra, checkpointtable sjcktb.checkpoint

GGSCI>view param rep1

REPLICAT rep1

USERID sjcktb,PASSWORD sjcktb

SETENV (NLS_LANG = "American_America.ZHS16GBK")

REPORT AT 01:59

REPORTCOUNT EVERY 30 MINUTES, RATE

REPERROR DEFAULT, ABEND

numfiles 50000

HANDLECOLLISIONS --去重

assumetargetdefs

DISCARDFILE ./dirrpt/repsa.dsc, APPEND, MEGABYTES 50

GETTRUNCATES

ALLOWNOOPUPDATES

map rme_eqp, target sjcktb.rme_eqp;

五、start源端进程,使用数据泵初始化加载

GGSCI>start mgr

GGSCI>start extract ext1

GGSCI>start extract dpext1

GGSCI>info all

确认进程全部running

实际部署时需要注意正确的执行顺序,大致可以分为以下几步:

(1) 源端和目标端创建配置各个同步进程。

(2) 开启源端同步抓取进程,开始捕获变化。

(3) 开启初始化进程,开始数据初始化加载。

(4) 等初始化加载结束,开启目标端复制应用进程,开始实时同步应用。

六、golden gate维护

1、启动源端管理进程

GGSCI > start mgr // 启动 manager进程

2、启动所有进程

GGSCI > start ext * //启动所有抽取进程

3、查看进程状态是否为Running(表示已经启动);

GGSCI > info ext * //查看所有进程信息

4、SCI > start rep * //启动所有投递进程

5、GGSCI>info extXX,showch //查询extXX进程回滚检查点

6、GGSCI > info all //查询所有进程状态

7、GGSCI > view report rep1 //查看复制进程报告

8、GGSCI > view ggsevt //就是我们在goldengate目录下看到的ggserr.log

GoldenGate实施步骤的更多相关文章

  1. remoting blazeds 实施步骤

    remoting 实施步骤 1.创建 --web project 和 -- Flex project 2.在web project 下创建 -- com.HelloRemoting: package ...

  2. Mysql主从同步在线实施步骤【适合大数据库从库配置】

    Mysql主从同步在线实施步骤[适合大数据库从库配置] MySQL的主从搭建大家有很多种方式,传统的mysqldump方式是很多人的选择之一,但比较适合在新实例中实施,对于较大的数据库则存在停机等不可 ...

  3. SQLSERVER2016 无域控AlwaysOn 实施步骤

    SQLSERVER2016 无域控AlwaysOn 实施步骤 步骤: 一.安装3个windows server 2016系统 1)在3台机器建立具有administrators权限的相同账号密码,本例 ...

  4. SIHA环境修改主机名实施步骤

    目 录 1 实施需求 2 修改主机名 2.1 停止HAS服务 2.2 修改主机名 3 重新配置服务 3.1 使用root用户重新配置CSS & OHAS服务 3.2 设置cssd自动启动属性 ...

  5. AnguarJS测试的实施步骤整理

    最近开发用到了AngularJS,据说目前大型系统都用这个作为前端.最近参与的一个项目,web部分重度使用了AngularJS,整个前端架构有组织有纪律.所谓的有纪律就是说,有比较完善的测试用例,用上 ...

  6. 转://SIHA环境修改主机名实施步骤

    目 录1 实施需求 2 修改主机名 2.1 停止HAS服务 2.2 修改主机名 3 重新配置服务 3.1 使用root用户重新配置CSS & OHAS服务 3.2 设置cssd自动启动属性 3 ...

  7. Mysql 多实例实施步骤

    基本理论:利用同一套安装程序,不同配置文件,不同启动程序,不同数据目录.有公用资源,也有私有资源. 实现步骤: 1.正常安装mysql,二进制安装或者编译安装. 2.创建mysql多实例总目录,总目录 ...

  8. AIX 6.1 Oracle 10G 数据库GoldenGate实施

    安装环境说明: 源端:AIX 6.1 10.190.1.215 目标端:Linux 10.191.1.10 1:源端创建goldengate 表空间. 表空间的要求:最小500m,大点3-5G,设置自 ...

  9. Oracle dataguard切换实施步骤

    主备库的切换主要在两种情况下切换,Switchover和Failover,这两种切换都需要手工执行完成,不建议自动执行.主库端 192.168.411.20备库端 192.168.411.221 一是 ...

随机推荐

  1. 通过代码在eclips中添加Maven Dependencies依赖包的简单方法

    条件是已经正确解压了maven包并配置好了环境变量: 然后新建一个maven项目,(可在other中找到) 然后打开最下边的配置文件pom.xml: 打开后在文本下边选项选pom.xml选项: 在&l ...

  2. js数据类型:引用和5种基本数据类型

    javascript有2种基本数据类型:引用和基本数据类型 基本数据类型又有5个分类:布尔型.字符串.数值.undefined.NULL.

  3. Java 中的锁——Lock接口

    Java SE5之后,并发包中新增了Lock接口(以及相关实现类)用来实现锁功能.虽然它少了(通过synchronized块或者方法所提供的)隐式获取释放锁的便捷性,但是却拥有了锁获取与释放的操作性. ...

  4. 1.WP8.1开发_去除闪动效果,直接进入首页

    有时候希望打开软件的时候,不出现闪屏,而直接进入到第一个页面. 把第一个页面作为闪屏,可以制作一些进度条  和动画等... 很简单,有两种方法去除闪屏. 1.删除项目下 Assets 文件夹里面的Sp ...

  5. JQuery和原生JS跨域加载JSON数据或HTML。

    前提:有时候需要在网页上,加载另一个网站上的数据.或者加载另一个网站上的一个页面.Js的Ajax请求不具备跨域功能,可以使用JQuery来实现. 网页端JS代码: $(function () { $. ...

  6. MFC画笔作用域的问题

    今天发现了程序中的一个BUG.功能是在鼠标经过图形时,对图形进行加粗重绘.默认使用白色画刷.为防止白色背景下看不清,在白色背景下改用黑色画刷.代码如下 CPen* pOldPen;if (pDC-&g ...

  7. 读书笔记 effective c++ Item 37 永远不要重新定义继承而来的函数默认参数值

    从一开始就让我们简化这次的讨论.你有两类你能够继承的函数:虚函数和非虚函数.然而,重新定义一个非虚函数总是错误的(Item 36),所以我们可以安全的把这个条款的讨论限定在继承带默认参数值的虚函数上. ...

  8. MySQL中的一些内置函数

    mysql> select now(); #获取当前的日期和时间 +---------------------+ | now() | +---------------------+ | -- : ...

  9. HTMLElement

    参考文档:MDN HTMLElement 一.继承关系 所有HTML元素都是由HTMLElement或者其更具体的子类型来表示的. HTMLElement继承自Element,并实现了GlobalEv ...

  10. SQLServer数据库中开启CDC导致“事务日志空间被占满,原因为REPLICATION”的原因分析和解决办法

    本文出处:http://www.cnblogs.com/wy123/p/6646143.html SQLServer中开启CDC之后,在某些情况下会导致事务日志空间被占满的现象为:在执行增删改语句(产 ...