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

news2024/12/25 4:52:14

前言:

        文章主要介绍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 DOWNGRADE
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.
​
--降级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为报错指定的scn
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.
--调整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_SCN
SQL> select STANDBY_BECAME_PRIMARY_SCN
    from gv$database;
​
STANDBY_BECAME_PRIMARY_SCN
--------------------------
                   9846471
​
--安装ogg软件
--配置mgr,extract,pump的配置文件
--因为之前在旧主库已经注册过,所以不用重新注册
--重新添加extract
GGSCI> 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

 

a74f2c62d7ae8a52856df928125a0666.png

 

        由于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 ABENDED
INTEGRATED
Checkpoint 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 ABENDED
INTEGRATED
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

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode - 622. 设计循环队列(C语言,顺序存储结构,配图)

622. 设计循环队列 - 力扣(LeetCode) 设计循环队列,我们可以从顺序结构和链式结构来考虑,但因为链式结构实现起来较为复杂,不易理解,且主流使用顺序存储,所以本文就是用顺序存储结构实现。 因为…

【Spring】之注解存取Bean对象

在本系列的上一篇文章中,我们已经了解了Spring的一些核心概念,并且还学习了Spring存取。但是我们发现在存取的过程中还是比较复杂,接下来我们将学习更为简单的Spring存取,其中涉及到的主要内容就是注解。并且在Spring家族的学习过…

Virtual安装centos后,xshell连接centos

1. 网络使用Host-Only模式动态分配IP,运行 system restart network 后,使用ifconfig查看新的ip,XShell可以直接连上centos, 但是由于使用的是Host-Only模式,centos不能访问网络,只能与宿主机相互通信 2. 网…

【C语言基础】分享近期学习到的volatile关键字、__NOP__()函数以及# #if 1 #endif

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…

【算法每日一练]-分块(保姆级教程 篇1)POJ3648

插讲一下分块 题目:(POJ 3648) 一个简单的整数问题 前缀和往往用于静态的不会修改的区间和。遇到经常修改的区间问题,就要用分块或线段树来维护了。 分块算法是优化后的暴力,分块算法有时可以维护一些线段树维护不了的…

【JavaEE初阶】计算机是如何工作的

一、计算机发展史 计算的需求在⼈类的历史中是广泛存在的,发展大体经历了从⼀般计算⼯具到机械计算机到目前的电子计算机的发展历程。 人类对计算的需求,驱动我们不断的发明、改善计算机。目前这个时代是“电子计算机”的时代,发展的潮流是…

【算法挨揍日记】day21——64. 最小路径和、174. 地下城游戏

64. 最小路径和 64. 最小路径和 题目描述: 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 解题思路: 状态表示&…

数据结构与算法之美学习笔记:21 | 哈希算法(上):如何防止数据库中的用户信息被脱库?

目录 前言什么是哈希算法?应用一:安全加密应用二:唯一标识应用三:数据校验散列函数解答开篇内容小节 前言 本节课程思维导图 如果你是 一名工程师,你会如何存储用户密码这么重要的数据吗?仅仅 MD5 加密一下…

Java拼图

第一步是创建项目 项目名自拟 第二部创建个包名 来规范class 然后是创建类 创建一个代码类 和一个运行类 代码如下: package heima;import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import jav…

YOLOv8改进 | 2023 | InnerIoU、InnerSIoU、InnerWIoU、FoucsIoU等损失函数

论文地址:官方Inner-IoU论文地址点击即可跳转 官方代码地址:官方代码地址-官方只放出了两种结合方式CIoU、SIoU 本位改进地址: 文末提供完整代码块-包括InnerEIoU、InnerCIoU、InnerDIoU等七种结合方式和其Focus变种 一、本文介绍 本文给…

拼图小游戏

运行出的游戏界面如下: User类 package domain;/*** ClassName: User* Author: Kox* Data: 2023/2/2* Sketch:*/ public class User {private String username;private String password;public User() {}public User(String username, String password) {this.user…

【C语言基础】分享近期学习到的volatile关键字、__NOP()以及# #if 1 #endif

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…

记录基于scapy构造ClientHello报文的尝试

最近有个需求就是用scapy构造https的client hello报文,由用户指定servername构造对应的报文。网上对于此的资料甚少,有的也是怎么去解析https报文,但是对于如果构造基本上没有找到相关的资料。 一直觉得最好的老师就是Python的help功能和dir功…

分组交换技术

目录 一、新型计算机网络的基本特点 二、电路交换 1、回顾电路交换的原理 2、使用交换机连接许多部电话 3、电路交换举例 4、电路交换的三个阶段 5、电路交换的特点 三、分组交换 1、因特网有边缘部分与核心部分组成 2、分组交换的原理 3、分组交换的优点 4、存储转…

如何使用贝锐花生壳内网穿透远程访问JupyterNotebook?

在数据科学领域,Jupyter Notebook 已成为处理数据的必备工具。 其用途包括数据清理和探索、可视化、机器学习和大数据分析。Jupyter Notebook的安装非常简单,如果你是小白,那么建议你通过安装Anaconda来解决Jupyter Notebook的安装问题&#…

YOLOv8改进 | EIoU、SIoU、WIoU、DIoU、FoucsIOU等二十余种损失函数

一、本文介绍 这篇文章介绍了YOLOv8的重大改进,特别是在损失函数方面的创新。它不仅包括了多种IoU损失函数的改进和变体,如SIoU、WIoU、GIoU、DIoU、EIOU、CIoU,还融合了“Focus”思想,创造了一系列新的损失函数。这些组合形式的…

java--俄罗斯方块

一、先看一下游戏运行时的画面 二、代码部分 1. Cell.java Cell.java: package demo1;import java.awt.image.BufferedImage; import java.util.Objects;/* 编写小方块类属性:行、列、每个小方格的图片方法:左移一格、右移一格、下落一格 编…

快速支持客户知识库的核心优势是什么?

快速支持客户知识库是一个集中存储和组织企业知识的平台,包含了丰富的信息和解决方案,以帮助客户快速解决问题,帮助企业提高客户支持效率和满意度。那么,快速支持客户知识库的核心优势是什么呢? | 1、提高客户自助支持…

gitlab环境准备

1.准备环境 gitlab只支持linux系统,本人在虚拟机下使用Ubuntu作为操作系统,gitlab镜像要使用和操作系统版本对应的版本,(ubuntu18.04,gitlab-ce_13.2.3-ce.0_amd64 .deb) book100ask:/$ lsb_release -a No LSB modules are available. Dist…

2018年计网408

第33题 下列 TCP/P应用层协议中, 可以使用传输层无连接服务的是()A. FTPB. DNSC. SMTPD. HTTP 本题考察TCP/IP体系结构中,应用层常用协议所使用的运输层服务。 如图所示。这是TCP/IP体系结构中常见应用层协议各自所使用的运输层端口,。在这些应用层协议中&#x…