魔兽传奇

java程序爱好者
posts - 28, comments - 16, trackbacks - 0, articles - 6
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Oracle GoldenGate配置及学习

Posted on 2012-10-17 11:58 龙旋风 阅读(6440) 评论(0)  编辑  收藏

Oracle GoldenGate学习总结

 

一、Oracle GoldenGate工作原理:

   http://wenku.baidu.com/view/0768726f561252d380eb6e82.html

   网上有,不再描述,具体参考:

    http://wenku.baidu.com/view/59d54ee80975f46527d3e140.html

    Oracle GoldenGate产品的相关下载地址:

    http://edelivery.oracle.com

http://www.oracle.com/technetwork/cn/testcontent/index-100295-zhs.html

   

       GoldenGate几个重要进程介绍:

1、Manager管理进程在两端开启,监控和重启其他进程;分配数据存储和报告错误及事件;

2、Extract进程从日志中抓取并传输到target端事务数据;

3、Server Collector进程在target(接受)端接受数据并写入trail文件;

4、Replicat进程读取trail文件,并应用到traget数据库;

5、trail文件时gg自己抓捕信息的文件,是一个OS文件,存放在./dirdat/下,以X00000命名,N顺序1,2,3…此文件用完可配置参数自动删除。

 

二、Oracle GoldenGate配置:

1、同一台计算上,部署两个Orcle数据库,yglis源数据库,ygtest目标数据库。分部建立两个GG环境:

2、将下载的GoldenGate解压重新命名,建立两个gg环境的如下:

    注:解压后的文件夹名称不能为Oracle GoldenGate会存在冲突。

        源数据配置GG路径:

        D:\gg\ggs_yglis

        目标数据配置GG路径:

D:\gg\ggs2_ygtest

3、配置OrateGoldenGate

       >Cd D:\gg\ggs_yglis

       >ggsci

>create subdirs

>exit

 

>D:\gg\ggs2_ygtest

       >ggsci

>create subdirs

>exit

4、查看源数据库是否开启最小附加日志模式,进入到源数据库的SQL命令模式:

    Sql> select supplemental_log_data_min from v$database;

    若查询结果为N,执行下述命令:

    Sql> alter database add supplemental log data;

    Sql> alter system switch log file;

    Sql> exit;

5、配置源数据库的GoldenGate参数:

    注:配置相关数据前,请先建立测试表。

    gg> ggsci

    gg> edit params ./GLOBALS

    在弹出的文件中写入

    MGRSERVNAME mgrtest1

    gg> exit;

6、接着配置windows源数据库进程

    > install addservice addevents

    配置成功后再次进入到源数据库的ggsic

    gg> ggsic

    gg> edit params mgr

    在弹出的文件中输入

    Port 7809

7、配置一个Extract进程:

    gg> edit param eiextt

    在弹出的文件中输入

    --注释,第一行是Extract的名称

    --第二三行处理的是中文乱码问题

    --第四是要导出的数据库连接

    --第五行是导入的trail文件路径

    --第六行之后,需要出的表

    EXTRACT EIEXTT

setenv (NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK")

getenv (NLS_LANG)

USERID yglis@ygcms, PASSWORD yglis

EXTTRAIL ./dirdat/tt

TABLE yglis.ldcode123;

TABLE yglis.ldcom;

 

 

上述文件建立后,需增加Extract进程

gg> add extract eiextt,tranlog,begin now

gg> add exttrail ./dirdat/tt,extract eiextt, megabytes 5   

    8、在源数据库端增加一个PUMP进程

       gg> edit params epmptt

       在弹出的文件中输入:

EXTRACT EPMPTT

PASSTHRU

setenv (NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK")

getenv (NLS_LANG)

RMTHOST localhost,MGRPORT 7841

RMTTRAIL ./dirdat/tt

TABLE yglis.ldcode123;

TABLE yglis.ldcom;

 

 

上述文件建立后,增加pump进程

gg> add extract epmptt,exttrailsource ./dirdat/tt

gg> add rmttrail ./dirdat/tt,extract epmptt,megabytes 5

 

所有上述配置完成后,源数据库端配置完成,检查进程可使用

gg> info all

启动进程

gg> start mgr

gg> start *

    9、配置目标数据库端的GoldenGate相关:

       配置manager进程与源数据段一致

       gg> edit params ./GLOBALS

       弹出文件写入

       MGRSERVNAME mgrtarget

CHECKPOINTTABLE ygtest.ggschkpt

在退出exit中输入install addservice addevents

 

再进入到ggsci模式

gg> edit params mgr

在弹出的文本框中写入

Port 7841

 

gg> add checkpointtable ygtest.ggschkpt

gg> dblogin userid ygtest,password ygtest

gg> add replicat poratt,exttrail ./dirdat/tt,checkpointtable ygtest.ggschkpt

 

配置replicat进程(接受进程)

gg> edit param poratt

在弹出的文本框中写入

replicat poratt

setenv (NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK")

getenv (NLS_LANG)

userid ygtest@ygtest, password ygtest

assumetargetdefs

reperror default, discard

discardfile ./dirrpt/poratt.dsc, purge

map yglis.ldcode123, target ygtest.ldcode123;

map yglis.ldcom, target ygtest.ldcom;

 

完成上述操作后,检查进程:

gg> info all

gg> start mgr

gg> start *

 

10、当源、目标端的GG都配置完成,并且所有的进程都RUNNING状态,说明配置成功,即可验证

源数据库端配置

 

目标端配置

 

  

   附加新建的表和测试数据:

  

   附加所有进程文件:

  

    源端进程配置文件

   

   

   

    目标端进程配置文件

  

  

  

 

三、DDL表结构同步情况:

DDL配置可以不用与DML配置同时进行,可以单独进行,没有关联必要性,参考网址:

http://www.xtopace.com/database/oracle-goldengate-ddl-synchronization-configuration.html

1、进入到GoldenGate安装路径后,使用dba权限连接数据库,查看相关配置是否OK

    确认数据库归档模式:

RECYCLEBIN是否关闭---10G以上版本为了支持DDL复制建议关闭RECYCLEBIN

SQL> show parameter recyclebin;

SQL> alter system set recyclebin=off;

设置完成后,重启数据库服务,并重新进入GoldenGate安装路径,使用SYSDBA用户登录并执行下述SQL

    SQL> @marker_setup.sql

    SQL> @ddl_setup.sql

    SQL> @role_setup.sql

    SQL> GRANT GGS_GGSUSER_ROLE to [用户名];

    SQL> @ddl_enable.sql

    SQL> @marker_status.sql

    SQL> exit

2、修改上述二中配置的DML进程eiexttporatt进程,分部增加DDL复制同步的配置语句,具体截图如下:

修改eiexttporatt进程前先配置管理进程,增加GGSCHEMA用户如下

以下EiexttPoratt进程配置新增DDL相关。

3、上述所有配置完成后,重启manager服务,并开启所有进程,测试修改表结构

alter table ldcode123 add(test varchar(20));

4、检查另一个环境的表是否同步修改。

 

四、遗留问题:

      

1、目前使用GG在两个库之间的同步发现,同步数据中有中文,则出现乱码,还未解决!

中文乱码问题解决,在配置的ExtractReplicat进程中增加配置语句:

setenv (NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK")

getenv (NLS_LANG)

      

2、另对于同步进程进行修改的时候,是否需要终止进程?若终止进程,则如何保证数据同步的实时及准确性?

 

3、双向实时复制同一个表的数据,是否会存在问题?

此问题已经解决,配置方法同Oracle GoldenGate步骤,反向配置源目端的进程,可以实现DML双向数据同步,但不能解决DDL双向数据同步。

       附加文件:

       YGLIS源端配置文件:

             

       YGTEST目标端配置文件:

             

 

五、如何卸载Oracle GoldenGate产品:

如果想卸载源数据库或目标数据库不在使用Oracle GoldenGate产品了,且需从当前的windows系统的任务服务中删除,执行操作步骤:

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

    gg> stop *

    gg> stop mgr

2、删除Oracle GoldenGate安装路径

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


六、Oracle GoldenGate命令参数详解:

       参考官方文档

      


只有注册用户登录后才能发表评论。


网站导航: