Oracle主备切换,ogg恢复方法(集成模式)

前言:

文章主要介绍Oracle数据库物理ADG主备在发生切换时(switchover,failover),在主库运行的ogg进程(集成模式)如何进行恢复。

测试恢复场景,因为集成模式不能在备库配置,所以场景都是基于主库端:

 1.主备发生switchover切换,主库为ogg源端
 2.主备发生failover切换,主库为ogg源端
 3.主备发生switchover切换,主库为ogg目标端
 4.主备发生failover切换,主库为ogg目标端

测试环境:

OGG软件:19.1.0.0.4

源端:

extract :ext_text

pump :pum_test

目标端:

replicat:rep_test

恢复场景:

1.主备发生switchover切换,主库为ogg源端

发生主备switchover切换后,在主库的ogg源端extract进程会abend,出现错误:

 ERROROGG-00662 OCI Error 
 ORA-16456: switchover to standby in progress or completed

恢复方式一:
 将ogg软件拷贝到新的主节点,继续在新主库使用集成模式进行抽取
 --将安装目录打包拷贝到目标端
 tar -cvf ogg.tar ogg/scp -rp ogg.tar root@172.20.10.100:/u01/
 ​
 --在目标端解压到相同路径下tar xvf ogg.tar
 --如果两边的数据库安装目录,实例名配置不一样,则修改配置文件里面的配置ORACLE_HOME,ORACLE_SID
 --如果OGG的安装目录不一样,即dirdat的存放路径发生变化则需要修改extract,datapump的exttrail文件路径

extract进程

 --修改extract,pump配置文件里面的exttrail路径配置
 --修改extract进程的exttrail文件路径
 GGSCI> delete EXTTRAIL /u01/ogg/dirdat/eo
 GGSCI> ADD EXTTRAIL /ogg/ogg/dirdat/eo, EXTRACT EXT_TEST

pump进程

 --对于pump进程,需要重新创建投递进程并分配新trail的路径
 --保留当前读取的exttrail位置info pum_test detail
 --重新创建pump进程,分配新trail的路径
 GGSCI> delete PUM_TEST
 GGSCI> add extract PUM_TEST, exttrailsource /ogg/ogg/dirdat/eo
 GGSCI> add rmttrail /u01/ogg/dirdat/ro,extract PUM_TEST,MEGABYTES 1000

--如果exttrail没有保留全部的exttrail日志,即不是从0开始的,那么需要指定读取的序列

 GGSCI> alter PUM_TEST,EXTSEQNO 12

--启动进程

 GGSCI> start mgr 
 GGSCI> start pum_test
 GGSCI> start EXT_TEST

恢复方式二:

降级为经典模式,直接在备库抽取,如果还是想在原服务器上进行抽取,由于集成模式无法在备库上进行,所以需要将抽取模式从集成模式降级为经典模式。

需要注意的是降级为经典模式会导致无法支持压缩表同步,XA事务,多线程模式,PDB模式同步,特殊字段类型等功能,此外,配置文件也需要修改为支持备库抽取的经典模式配置。

 --关闭extract进程
 GGSCI> STOP EXT_TEST
 ​
 --确认当前进程是否可以进行downgrade,需要确保在downgrade之前的事务已经写入队列文件
 GGSCI> DBLOGIN userid ogg, password "go_20230_W506"
 GGSCI> INFO EXT_TEST DOWNGRADEExtract 
 EXT_TEST is ready to be downgraded from integrated capture. 
 Archive logs corresponding to SCN 8145010 and higher must be accessible by the downgraded extract.
 ​
 --降级extract进程
 GGSCI>  alter EXT_TEST downgrade tranlog threads 2 Extract 
 EXT_TEST successfully downgraded from integrated capture.
 ​
 --删除集成复制的参数,添加经典复制参数tranlogoptions已经DG复制参数MINEFROMACTIVEDG,
 --开启extract进程
 GGSCI> START EXT_TEST
 ​
 --可能会遇到主备角色转化的报错,需要调整scn为报错指定的scn2023-11-11 17:27:12  
 ERROR OGG-02803  Encountered a Data Guard role transition. 
 Alter Extract to SCN 9,990,952 and restart Extract, or recreate Extract with the correct number of threads at SCN 9,990,952.
 ​
 --调整scn,再重启抽取ext_test进程
 GGSCI> alter extract EXT_TEST scn 9990952
 GGSCI> start EXT_TEST

2.主备发生failover切换,主库为ogg源

主备发生failover切换,通常是由于主库已经出现了极端的破坏,比如存储损坏,服务器损坏,导致主库已经无法正常启动,这时候的ogg只能在failover之后的主库上进行抽取。

恢复方式一:

如果主库的ogg软件还保留,可以直接将主库的ogg软件直接拷贝到failover之后的主库

 --将安装目录打包拷贝到目标端
 tar -cvf ogg.tar ogg/scp -rp ogg.tar root@172.20.10.100:/u01/
 ​
 --在目标端解压到相同路径下tar xvf ogg.tar
 --如果两边的数据库安装目录,实例名配置不一样,则修改配置文件里面的配置ORACLE_HOME,ORACLE_SID
 --如果OGG的安装目录不一样,即dirdat的存放路径发生变化则需要修改extract,datapump的exttrail文件路径
 ​
 extract进程
 --修改extract,pump配置文件里面的exttrail路径配置
 --修改extract进程的exttrail文件路径
 GGSCI> delete EXTTRAIL /u01/ogg/dirdat/eo
 GGSCI> ADD EXTTRAIL /ogg/ogg/dirdat/eo, EXTRACT EXT_TEST
 ​
 pump进程
 --对于pump进程,需要重新创建投递进程并分配新trail的路径
 --保留当前读取的exttrail位置info pum_test detail
 ​
 --重新创建pump进程,分配新trail的路径
 GGSCI> delete PUM_TEST
 GGSCI> add extract PUM_TEST, exttrailsource /ogg/ogg/dirdat/eo
 GGSCI> add rmttrail /u01/ogg/dirdat/ro,extract PUM_TEST,MEGABYTES 1000
 ​
 --如果exttrail没有保留全部的exttrail日志,即不是从0开始的,那么需要指定读取的序列
 GGSCI> alter PUM_TEST,EXTSEQNO 12
 ​
 --启动进程
 GGSCI> start mgr 
 GGSCI> start pum_test
 GGSCI> start EXT_TEST

恢复方式二:

安装新的ogg目录,重建extract,pump进程

 --查看备库切换为主库的scn点
 STANDBY_BECAME_PRIMARY_SCNSQL> select STANDBY_BECAME_PRIMARY_SCN from gv$database;
 STANDBY_BECAME_PRIMARY_SCN
 --------------------------                   
 9846471
 ​
 --安装ogg软件--配置mgr,extract,pump的配置文件
 --因为之前在旧主库已经注册过,所以不用重新注册
 --重新添加extractGGSCI> dblogin userid ogg, password "go_20230_W506"
 --添加extract进程,指定scn为STANDBY_BECAME_PRIMARY_SCN
 GGSCI> add extract EXT_TEST INTEGRATED tranlog, SCN 9846471
 GGSCI> add exttrail /ogg/ogg/dirdat/eo,extract EXT_TEST,megabytes 1000
 ​
 --重新添加pump
 GGSCI> add extract PUM_TEST, exttrailsource /ogg/ogg/dirdat/eo
 GGSCI> add rmttrail /u01/ogg/dirdat/ro,extract PUM_TEST,MEGABYTES 1000
 ​
 --启动extract,pump进程
 --目标端replicat不用修改,rmtrail队列文件会自动往下产生

3.主备发生switchover切换,主库为ogg目标端

主备switchover切换之后,应用进程replicat会出现报错2023-11-18 12:34:53

ERROR OGG-00664 OCI Error ORA (status = 16000-ORA-16000: database open for read-only access

由于ogg的目标端应用进程需要写入数据,所以不能在物理DG上运行.

恢复方式:

将ogg拷贝到新主库进行应用

 --目录拷贝之前,记得要将源端的pump进程stop,确保应用端的trial日志没有再写入,再进行拷贝。
 --关闭源端pump进程
 GGSCI > stop pum_test
 ​
 --将安装目录打包拷贝到目标端
 tar -cvf ogg.tar ogg/scp -rp ogg.tar root@172.20.10.100:/ogg/
 ​
 --在目标端解压到相同路径下tar xvf ogg.tar
 --如果两边的数据库安装目录,实例名配置不一样,则修改配置文件里面的配置ORACLE_HOME,ORACLE_SID
 --如果ogg的安装路径目录不一致,要修改应用进程replicat的trial路径
 --先记录replicat进程的trail rba
 GGSCI > info rep_test
 REPLICAT   REP_TEST  
 Last Started 2023-11-18 12:34   
 Status ABENDEDINTEGRATEDCheckpoint 
 Lag 00:00:00 (updated 00:06:50 ago)
 Log Read Checkpoint  
 File /u01/ogg/dirdat/ro000000000 2023-11-18 12:23:08.438950  
 RBA 1714762
 ​
 --再修改replicat的trial
 GGSCI > alter replicat rep_test,exttrail /ogg/ogg/dirdat/ro
 GGSCI > alter replicat rep_test EXTSEQNO 0, EXTRBA 1714762
 ​
 --如果新环境的目录不一致,源端pump进程需要修改配置文件里面的队列文件路径
 rmttrail /ogg/ogg/dirdat/ro 
 ​
 --如果新环境的目录不一致,源端pump进程需要重新添加rmttrail为新路径
 GGSCI > delete RMTTRAIL /u01/ogg/dirdat/ro, EXTRACT PUM_TEST
 GGSCI > ADD RMTTRAIL /ogg/ogg/dirdat/ro, EXTRACT PUM_TEST
 ​
 --修改源端pump进程配置文件目标IP为新环境IP
 rmthost 172.20.10.100, mgrport 7810
 ​
 --启动源端pump进程
 GGSCI > stat pum_test
 ​
 --启动目标端replicat进程
 GGSCI > start rep_test

4 主备发生failover切换,主库为ogg目标端

主备发生failover切换,通常是由于主库已经出现了极端的破坏,比如存储损坏,服务器损坏,导致主库已经无法正常启动,这时候的ogg只能在failover之后的主库上进行应用

恢复方式一:

将ogg拷贝到新主库进行应用

 --目录拷贝之前,记得要将源端的pump进程stop,确保应用端的trial日志没有再写入,再进行拷贝
 --关闭源端pump进程
 GGSCI > stop pum_test
 ​
 --将安装目录打包拷贝到目标端
 tar -cvf ogg.tar ogg/scp -rp ogg.tar root@172.20.10.100:/ogg/
 ​
 --在目标端解压到相同路径下tar xvf ogg.tar
 --如果两边的数据库安装目录,实例名配置不一样,则修改配置文件里面的配置ORACLE_HOME,ORACLE_SID
 --如果ogg的安装路径目录不一致,要修改应用进程replicat的trial路径
 --先记录replicat进程的trail rba
 GGSCI > info rep_test
 REPLICAT   REP_TEST  
 Last Started 2023-11-18 13:54   
 Status ABENDEDINTEGRATED
 Checkpoint Lag       00:00:00 (updated 00:07:32 ago)
 Log Read Checkpoint  
 File /u01/ogg/dirdat/ro000000000 2023-11-18 13:55:46.451953  
 RBA 1713453
 ​
 --再修改replicat的trial
 GGSCI > alter replicat rep_test,exttrail /ogg/ogg/dirdat/ro
 GGSCI > alter replicat rep_test EXTSEQNO 0, EXTRBA 1713453
 ​
 --如果新环境的目录不一致,源端pump进程需要修改配置文件里面的队列文件路径
 rmttrail /ogg/ogg/dirdat/ro 
 ​
 --如果新环境的目录不一致,源端pump进程需要重新添加rmttrail为新路径
 GGSCI > delete RMTTRAIL /u01/ogg/dirdat/ro, EXTRACT PUM_TEST
 GGSCI > ADD RMTTRAIL /ogg/ogg/dirdat/ro, EXTRACT PUM_TEST
 ​
 --修改源端pump进程配置文件目标IP为新环境IP
 rmthost 172.20.10.100, mgrport 7810
 ​
 --启动源端pump进程
 GGSCI > stat pum_test
 ​
 --启动目标端replicat进程
 GGSCI > start rep_test

恢复方式二:

安装一个新的OGG软件,重新配置replicat进程

 --安装ogg软件--配置replicat的配置文件--重新添加replicat
 GGSCI > dblogin userid ogg, password "go_20230_W506"
 GGSCI > add replicat rep_test INTEGRATED exttrail ./dirdat/ro
 ​
 --关闭源端投递进程pum_test
 GGSCI > stop pum_test
 --修改源端pump进程的目标IP为新环境IP
 rmthost 172.20.10.100, mgrport 7810
 ​
 --如果新环境的目录不一致,则修改配置文件
 rmttrail /ogg/ogg/dirdat/ro 
 --重新添加rmttrail
 GGSCI > delete RMTTRAIL /u01/ogg/dirdat/ro, EXTRACT PUM_TEST
 GGSCI > ADD RMTTRAIL /ogg/ogg/dirdat/ro, EXTRACT PUM_TEST
 ​
 --修改源端pump进程读取exttrail位点,读取的日志要在切换之前,这样数据才不会丢失
 GGSCI > ALTER EXTRACT pum_test, EXTSEQNO 0, EXTRBA 0
 ​
 --启动pum_test
 GGSCI > start pum_test
 ​
 --启动目标端replicat进程
 GGSCI > start rep_test
 ​
 --如果存在数据冲突,可以添加数据冲突检查参数,但要确保表有主键或者唯一键HANDLECOLLISIONS
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Running Sun丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值