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命令参数详解:
参考官方文档