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

news/2025/3/21 13:20:50/

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


http://www.ppmy.cn/news/928269.html

相关文章

【HDU4966】GGS-DDU

题意 有n种科目,每个科目都有一个最高的等级a[i]。开始的时候,每个科目的等级都是0。现在要选择一些课程进行学习使得每一个科目都达到最高等级。这里有m节课可供选择。对于每门课给出L1[i],c[i],L2[i],d[i],money[i],要选择这门课…

HDU 4966 GGS-DDU [最小树形图]

题意 一共有n门课,每门课有a[i]个阶段,一开始每门课都在第0个阶段,我们需要到达所有课的最高的阶段,现在有m个培训班,每个培训班需要c[i]课程满足所在阶段大于等于l1,那么就可以到达d课程l2的阶段&#xf…

ORA-04098: trigger ‘SYS.GGS_DDL_TRIGGER_BEFORE‘ is invalid and failed re-validation处理

作者:IT邦德 中国DBA联盟(ACDU)成员,目前从事DBA及程序编程 (Web\java\Python)工作,主要服务于生产制造 现拥有 Oracle 11g OCP/OCM、 Mysql、Oceanbase(OBCA)认证 分布式TBase\TDSQL数据库、国…

GGS.INI详解

先看一下典型的配置文件 [XN]WellName=A井WellField=JHJingTongName=井筒1JingTongField=JTJBSJTableName=JBSJFieldAllTableName=FIELDALLXunBaoTableName=DZXBLJJBSJTableName=LJJBSJYXGWJMSTableName=YXGWJMSTGCXTableName=JSJGZTCXTableName=ZTCXWellDiagramTitle=油气解释…

HDU 4966:GGS-DDU

HDU:GGS-DDU 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid4966 题目大意:有$n$个课程,初始都在等级$0$,每个课程需要达到等级$a[i]$.满足$x$课程等级大于等于$dx$时,可花费$w$使得$y$课程等级达到…

OGG-误删DDL触发器ggs_ddl_trigger_before恢复

1.说明 在RAC环境中,由于两个节点都部署了OGG,而且部署同一套。而其中一个节点的OGG后期不需要了,需要卸载掉。 卸载OGG:https://blog.csdn.net/qianglei6077/article/details/87254076 在卸载时候忽略了一个问题,把触发器ggs_dd…

ORA-01653: unable to extend table OGGADM.GGS_MARKER by 8192 in tablespace OGG

根据报错现象,处理思路一般是扩大表空间即可。 但实际登录后发现,ogg表空间只有一个数据文件,而且已经增长到最大32G.所以执行DLL操作无法成功。 尝试增加数据文件,报同样错误。 所以考虑删除可清理的大表数据,以释…

GGS WARNING 218 Aborted grouped transaction on

描述: 通过linux系统复制表emp1到windows系统,发生如下错误: GGS WARNING 218 Aborted grouped transaction on 解决办法 1、在源系统 EDIT PARAMS defgen --内容 DEFSFILE /u01/oracle/dirsql/emp1.sql USERID ggs_owner, PASSWORD ggs…