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进程eiextt和poratt进程,分部增加DDL复制同步的配置语句,具体截图如下:
修改eiextt和poratt进程前先配置管理进程,增加GGSCHEMA用户如下
以下Eiextt和Poratt进程配置新增DDL相关。
3、上述所有配置完成后,重启manager服务,并开启所有进程,测试修改表结构
alter table ldcode123 add(test varchar(20));
4、检查另一个环境的表是否同步修改。
 
四、遗留问题:
       
1、目前使用GG在两个库之间的同步发现,同步数据中有中文,则出现乱码,还未解决!
中文乱码问题解决,在配置的Extract和Replicat进程中增加配置语句:
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命令参数详解:
       参考官方文档