暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

Oracle数据库DG角色切换,OGG如何处理

原创 杨卓 2022-01-13
2660

一、需求,Oracle数据库DG角色切换,OGG如何处理

需求:有同事沟通客户需要进行DG切换,那么数据库附带的OGG软件如何处理呢???

二、解决方案

2.1 信息拆解

1)DG切换发生在Oracle Db的相同版本;
2) DG切换后主库将变成备库,备库将变成主库; 
主备环境使用OGG有什么特点呢?
OGG抽取进程抽取主库、备库都能抽取,但是参数不同,因此对于抽取进程来说,需要修改参数;
OGG投递进程只关心Trail文件源端,目标端的文件路径是否改变,IP地址目标端是否改变;
OGG复制进程只能在主库进行应用OGG SQL Exec DML操作;
3)DG切换的数据库对OGG进程的影响是源端,还是目标端。

2.2 对于源端发生DG切换,源端的OGG软件如何处理

方案一、配置OGG专用抽取ADG的环境,这个环境不涉及DG切换

源端原有架构1主1备,因此主备切换后,OGG所在的源端的角色发生改变,进程都需要手工处理;
那么修改后的架构,1主2备,选择一台专用的OGG ADG抽取环境,这个ADG不涉及DG切换,因此永远是备库角色;
抽取进程使用参数就可以抽取ADG环境的数据了!

Does GoldenGate Support Extracting Redo from Active Data Guard? (Doc ID 1299805.1)  
GOAL
Does GoldenGate support extract reading redo from generated from an active data guard?
SOLUTION
Yes, this is supported in 12.1.2.1.0 (but not previous version) GoldenGate classic extract,
 with parameter:
TRANLOGOPTIONS MINEFROMACTIVEDG
For versions older than 12.1.2.1.0 the below error can occur:
ERROR OGG-00303 Unrecognized option (MINEFROMACTIVEDG) for TRANLOGOPTIONS.
So Goldengate must be upgraded to 12.1.2.1.0 or later versions to resolv

也就是说OGG使用12.1.2.1.0的版本,经典模式的情况下就可以抽取no pdb的 adg的数据了!
这种方案好,但是限制也多:
1.OGG版本>=12.1.2.1.0;
2.数据库版本与Ogg版本兼容,具体看兼容性列表,11g->19c 甚至更高;
3.Oracle db 不能使用pdb,否则无法抽取,可以参考如下Mos文章

Configuring Integrated Extract For ADG Mode (Doc ID 2643343.1) 
Oracle GoldenGate - Version 19.1.0.0.4 and later
QUESTION: Is it possible to configure Integrated Extract with ADG in 19.1 GoldenGate release?
It is not possible to use Integrated Extract for ADG standby database. 
MINEFROMACTIVEDG -Valid for Extract in Classic Extract mode for Oracle.
Please refer the following link for more details about MINEFROMACTIVEDG settings.

方案二、DG切换,OGG只在主库进行抽取;【复制文件】

1.停业务;
2.stop停OGG抽取投递进程;
3.打包OGG软件及Trail文件,传输到切换后新主库的机器,相同的路径下;
4.DG切换,原主库角色变成备库;原备库角色变成主库;
5.启动OGG抽取,投递进程;
正常流程下,非常流畅,无异常!

方案三、DG切换,OGG只在主库进行抽取;【远程抽取】

与上述情况一样,但是不想更换主机???

1.停业务;
2.stop停OGG抽取投递进程;
3.OGG抽取进程修改连接串,使用远程tns配置连接新主库的连接串信息;
4.DG切换,原主库角色变成备库;原备库角色变成主库;
5.启动OGG抽取,投递进程;
这样等于原来OGG从当前主机的实例抽取到的数据,转变为远程抽取数据,操作更少,只涉及修改连接串;

方案四、DG切换,OGG只在ADG进行抽取

与上述方案二、方案三其实是一样的;

方案五、DG切换,OGG从只抽取ADG转变为抽取主库;

1.停业务;
2.stop停OGG抽取投递进程;
3.删除或者注释OGG抽取进程参数
TRANLOGOPTIONS MINEFROMACTIVEDG
4.DG切换,原主库角色变成备库;原备库角色变成主库;
5.对抽取进程更改抽取的时间点,从当前时间开始重新抽取
GGSCI> alter extract [process_name], tranlog, begin now
6.启动OGG抽取,投递进程;
反过来,DG切换,OGG从只抽取主库,转为抽取ADG,与上述操作反过来就行了。

2.3 对于目标端发生DG切换,源端及目标端的OGG软件如何处理

特点:目标端OGG进程只能是复制进程,复制进程需要在DB执行DML操作,只能在主库进行!
因此,1.源端的OGG投递进程的IP地址,需要修改为新主库的IP地址;
   2.目标端的OGG软件需要相应调整;
1.修改源端投递进程IP地址就不作描述了;
2.目标端的OGG相应修改;

方案一、DG切换,OGG复制进程只在主库应用SQL【复制文件】

1.停业务;
2.stop停OGG复制进程;
3.打包OGG软件及Trail文件,传输到切换后新主库的机器,相同的路径下;
4.DG切换,原主库角色变成备库;原备库角色变成主库;
5.启动OGG复制进程;
正常流程下,非常流畅,无异常!

方案二、DG切换,OGG复制进程只在主库应用SQL【远程复制】

1.停业务;
2.stop停OGG复制进程;
3.修改OGG复制进程对应的连接参数,配置Tns连接新的主库信息,参数修改为远程复制
4.DG切换,原主库角色变成备库;原备库角色变成主库;
5.启动OGG复制进程;
正常流程下,非常流畅,无异常!

三、总结

3.1 对于OGG源端数据库DG切换

1)最方便的方式是配置ADG数据库专门进行抽取;
2)当然如果版本不匹配或者资源无法申请到;选择上述远程抽取或者文件cp文件都行;
3)如果想省事一点可以写个脚本配合变更;
举例,选择一台OGG专用服务器,远程只抽取主库;
对于ADG切换来说,只涉及IP,PORT,SERVICE_NAME三要素的修改,可以编写一个脚本;
可能性一、
1.检测当前ogg抽取进程的tns连接串,测试登录db,检查db角色,如果是主库,pass;
2.正常启动Ogg抽取进程,投递进程,脚本运行完成;
可能性二、
1.检测当前ogg抽取进程的tns连接串,测试登录db,检查db角色,如果是备库;
2.通过循环检索提前配置好的文件,里面包含主备连接串,for循环调用,检查db角色主库则停止,获取当然连接串信息;
3.将上述获取到的连接串信息,修改ogg抽取进程@远程三要素信息;
4.启动OGG抽取进程,投递进程,脚本运行完成;
实际上就是将手工修改ogg抽取进程连接主库的信息,进行更新的动作脚本去完成!

3.2 对于OGG目标端数据库DG切换

1)选择上述远程复制
2)整体OGG文件cp打包迁移到新的主库运行;
思路也是可以写个脚本,将上述动作脚本化;

备注:这个工作量大不大,如果一年也没个1两次,手工修改就完事了。当然工作频繁,建议写个脚本方便快速运维。
这些方案也不一定可靠,小伙伴们发现漏洞或者问题欢迎提意见。

最后修改时间:2022-01-13 10:00:00
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论