• 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软件拷贝到新的主节点,继续在新主库使用集成模式进行抽取

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

            恢复方式二:降级为经典模式,直接在备库抽取,如果还是想在原服务器上进行抽取,由于集成模式无法在备库上进行,所以需要将抽取模式从集成模式降级为经典模式,需要注意的是降级为经典模式会导致无法支持压缩表同步,XA事务,多线程模式,PDB模式同步,特殊字段类型等功能,此外,配置文件也需要修改为支持备库抽取的经典模式配置

    1. --关闭extract 进程
    2. GGSCI> STOP EXT_TEST
    3. --确认当前进程是否可以进行downgrade,需要确保在downgrade之前的事务已经写入队列文件
    4. GGSCI> DBLOGIN userid ogg, password "go_20230_W506"
    5. GGSCI> INFO EXT_TEST DOWNGRADE
    6. Extract 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.
    7. --降级extract进程,
    8. GGSCI> alter EXT_TEST downgrade tranlog threads 2
    9. Extract EXT_TEST successfully downgraded from integrated capture.
    10. --删除集成复制的参数,添加经典复制参数tranlogoptions已经DG复制参数MINEFROMACTIVEDG,
    11. --开启extract进程
    12. GGSCI> START EXT_TEST
    13. --可能会遇到主备角色转化的报错,需要调整scn为报错指定的scn
    14. 2023-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.
    15. --调整scn,再重启抽取ext_test进程
    16. GGSCI> alter extract EXT_TEST scn 9990952
    17. GGSCI> start EXT_TEST

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

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

            恢复方式一:如果主库的ogg软件还保留,可以直接将主库的ogg软件直接拷贝到failover之后的主库

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

            恢复方式二:安装新的ogg目录,重建extract,pump进程

    1. --查看备库切换为主库的scn点STANDBY_BECAME_PRIMARY_SCN
    2. SQL> select STANDBY_BECAME_PRIMARY_SCN
    3. from gv$database;
    4. STANDBY_BECAME_PRIMARY_SCN
    5. --------------------------
    6. 9846471
    7. --安装ogg软件
    8. --配置mgr,extract,pump的配置文件
    9. --因为之前在旧主库已经注册过,所以不用重新注册
    10. --重新添加extract
    11. GGSCI> dblogin userid ogg, password "go_20230_W506"
    12. --添加extract进程,指定scn为STANDBY_BECAME_PRIMARY_SCN
    13. GGSCI> add extract EXT_TEST INTEGRATED tranlog, SCN 9846471
    14. GGSCI> add exttrail /ogg/ogg/dirdat/eo,extract EXT_TEST,megabytes 1000
    15. --重新添加pump
    16. GGSCI> add extract PUM_TEST, exttrailsource /ogg/ogg/dirdat/eo
    17. GGSCI> add rmttrail /u01/ogg/dirdat/ro,extract PUM_TEST,MEGABYTES 1000
    18. --启动extract,pump进程
    19. --目标端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

     

    a74f2c62d7ae8a52856df928125a0666.png

     

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

            恢复方式:将ogg拷贝到新主库进行应用

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

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

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

            恢复方式一:将ogg拷贝到新主库进行应用

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

             恢复方式二:安装一个新的OGG软件,重新配置replicat进程

    1. --安装ogg软件
    2. --配置replicat的配置文件
    3. --重新添加replicat
    4. GGSCI > dblogin userid ogg, password "go_20230_W506"
    5. GGSCI > add replicat rep_test INTEGRATED exttrail ./dirdat/ro
    6. --关闭源端投递进程pum_test
    7. GGSCI > stop pum_test
    8. --修改源端pump进程的目标IP为新环境IP
    9. rmthost 172.20.10.100, mgrport 7810
    10. --如果新环境的目录不一致,则修改配置文件
    11. rmttrail /ogg/ogg/dirdat/ro
    12. --重新添加rmttrail
    13. GGSCI > delete RMTTRAIL /u01/ogg/dirdat/ro, EXTRACT PUM_TEST
    14. GGSCI > ADD RMTTRAIL /ogg/ogg/dirdat/ro, EXTRACT PUM_TEST
    15. --修改源端pump进程读取exttrail位点,读取的日志要在切换之前,这样数据才不会丢失
    16. GGSCI > ALTER EXTRACT pum_test, EXTSEQNO 0, EXTRBA 0
    17. --启动pum_test
    18. GGSCI > start pum_test
    19. --启动目标端replicat进程
    20. GGSCI > start rep_test
    21. --如果存在数据冲突,可以添加数据冲突检查参数,但要确保表有主键或者唯一键
    22. HANDLECOLLISIONS

     

     

  • 相关阅读:
    UDP主要丢包原因及具体问题分析
    引入隔离率与潜伏人员的SIR模型附matlab代码
    「Python实用秘技10」深度比较Python对象间差异
    触摸屏驱动
    python合集(显示图像,黑白化、二值化,处理excel、画有向图无向图赋权图网络图)
    第七章:敏捷开发工具方法-part2-CI/CD工具介绍
    记一次 .NET 某数控机床控制程序 卡死分析
    【经验之谈】关于维修电子设备的几点建议和经验
    登陆认证&权限控制(1)——从session到token认证的变迁 & session的问题分析 + CSRF攻击的认识
    三季度现货白银基本面分析
  • 原文地址:https://blog.csdn.net/sinat_36757755/article/details/134480168