win7系统oracle搭建ogg,OGG_windows搭建实验

windows卸载Oracle GoldenGate产品的方法

1、进入源或目标GG配置目录,输入以下命令:

gg> stop *

gg> stop mgr

2、删除Oracle GoldenGate目录

3、运行windows命令,执行sc delete [服务名]

此服务器名就是./GLOBALS中的MGRSERVNAME

ggsci>install

addservice其实就是调用OGG目录中的mgr.exe

标准搭建步骤

实验环境介绍

源和目标在同一台服务器上,因为服务器安装了DB客户端和DB server,所以ggsci默认找DB客户端的tns,为了不引起问题,在DB客户端和DB server的tns中都加入了luxus和luxus2项

源:win7+ORACLE_11GR1_win32(db_name是luxus)+OGG_11GR1_win32

目标:win7+ORACLE_11GR1_win32(db_name是luxus2)+OGG_11GR1_win32

1.解压OGG_11GR1_win32至OGG源d:\gg\luxus和OGG目标d:\gg\luxus2

2.源库luxus保证

alter database archivelog;

select force_logging from v$database;

yes

开启方式:alter database force logging;

select supplemental_log_data_min from

v$database; yes

开启方式:alter database add supplemental log data;

alter system set recyclebin=off

scope=spfile

3.源库luxus和目标库luxus2都执行如下

create user ggs identified by ggs

default tablespace users temporary tablespace temp;

grant dba to ggs; //建立goldengate管理用户

conn ggs/ggs

create table demo(id number primary

key,ename varchar2(10)); //创建测试表,生产环境不用这这样创建这样的测试表

4.OGG源端cd d:\gg\luxus执行ggsci后,执行create subdirs

5.OGG目标端cd d:\gg\luxus2执行ggsci后,执行create subdirs

6.OGG源端ggsci后edit params ./GLOBALS输入MGRSERVNAME ggsource

7.exit退出源ggsci后install addservice

8.源ggsci后edit params mgr输入port 7809

9.源ggsci后edit params eiextt输入

EXTRACT EIEXTT

USERID ggs@luxus, PASSWORD ggs

EXTTRAIL ./dirdat/tt

TABLE ggs.*;

TABLE schemaname.*;

做好了DDL的配置的情况下,以上红色两行只是相对于对源库和目标库对一个初始化,以后源库新增用户,新用户下新增的对象都会自动同步到目标库。

10.源ggsci执行add extract eiextt,tranlog,begin now

11.源ggsci执行add exttrail ./dirdat/tt,extract eiextt,

megabytes 5

12.源ggsci执行edit params epmptt输入

EXTRACT EPMPTT

PASSTHRU

RMTHOST localhost,MGRPORT 7909

RMTTRAIL ./dirdat/tt

TABLE ggs.*;

TABLE schemaname.*;

做好了DDL的配置的情况下,以上红色两行只是相对于对源库和目标库对一个初始化,以后源库新增用户,新用户下新增的对象都会自动同步到目标库。

13.源ggsci执行add extract epmptt,exttrailsource ./dirdat/tt

14.源ggsci执行add rmttrail ./dirdat/tt,extract

epmptt,megabytes 5

15.目标ggsci执行edit params ./GLOBALS输入

MGRSERVNAME ggtarget

CHECKPOINTTABLE ggs.ggschkpt

16.exit退出目标ggsci后install addservice

17.目标ggsci执行edit params mgr输入

port 7909

18.目标ggsci执行dblogin userid ggs@luxus2,password ggs

add checkpointtable ggs.ggschkpt

add replicat poratt,exttrail

./dirdat/tt,checkpointtable ggs.ggschkpt

19.目标ggsci执行edit param poratt输入

replicat poratt

userid ggs@luxus2, password ggs

assumetargetdefs

reperror default, discard

discardfile ./dirrpt/poratt.dsc,

purge

map ggs.*, target ggs.*;

map schemaname.*, target schemaname.*;

做好了DDL的配置的情况下,以上红色两行只是相对于对源库和目标库对一个初始化,以后源库新增用户,新用户下新增的对象都会自动同步到目标库。

20.源库ggsci执行dblogin userid ggs@luxus,password ggs

add trandata ggs.*

add trandata schemaname.*

做好了DDL的配置的情况下,以上两行只是相对于对源库和目标库对一个初始化,以后源库新增用户,新用户下新增的对象都会自动同步到目标库。

21.源端ggsci执行start mgr和start *

检查是否正常启动的命令为ggsci>status mgr或ggsci>status *

22.目的端ggsci执行start mgr和start *

检查是否正常启动的命令为ggsci>status mgr或gsci>status *

上述配置只是配置了dml相关(只要commit后就会同步到目标库,不管目标库是否归档模式),如果源库增加一张表,压根不会同步到目标库

DDL的标准配置新增如下

1.源实例luxus下执行SQL> GRANT EXECUTE ON utl_file TO

ggs;

2.源和目标都关闭所有进程和服务

ggsci>stop mgr

ggsci>stop *

3.源ggsci下执行EDIT PARAMS ./GLOBALS新增如下

GGSCHEMA ggs

GGSCHEMA schemaname

4.源实例luxus到d:\gg\luxus\下sqlplus / as sysdba执行如下

SQL> @marker_setup.sql

SQL> @ddl_setup.sql

SQL> @role_setup.sql

SQL> GRANT GGS_GGSUSER_ROLE to

ggs;

SQL> @ddl_enable.sql

SQL> @marker_status.sql

SQL> exit

5.目标实例luxus2到d:\gg\luxus2\下sqlplus / as sysdba执行如下

SQL> @marker_setup.sql

SQL> @ddl_setup.sql

6.源ggsci下执行edit params eiextt新增如下(必须加,否则就不会捕获ddl的相关信息,只会捕获dml相关信息)

DDL INCLUDE ALL

7.源和目标ggsci启动所有进程和服务

ggsci>start mgr

ggsci>start *

后面新增的表没有主键也可以正常同步到目标库,且新建用户后新用户的表会自动同步到目标库,不再需要重新对参数文件新增map schemaname.*, target schemaname.*;且新增用户及用户权限都会自动同步到目标库

源端的捕获进程对数据的存放路径,放在了源端

3d44d24c065890ac939ce10569845619.png

源端的传输进程对数据的存放路径,放到了目标端

e30a8e659abd649fbe70e7db2ebb5fd1.png

源端配置文件信息

mgr进程配置文件./GLOBALS的配置

MGRSERVNAME

ggsource

GGSCHEMA ggs

EXTRACT抽取进程名为Eiextt的配置

EXTRACT EIEXTT

USERID

ggs@luxus, PASSWORD ggs

EXTTRAIL

./dirdat/tt

DDL INCLUDE ALL

TABLE ggs.demo;

TABLE ggs.*;

EXTRACT传输进程名为Epmptt的配置

EXTRACT EPMPTT

PASSTHRU

RMTHOST

localhost,MGRPORT 7909

RMTTRAIL

./dirdat/tt

TABLE ggs.demo;

TABLE ggs.*;

目标端配置文件信息

mgr进程配置文件./GLOBALS的配置

MGRSERVNAME

ggtarget

CHECKPOINTTABLE

ggs.ggschkpt

replicat复制进程名为poratt的配置

replicat poratt

userid

ggs@luxus2, password ggs

assumetargetdefs

reperror

default, discard

discardfile

./dirrpt/poratt.dsc, purge

map ggs.demo,

target ggs.demo;

map ggs.*,

target ggs.*;

实验中遇到的故障及解决方法

1.源端的传输进程中也加入了DDL INCLUDE ALL一段配置后,报错如下

解决方法:传输进程去掉DDL INCLUDE ALL这段配置后正常

2015-06-01 16:58:59ERROROGG-00528Oracle GoldenGate

Capture for Oracle, EPMPTT.prm:The DDL

parameter is not supported for this data source. Please remove this parameter

and all DDL operations will be propagated in pass-through (PASSTHRU) mode.

2.在源中执行了ddl的sql语句后,源schema产生了一些表,但是目标schema没有表,导致replicat进程无法启动,报错如下

解决方法:把源中的数据expdp、impdp到目标库才能正常启动目标中的replicat进程,进程

2015-06-03 15:10:54ERROROGG-00199Oracle GoldenGate

Delivery for Oracle, FUZHI.prm:Table

GGS.GGS_SETUP does not exist in target database.

2015-06-03 15:10:54ERROROGG-01668Oracle GoldenGate

Delivery for Oracle, FUZHI.prm:PROCESS

ABENDING.

一些实验过程中遇到的问题的问答

1.A1、A2两表,源端和目标端的配置文件中只配置了schema.A1,A2更新后目标的A2会更新吗(增删改)

A2表不会更新,连新增都不会同步到目标的A2

2.A1、A2两表,源端和目标端的配置文件中配置了schema.*,A2更新后目标的A2会更新吗(增删改)

增删正常,改不行,如果想让改也正常,必须在源库中增加如下两句,此下语句执行之前的的改不会同步到目标库,执行之后产生的修改才会同步到目标库

dblogin userid

ggs@luxus,password ggs

add trandata schema.*

3.A1、A2两表,源端和目标端的配置文件中先配置schema.*,抽取进程配置文件有有DDL INCLUDE ALL参数,复制进程配置文件没有DDL INCLUDE ALL参数,创建A3,并更新A3(增删改),看目标A3更新吗

正常更新

说明新增的表,不需要在源端重新执行一遍add trandata ggs.*即可正常改

4.A1、A2两表,源端和目标端的配置文件中先配置schema.A1,抽取进程配置文件有DDL INCLUDE ALL参数,复制进程配置文件没有DDL INCLUDE ALL参数,创建A4,看目标创建A4吗,并更新A4(增删改),看目标A4更新吗

建A4表成功

但是A4表新增都不成功,更不要说什么删改了

5.ddl配置好了的情况下,源的抽取进程去掉DDL INCLUDE ALL参数,源新增一个张A,会同步到目标库吗

不会同步过去

6.DDL INCLUDE ALL的配置放在配置文件什么位置没有什么影响,可以放最上面也可以放最下面,也可以放中间,并不需要考虑在什么适当位置增加下列内容:DDL INCLUDE ALL

7.中的所有服务并退出ggsci,否则会报错有session连接服务器,yes or no进行选择继续还取消

8.SQL>alter database add

supplemental log data;将数据库附加日志打开后还需要对每张表执行add trandata吗?

需要!

如果不执行add trandata,insert同步没有问题(ORACLE数据库),但是在同步update或delete操作时,就会因为丢失主键报同步错误。不开启表级的最小附加日志,update的redo信息不记录没有进行更新的字段信息,如主键不更新的话主键不记录在redo中,所以会导致同步失败。表级补全日志需要在最小补全日志打开的情况下才起作用,只开启最小补全日志(alter database add supplemental log

data;),redolog记录的信息还不够全面,必须再使用add trandata开启表级的补全日志以获得必要的信息。

9.源端和目标表可以*.*如此模糊配置所有schema.objects吗

不行

否则抽取进程、传输进程、复制进程都启动不了,会报错OGG-00259 Schema name cannot be wildcarded

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值