Oracle主备切换,ogg恢复方法(经典模式)

前言:

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

        测试恢复场景:

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

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

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

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

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

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

测试环境:

OGG软件:19.1.0.0.4

       源端:

               extract :ext_text

               pump :pum_test

        目标端:

                replicat:rep_test

恢复场景:

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

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

        恢复方式一:直接在主备切换之后的新备库,也就是原环境直接通过抽取DG进行同步,switchover切换之后,主备的 log日志是连续的,所以只要在参数文件里面配置抽取DG模式即可

--在extract ext_test添加抽取ADG日志模式 
TRANLOGOPTIONS MINEFROMACTIVEDG
--如果使用DBLOGREADER模式访问,在ADG模式下不能使用要删除,通过配置asmuser访问asm实例
--在grid用户下测试可以访问asm实例
sqlplus sys/oracle@172.20.10.60:1521/+ASM as sysasm
--添加到extract的配置
tranlogoptions asmuser sys@172.20.10.61/+ASM,asmpassword oracle
--DDLOPTIONS ADDTRANDATA不能使用,需要删除
--启动进程
GGSCI> start EXT_TEST
--这时正常会出现报错遇到ADG角色转化,提示Alter Extract to SCN 1,098,590 and restart Extract
ERROR   OGG-02803  Encountered a Data Guard role transition. Alter Extract to SCN 1,098,590 and restart Extract, or recreate Extract with the correct number of threads at SCN 1,098,590.
--修改extract的捕获scn为报错显示的scn
GGSCI> ALTER EXTRACT ext_test  scn 1098590;
--再重新启动extract进程恢复正常,目标端不用操作
GGSCI> stats EXTRACT

        DG模式的参考配置文件

        OGG-02803错误里面的scn是备库变成主库时的scn,可以通过alert日志查看SwitchOver after complete recovery through change 1098590,或者通过v$database视图的列STANDBY_BECAME_PRIMARY_SCN获取

        恢复方式二:在主备切换之后的新主库进行抽取,也就是在目标端新环境主库配置新的抽取进程

--关闭全部进程
GGSCI> info all
​
Program     Status      Group       Lag at Chkpt  Time Since Chkpt
​
MANAGER     STOPPED                                           
EXTRACT     ABENDED     EXT_TEST    00:00:00      00:05:30    
EXTRACT     STOPPED     PUM_TEST    00:00:00      00:00:09    
--将安装目录打包拷贝到目标端
tar -cvf ogg.tar ogg/
scp -rp ogg.tar root@172.20.10.50:/u01/
--在目标端解压到相同路径下
tar xvf ogg.tar
--如果两边的数据库安装目录,实例名配置不一样,则修改配置文件里面的配置ORACLE_HOME,ORACLE_SID
--启动进程
GGSCI> start mgr 
GGSCI> start pum_test
GGSCI> start EXT_TEST
--这时正常会出现报错遇到ADG角色转化
2023-10-29 17:03:31  ERROR   OGG-02803  Encountered a Data Guard role transition. Alter Extract to SCN 1,220,815 and restart Extract, or recreate Extract with the correct number of threads at SCN 1,220,815.
--修改extract 的捕获scn
GGSCI> ALTER EXTRACT ext_test  scn 1220815
--启动
GGSCI> START EXTRACT EXT_TEST
 
--如果OGG的安装目录不一样,即dirdat的存放路径发生变化则需要修改extract,pump的exttrail文件路径
--extract进程
--修改配置文件里面的exttrail路径配置
--修改extract进程的exttrail文件路径
GGSCI> delete EXTTRAIL /u01/ogg/dirdat/eo
GGSCI> ADD EXTTRAIL /ogg/ogg/dirdat/eo, EXTRACT EXT_TEST
--pump进程保留当前读取的exttrail位置
GGSCI> info pum_test,detail
--重新创建投递进程pump,分配新的路径
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开始的,那么需要指定读取的序列
alter PUM_TEST,EXTSEQNO 10
--再启动进程

        如果由于日志线程不一样,导致进程异常的可以通过drop+add方式重建

GGSCI> DROP EXTRACT ext_test
GGSCI> ADD EXTRACT ext_test THREADS t BEGIN SCN s
GGSCI> START EXTRACT ext_test

        如果启动出现以下错误,注意要检查ogg方法asm实例的配置

        OGG-02829  Not able to establish initial position for SCN 0.1268918 (1268918)

Getting attributes for ASM file +FRA/dgocs/archivelog/2023_10_29/thread_1_seq_51.286.1151515025, 
SQL <BEGIN dbms_diskgroup.getfileattr('+FRA/dgocs/archivelog/2023_10_29/thread_1_seq_51.286.1151515025', :filetype, :filesize, :lblksize); END;>: (15056) 
ORA-15056: additional error message
ORA-15173: entry 'dgocs' does not exist in directory '/'
ORA-06512: at "SYS.X$DBMS_DISKGROUP", line 322

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

       主备发生switchover切换,备库ogg源端会出现错误ERROR  OGG-02803  Encountered a Data Guard role transition. Alter Extract to SCN 1,125,395 and restart Extract, or recreate Extract with the correct number of threads at SCN 1,125,395.

        恢复方式一:直接在主备切换之后的新主库,也就是原环境直接通过抽取主库进行同步,switchover切换之后,主备的 log日志是连续的,所以只要在参数文件里面配置抽取主库模式即可

--删除adg配置模式
ATRANLOGOPTIONS MINEFROMACTIVEDG
--添加主库模式的参数配置
--修改extract 的捕获scn为OGG-02803报错的scn
GGSCI> ALTER EXTRACT ext_test  scn 1125395
--重新启动
GGSCI> START EXTRACT ext1

        extract的参考配置文件

        恢复方式二:在主备切换之后的新备库进行抽取,也就是在目标端新环境备库配置新的抽取进程

--关闭全部进程
GGSCI> info all
​
Program     Status      Group       Lag at Chkpt  Time Since Chkpt
​
MANAGER     STOPPED                                           
EXTRACT     ABENDED     EXT_TEST    00:00:00      00:05:30    
EXTRACT     STOPPED     PUM_TEST    00:00:00      00:00:09    
--将安装目录打包拷贝到目标端
tar -cvf ogg.tar ogg/
scp -rp ogg.tar root@172.20.10.50:/u01/
--在目标端解压到相同路径下
tar xvf ogg.tar
--如果两边的数据库安装目录,实例名配置不一样,则修改配置文件里面的配置ORACLE_HOME,ORACLE_SID
--启动进程
GGSCI> start mgr 
GGSCI> start pum_test
GGSCI> start EXT_TEST
--这时正常会出现报错遇到ADG角色转化
2023-10-29 17:03:31  ERROR   OGG-02803  Encountered a Data Guard role transition. Alter Extract to SCN 1,220,815 and restart Extract, or recreate Extract with the correct number of threads at SCN 1,220,815.
--修改extract 的捕获scn
GGSCI> ALTER EXTRACT ext_test  scn 1220815
--启动
GGSCI> START EXTRACT EXT_TEST
 
--如果OGG的安装目录不一样,即dirdat的存放路径发生变化则需要修改extract,pump的exttrail文件路径
--extract进程
--修改配置文件里面的exttrail路径配置
--修改extract进程的exttrail文件路径
GGSCI> delete EXTTRAIL /u01/ogg/dirdat/eo
GGSCI> ADD EXTTRAIL /ogg/ogg/dirdat/eo, EXTRACT EXT_TEST
--pump进程保留当前读取的exttrail位置
GGSCI> info pum_test,detail
--重新创建投递进程pump,分配新的路径
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 10
--再启动进程

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

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

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

--将安装目录打包拷贝到目标端
tar -cvf ogg.tar ogg/
scp -rp ogg.tar root@172.20.10.50:/u01/
--在目标端解压到相同路径下
tar xvf ogg.tar
--查看备库成为主库时的scn,STANDBY_BECAME_PRIMARY_SCN
SQL> select STANDBY_BECAME_PRIMARY_SCN
     from v$database;
​
STANDBY_BECAME_PRIMARY_SCN
--------------------------
                   1400705
​
--修改进程的scn为STANDBY_BECAME_PRIMARY_SCN
GGSCI> alter extract EXT_TEST scn 1400705
--如果两边的数据库安装目录,实例名配置不一样,则修改配置文件里面的配置ORACLE_HOME,ORACLE_SID
--启动进程
GGSCI> start mgr 
GGSCI> start pum_test
GGSCI> start EXT_TEST

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

--安装ogg软件
--配置mgr,extract,pump的配置文件
--重新添加extract
GGSCI> add extract EXT_TEST tranlog,begin now,threads 2
GGSCI> add exttrail /u01/ogg/dirdat/eo,extract EXT_TEST,megabytes 1000
--scn为STANDBY_BECAME_PRIMARY_SCN
GGSCI> alter extract EXT_TEST scn 1400705
--重新添加pump
GGSCI> add extract PUM_TEST, exttrailsource /u01/ogg/dirdat/eo
GGSCI> add rmttrail /u01/ogg/dirdat/ro,extract PUM_TEST,MEGABYTES 1000
--启动extract,pump进程
--replicat不用重建,rmtrail队列文件会自动往下产生

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

        恢复方式:只能在新主库上抽取,所以将ogg配置的DG抽取模式修改为在主库抽取的配置

--删除adg配置模式
ATRANLOGOPTIONS MINEFROMACTIVEDG
--添加主库模式的参数配置
--查看切换的scn
SQL>select STANDBY_BECAME_PRIMARY_SCN
  2 from v$database
​
STANDBY_BECAME_PRIMARY_SCN
--------------------------
                   1475226
--修改extract 的捕获scn
GGSCI> ALTER EXTRACT ext_test  scn 1475226
--启动
GGSCI> START EXTRACT ext1

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

        主备发生switchover,replicat进程会出现报错OGG-01004  Aborted grouped transaction on TEST.T_20200308, Database error 16000 (OCI Error ORA-16000: database open for read-only access (status = 16000),

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

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

--目录拷贝之前,记得要将源端的pump进程stop,确保应用端的trial日志没有再写入,再进行拷贝
--将安装目录打包拷贝到目标端
tar -cvf ogg.tar ogg/
scp -rp ogg.tar root@172.20.10.50:/u01/
--在目标端解压到相同路径下
tar xvf ogg.tar
--如果拷贝到新路径目录不一致
--要修改应用进程的trial路径
--先记录replicat进程的trail rba
GGSCI> info rep_test,detail
--再修改replicat的trial
GGSCI> alter replicat rep_test,exttrail /ogg/ogg/dirdat/ro
GGSCI> alter replicat rep_test EXTSEQNO 0, EXTRBA 1713507
--修改源端pump进程的目标IP为新环境IP
GGSCI> rmthost 172.20.10.100, mgrport 7810
--如果新环境的目录不一致,则修改配置文件
GGSCI> rmttrail /u01/ogg/dirdat/ro
--重新添加rmttrail
GGSCI> delete RMTTRAIL /u01/ogg/dirdat/ro, EXTRACT PUM_TEST
GGSCI> ADD RMTTRAIL /ogg/ogg/dirdat/ro, EXTRACT PUM_TEST
--启动replicat进程
GGSCI> stat rep_test

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

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

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

--目录拷贝之前,记得要将源端的pump进程stop,确保应用端的trial日志没有再写入,再进行拷贝
--将安装目录打包拷贝到目标端
tar -cvf ogg.tar ogg/
scp -rp ogg.tar root@172.20.10.50:/u01/
--在目标端解压到相同路径下
tar xvf ogg.tar
--如果拷贝到新路径目录不一致
--要修改应用进程的trial路径
--先记录replicat进程的trail rba
GGSCI> info rep_test,detail
--再修改replicat的trial
GGSCI> alter replicat rep_test,exttrail /ogg/ogg/dirdat/ro
GGSCI> alter replicat rep_test EXTSEQNO 0, EXTRBA 1713507
--修改源端pump进程的目标IP为新环境IP
GGSCI> rmthost 172.20.10.100, mgrport 7810
--如果新环境的目录不一致,则修改配置文件
GGSCI> rmttrail /u01/ogg/dirdat/ro
--重新添加rmttrail
GGSCI> delete RMTTRAIL /u01/ogg/dirdat/ro, EXTRACT PUM_TEST
GGSCI> ADD RMTTRAIL /ogg/ogg/dirdat/ro, EXTRACT PUM_TEST
--启动replicat进程
GGSCI> stat rep_test

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

--安装ogg软件
--配置mgr,replicat的配置文件
--重新添加replicat
GGSCI> dblogin userid ogg,password "go_20230_W506"
GGSCI> delete checkpointtable ogg.rep_chkpt
GGSCI> add checkpointtable ogg.rep_chkpt
GGSCI> add replicat rep_test,exttrail ./dirdat/ro,checkpointtable ogg.rep_chkpt
GGSCI> alter replicat rep_test, EXTSEQNO 0, EXTRBA 0
​
--修改源端pump进程的目标IP为新环境IP
GGSCI> rmthost 172.20.10.100, mgrport 7810
--如果新环境的目录不一致,则修改配置文件
GGSCI> rmttrail /u01/ogg/dirdat/ro
--重新添加rmttrail
GGSCI> delete RMTTRAIL /ogg/ogg/dirdat/ro, EXTRACT PUM_TEST
GGSCI> ADD RMTTRAIL /u01/ogg/dirdat/ro, EXTRACT PUM_TEST
--修改源端pump进程读取exttrail位点,读取的日志要在切换之前,这样数据才不会丢失
GGSCI> ALTER EXTRACT pum_test, EXTSEQNO 0, EXTRBA 0
--replicat进程添加数据冲突检查参数,要确保表有主键或者唯一键
HANDLECOLLISIONS
--启动replicat进程
GGSCI> stat rep_test

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/137875.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】Linux动态库和静态库

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;Linux &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 上一篇博客&#xff1a;【Linux】…

AIOT数字孪生智慧工地一体化管理平台源码

智慧工地app基于物联网和移动互联网技术&#xff0c;利用各类传感器及终端设备通过与云端服务器的实时数据交互&#xff0c;为施工现场的管理人员提供环境监测、劳务实名制管理、物料管理、巡检记录、设备管理等一系列优质高效的行业解决方案。 一、智能工地应用价值 智慧工地…

Java+Spring Cloud +UniApp +MySql智慧工地综合管理云平台源码

智慧工地围绕工程现场人、机、料、法、环及施工过程中质量、安全、进度、成本等各项数据满足工地多角色、多视角的有效监管,实现工程建设管理的降本增效. 智慧工地综合管理云平台源码&#xff0c;PC监管端、项目端&#xff1b;APP监管端、项目端、数据可视化大屏端源码&#xf…

springboot rocketmq 延时消息、延迟消息

rocketmq也有延迟消息&#xff0c;经典的应用场景&#xff1a;订单30分钟未支付&#xff0c;则取消的场景 其他博客提到从rocketmq5.0开始&#xff0c;支持自定义延迟时间&#xff0c;4.x只支持预定义延迟时间&#xff0c;安装rocketmq可参考RocketMq简介及安装、docker安装ro…

iOS OpenGL ES3.0入门实践

一、效果图 入门实践&#xff0c;做的东西比较简单&#xff0c;效果如下&#xff1a; 二、关于顶点坐标和纹理坐标 绘制图片需要设置顶点坐标和纹理坐标并加载像素数据&#xff0c;之所以要指定两组坐标是因为纹理和顶点使用不同的坐标系&#xff0c;就是告诉OpenGL&#xf…

9 个可以免费检索意外删除或丢失的文件的专业数据恢复软件

今天&#xff0c;我们将探索一些最佳数据恢复软件&#xff0c;它们可以帮助您从 Windows PC 或存储设备中检索意外删除或丢失的文件&#xff01; 丢失数据或意外删除数据是一种令人不安的经历。值得庆幸的是&#xff0c;存在有效的解决方案来解决这种情况。今天&#xff0c;我…

CSS 滚动捕获 scroll-snap-type

scroll-snap-type 语法实例 捕获轴 y 捕获严格程度 mandatory捕获轴 y 捕获严格程度 proximity同理看下捕获轴 x 一些注意事项兼容性 scroll-snap-type 用来指定一个滚动容器(scroll container)是否是滚动捕获容器(scroll snap container)、捕获的严格程度以及在什么方向上执行…

2.8 CE修改器:寻找共享代码

本关我们将学习共享代码&#xff0c;在C语言中角色属性都是以结构体的方式进行存储的&#xff0c;而结构体所存储的信息都是连续性的&#xff0c;这一关我们将会解释如何处理游戏中的共用代码&#xff0c;这种代码是通用在除了自己以外的其他同类型对像上的常常你在修改游戏的时…

在Vue.js中,什么是Vuex?它的作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

Spring Cloud OpenFeign:基于Ribbon和Hystrix的声明式服务调用

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; Spring Cloud OpenFeign&#xff1a;基于Ribbon和Hystrix的声明式服务调用 Spring Cloud OpenFeign是一个声明式的服务调用框架&#xff0c;基于Feign并整合了Ribbon和…

Crypto | Affine password 第二届“奇安信”杯网络安全技能竞赛

题目描述&#xff1a; 明文经过仿射函数y3x9加密之后变为JYYHWVPIDCOZ&#xff0c;请对其进行解密&#xff0c;flag的格式为flag{明文的大写形式}。 密文&#xff1a; JYYHWVPIDCOZ解题思路&#xff1a; 1、使用在线网站直接破解或手工计算破解&#xff0c;获得flag。&#xf…

中国专利转让数据集(1985-2021年)

专利转让数据追踪和记录专利从一个实体转移到另一个实体的过程。这些数据不仅包括参与转让的申请人和受让人的身份信息&#xff0c;如名字和地址&#xff0c;还涵盖了转让的具体法律细节&#xff0c;包括转让执行日、转让次数、法律状态变更&#xff0c;以及转让登记的相关信息…

软件开发项目文档系列之十六如何撰写系统运维方案

前言 项目运维方案是为了确保项目的稳定运行和可持续发展而制定的指导性文档。本文将详细介绍项目运维方案的各个方面&#xff0c;包括硬件和软件基础设施、监控和警报、备份和恢复、安全性、团队组织和沟通等方面。本博客将提供示例和最佳实践&#xff0c;以帮助您更好地理解…

前端前沿技术

文章目录 网站静态化PWA - Progressive Web APP, 渐进式 Web 应用PWA 简介解决了哪些问题?PWA 的优势浏览器支持情况参考文档 Weex 是一个可以使用现代化的 Web 技术开发高性能原生应用的框架。高性能跨平台贴近前端生态被大规模的使用 GraphQL[一种用于 API 的查询语言](http…

通信原理板块——线性分组码之循环码

微信公众号上线&#xff0c;搜索公众号小灰灰的FPGA,关注可获取相关源码&#xff0c;定期更新有关FPGA的项目以及开源项目源码&#xff0c;包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等 1、循环码原理 循环码(cycle code)…

Linux操作系统使用及C高级编程-D3Linux shell命令(权限、输入输出)

Shell 是一种应用程序&#xff0c;用以完成用户与内核之间的交互 一个功能强大的编程语言&#xff08;C语言&#xff09; 一个解释执行的脚本语言&#xff0c;不需要编译&#xff0c;写完直接执行 目前Linux 乌班图的Shell默认是bash 查看当前提供的Shell&#xff1a;cat /…

Milvus Cloud——LangChain 分块简介

LangChain 分块简介 LangChain 是一个 LLM 协调框架,内置了一些用于分块以及加载文档的工具。本次分块教程主要围绕设置分块参数,并最小限度地使用 LLM。简而言之,通过编写一个函数并设置其参数来加载文档并对文档进行分块,该函数打印结果为分块后的文本块。在下述实验中,…

Linux服务器从零开始训练 RT-DETR 改进项目 (Ultralytics) 教程,改进RTDETR算法(包括使用训练、验证、推理教程)

手把手从零开始训练 RT-DETR 改进项目 (Ultralytics版本) 教程,改进RTDETR算法 本文以Linux服务器为例:从零开始使用Linux训练 RT-DETR 算法项目 《芒果剑指 RT-DETR 目标检测算法 改进》 适用于芒果专栏改进RT-DETR算法 文章目录 百度 RT-DETR 算法介绍改进网络代码汇总第…

轻量封装WebGPU渲染系统示例<26>- PingpongBlur模糊效果(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxgpu/sample/PingpongBlur.ts 当前示例运行效果: WGSL片段shader group(0) binding(0) var<uniform> param: vec4f; group(0) binding(1) var sampler0: sampler; group(…

(免费领源码)Springboot宠物医院管理系统的设计与实现84724-计算机毕业设计项目选题推荐

摘 要 现如今生活质量提高&#xff0c;人们追求精神健康&#xff0c;与家中宠物朝夕相处&#xff0c;感情深厚&#xff0c;宠物渐渐成了我们身边的朋友。因而宠物生病了&#xff0c;需要去看病&#xff0c;自古医院救死扶伤&#xff0c;生命无贵贱&#xff0c;无论人类还是动物…