Oracle一对多(一主多备)的DG环境如何进行switchover切换?

news2024/11/15 5:08:03

本文主要分享Oracle一对多(一主多备)的DG环境的switchover切换,如何进行主从切换,切换后怎么恢复正常同步?

1、环境说明

本文的环境为一主两备,数据库版本为11.2.0.4,主要信息如下:

数据库IPdb_unique_name原角色(切换前)目标角色(切换后)
10.10.10.160ora11g主库备库
10.10.10.41dgora11g备库主库
10.10.10.47sbora11g备库备库

说明:
(1)当前主库为10.10.10.160,10.10.10.41 和10.10.10.47是它的两个备库。

​(2)switchover切换后,10.10.10.41变为主库,10.10.10.160和10.10.10.47成为它的两个备库。

2、主要参数配置

以下是相关数据库的主要参数配置信息(以db_unique_name进行区分):

ora11g:

set linesize 500 pages 0
col value for a100
col name for a50
select name, value
from v$parameter
where name in ('db_name','db_unique_name',
'log_archive_config',
'log_archive_dest_1','log_archive_dest_2',
'log_archive_dest_state_1',
'log_archive_dest_state_2',
'remote_login_passwordfile',
'log_archive_format',
'log_archive_max_processes',
'fal_server','db_file_name_convert',
'log_file_name_convert',
'standby_file_management')
/

db_file_name_convert				   /u01/oradata/dgora11g, /u01/oradata/ora11g, /u01/oradata/sbora11g, /u01/oradata/ora11g
log_file_name_convert				   /u01/oradata/dgora11g, /u01/oradata/ora11g, /u01/oradata/sbora11g, /u01/oradata/ora11g
log_archive_dest_1				   location=/u01/oradata/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) db_unique_name=ora11g
log_archive_dest_2				   SERVICE=dgora11g LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=dgora11g
log_archive_dest_state_1			   ENABLE
log_archive_dest_state_2			   ENABLE
fal_server					   dgora11g, sbora11g
log_archive_config				   DG_CONFIG=(ora11g,dgora11g,sbora11g)
log_archive_format				   %t_%s_%r.dbf
log_archive_max_processes			   4
standby_file_management 			   AUTO
remote_login_passwordfile			   EXCLUSIVE
db_name 					   ora11g
db_unique_name					   ora11g

dgora11g:

db_file_name_convert				   /u01/oradata/ora11g, /u01/oradata/dgora11g
log_file_name_convert				   /u01/oradata/ora11g, /u01/oradata/dgora11g
log_archive_dest_1				   location=/u01/oradata/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) db_unique_name=dgora11g
log_archive_dest_2				   SERVICE=ora11g LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ora11g
log_archive_dest_state_1			   ENABLE
log_archive_dest_state_2			   ENABLE
fal_server					   ora11g
log_archive_config				   DG_CONFIG=(ora11g,dgora11g)
log_archive_format				   %t_%s_%r.dbf
log_archive_max_processes			   4
standby_file_management 			   AUTO
remote_login_passwordfile			   EXCLUSIVE
db_name 					   ora11g
db_unique_name					   dgora11g

sbora11g:

db_file_name_convert				   /u01/oradata/ora11g, /u01/oradata/sbora11g
log_file_name_convert				   /u01/oradata/ora11g, /u01/oradata/sbora11g
log_archive_dest_1				   location=/u01/oradata/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) db_unique_name=sbora11g
log_archive_dest_2				   SERVICE=ora11g LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=ora11g
log_archive_dest_state_1			   ENABLE
log_archive_dest_state_2			   ENABLE
fal_server					   ora11g
log_archive_config				   DG_CONFIG=(ora11g,sbora11g)
log_archive_format				   %t_%s_%r.dbf
log_archive_max_processes			   4
standby_file_management 			   AUTO
remote_login_passwordfile			   EXCLUSIVE
db_name 					   ora11g
db_unique_name					   sbora11g

3、切换前检查

切换前,确认备库同步情况,有没有延迟

dgora11g:

sys@dgora11g> select value from v$dataguard_stats where name='transport lag';

VALUE
----------------------------------------------------------------
+00 00:00:00

sys@dgora11g> select value from v$dataguard_stats where name='apply lag'; 

VALUE
----------------------------------------------------------------
+00 00:00:00

--检查最新归档到的日志号及是否有gap

sys@dgora11g> SELECT UNIQUE THREAD# AS THREAD, MAX(SEQUENCE#) OVER (PARTITION BY thread#) AS LAST from V$ARCHIVED_LOG;

    THREAD	 LAST
---------- ----------
	 1	  289

sys@dgora11g> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;

no rows selected

sbora11g:

sys@sbora11g > select value from v$dataguard_stats where name='transport lag';

VALUE
----------------------------------------------------------------
+00 00:00:00

sys@sbora11g > select value from v$dataguard_stats where name='apply lag';

VALUE
----------------------------------------------------------------
+00 00:00:00
sys@sbora11g > SELECT UNIQUE THREAD# AS THREAD, MAX(SEQUENCE#) OVER (PARTITION BY thread#) AS LAST from V$ARCHIVED_LOG;

    THREAD	 LAST
---------- ----------
	 1	  289

sys@sbora11g > SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;

no rows selected

检查确认两个备库实时同步,没有延时后,才能切换。

4、switchover切换

在切换时,在主库上是不可以选择我要切换到哪个备库的,这个选择是在备库上选择的,下面进行SWITCHOVER切换。

–主库状态

sys@ora11g> col name for a10;
sys@ora11g> set linesize 100;
sys@ora11g> select name,open_mode, database_role, switchover_status, force_logging, dataguard_broker, guard_status from v$database;

NAME	   OPEN_MODE		DATABASE_ROLE	 SWITCHOVER_STATUS    FOR DATAGUAR GUARD_S
---------- -------------------- ---------------- -------------------- --- -------- -------
ORA11G	   READ WRITE		PRIMARY 	 TO STANDBY	      YES DISABLED NONE

–备库状态

dgora11g:

sys@dgora11g> col name for a10;
sys@dgora11g> set linesize 100;
sys@dgora11g> select name,open_mode, database_role, switchover_status, force_logging, dataguard_broker, guard_status from v$database;

NAME	   OPEN_MODE		DATABASE_ROLE	 SWITCHOVER_STATUS    FOR DATAGUAR GUARD_S
---------- -------------------- ---------------- -------------------- --- -------- -------
ORA11G	   MOUNTED		PHYSICAL STANDBY NOT ALLOWED	      YES DISABLED NONE

sbora11g:

sys@sbora11g > col name for a10;
sys@sbora11g > set linesize 100;
sys@sbora11g > select name,open_mode, database_role, switchover_status, force_logging, dataguard_broker, guard_status from v$database;

NAME	   OPEN_MODE		DATABASE_ROLE	 SWITCHOVER_STATUS    FOR DATAGUAR GUARD_S
---------- -------------------- ---------------- -------------------- --- -------- -------
ORA11G	   MOUNTED		PHYSICAL STANDBY NOT ALLOWED	      YES DISABLED NONE

–将主库转为物理备库

ora11g:

alter database commit to switchover to physical standby with session shutdown;

切换后,这个数据库已经备关闭,启动数据库,这个数据库已经变为备库,启动MRP进程。

sys@ora11g> startup;
ORACLE instance started.

Total System Global Area 3691200512 bytes
Fixed Size		    2258680 bytes
Variable Size		 1392511240 bytes
Database Buffers	 2281701376 bytes
Redo Buffers		   14729216 bytes
Database mounted.
Database opened.
sys@ora11g> alter database recover managed standby database using current logfile disconnect from session;

Database altered.

或 alter database recover managed standby database using current logfile disconnect from session parallel 4; 

--检查状态,可以看到已变为从库
sys@ora11g> select name,open_mode, database_role, switchover_status, force_logging, dataguard_broker, guard_status from v$database;

NAME	   OPEN_MODE		DATABASE_ROLE	 SWITCHOVER_STATUS    FOR DATAGUAR GUARD_S
---------- -------------------- ---------------- -------------------- --- -------- -------
ORA11G	   READ ONLY WITH APPLY PHYSICAL STANDBY TO PRIMARY	      YES DISABLED NONE

PS:主库切换后,两个备库均变为TO PRIMARY状态,这时就要选择切换哪个备库为主库了。

dgora11g:

sys@dgora11g> col name for a10;
sys@dgora11g> set linesize 100;
sys@dgora11g> select name,open_mode, database_role, switchover_status, force_logging, dataguard_broker, guard_status from v$database;

NAME	   OPEN_MODE		DATABASE_ROLE	 SWITCHOVER_STATUS    FOR DATAGUAR GUARD_S
---------- -------------------- ---------------- -------------------- --- -------- -------
ORA11G	   MOUNTED		PHYSICAL STANDBY TO PRIMARY	      YES DISABLED NONE

在这里插入图片描述

sbora11g:

sys@sbora11g > col name for a10;
sys@sbora11g > set linesize 100;
sys@sbora11g > select name,open_mode, database_role, switchover_status, force_logging, dataguard_broker, guard_status from v$database;

NAME	   OPEN_MODE		DATABASE_ROLE	 SWITCHOVER_STATUS    FOR DATAGUAR GUARD_S
---------- -------------------- ---------------- -------------------- --- -------- -------
ORA11G	   MOUNTED		PHYSICAL STANDBY TO PRIMARY	      YES DISABLED NONE

在这里插入图片描述

–备库切换成主库

这里选择sbora11g这个备库切换为主库:

sys@sbora11g > alter database commit to switchover to primary with session shutdown;

Database altered.

sys@sbora11g > alter database open;

Database altered.

sys@sbora11g > select name,open_mode, database_role, switchover_status, force_logging, dataguard_broker, guard_status from v$database;

NAME	   OPEN_MODE		DATABASE_ROLE	 SWITCHOVER_STATUS    FOR DATAGUAR GUARD_S
---------- -------------------- ---------------- -------------------- --- -------- -------
ORA11G	   READ WRITE		PRIMARY 	 TO STANDBY	      YES DISABLED NONE

5、新主库参数调整

log_archive_config、log_archive_dest_3还需加上从库dgora11g

sys@sbora11g > show parameter archive;

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
archive_lag_target		     integer	 0
log_archive_config		     string	 DG_CONFIG=(ora11g,sbora11g)
log_archive_dest		     string
log_archive_dest_1		     string	 location=/u01/oradata/archivel
						 og VALID_FOR=(ALL_LOGFILES,ALL
						 _ROLES) db_unique_name=sbora11
						 g
log_archive_dest_10		     string
log_archive_dest_11		     string
log_archive_dest_12		     string
log_archive_dest_13		     string
log_archive_dest_14		     string
log_archive_dest_15		     string
log_archive_dest_16		     string
log_archive_dest_17		     string
log_archive_dest_18		     string
log_archive_dest_19		     string
log_archive_dest_2		     string	 SERVICE=ora11g LGWR ASYNC VALI
						 D_FOR=(ONLINE_LOGFILES,PRIMARY
						 _ROLE) db_unique_name=ora11g
............................................
log_archive_dest_3		     string

--log_archive_config 需将三节点都加上
alter system set log_archive_config='DG_CONFIG=(sbora11g,ora11g,dgora11g)' scope=both sid='*';
alter system set log_archive_dest_3='SERVICE=dgora11g LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=dgora11g' scope=both sid='*';
alter system set fal_server='ora11g','dgora11g' scope=both sid='*';
alter system set log_archive_dest_state_3=defer scope=both sid='*';
alter system set log_archive_dest_state_3=enable scope=both sid='*';

6、备库参数调整

–log_archive_config 若未设置,需将三节点都加上

--log_archive_config需将三节点都加上
--dgora11g 修改目标主库为sbora11g
sys@dgora11g> show parameter config;

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
dg_broker_config_file1		     string	 /u01/app/oracle/product/11.2.0
						 /db/dbs/dr1dgora11g.dat
dg_broker_config_file2		     string	 /u01/app/oracle/product/11.2.0
						 /db/dbs/dr2dgora11g.dat
log_archive_config		     string	 DG_CONFIG=(ora11g,dgora11g)
sys@dgora11g> alter system set log_archive_config='DG_CONFIG=(sbora11g,ora11g,dgora11g)' scope=both sid='*';

System altered.

--因为dgora11g这个数据库之前的主是ora11g(现在已经变成了备库),需要把dgora11g的主改成sbora11g。

alter system set log_archive_dest_2='SERVICE=sbora11g LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=sbora11g' scope=both sid='*';

alter system set FAL_SERVER='ora11g','sbora11g';

若新的主库不在备库的DG_CONFIG配置里,主库会报错:
ARC3: Archivelog destination LOG_ARCHIVE_DEST_3 disabled: destination Data Guard configuration error
Archived Log entry 29 added for thread 1 sequence 300 ID 0x108ef4ac dest 1:
Fri Aug 09 20:16:12 2024
LNS: Standby redo logfile selected for thread 1 sequence 301 for destination LOG_ARCHIVE_DEST_2

--ora11g备库已经配置,不用修改
sys@ora11g> show parameter log_archive_config;

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
log_archive_config		     string	 DG_CONFIG=(ora11g,dgora11g,sbo
						 ra11g)

7、切换后验证

–主库插入测试数据

sys@sbora11g > create table tt0809 as select * from dba_objects;

Table created.

–两备库查询

sys@ora11g> select count(*) from tt0809;

  COUNT(*)
----------
     86266
sys@dgora11g> select count(*) from tt0809;  

  COUNT(*)
----------
     86266
     

至此主从切换已完成,新主库应与两从库正常同步

关注我,学习更多的数据库知识
请添加图片描述

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

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

相关文章

落子“用户Happy”,vivo的“做活”与“长气”之道

有人说,中国手机行业,是名副其实的“Hard”模式。竞争焦灼,内卷不止。然而,这种主观的判断,也许从侧面反映出另一个客观事实:中国手机市场,凭借巨大的用户规模、多元化的消费倾向、自由展开的科…

从微软蓝屏事件聊到数据库系统中的纸牌屋

2024 年 7 月 19 日,全球约有 850 万台 Windows 电脑崩溃,无法重启,陷入蓝屏死机状态。这次故障影响了全球各地的企业和政府,波及运输、金融服务、医疗保健等绝大多数行业。 故障发生几小时后,蓝屏原因找到&#xff0…

Python 数组计算逻辑

a{1,2,3} b{2,3,4} 与 & 交集(取中) a&b{2, 3} 或 | 并集 (左中右) a&b{1,2,3,4} 差集 ^ 取左右 a^b {1,4} 减 - 取左 a - b {1} a-b {1}

同态加密和SEAL库的介绍(二)BFV 基础方案实现

写在前面: 本篇具体讲解如何使用 BFV 加密方案对加密的整数进行简单的计算(一个多项式评估),来源是官方提供的示例。BFV 是比较常见的方案,在很多大模型推理的时候,都是将浮点数的权重和输入变换成…

新品周销量20W+,月GMV1300W+,黑马品牌如何实现快速突围?

随着视频号用户的不断增加,直播带货生态的不断发展,越来越多的品牌也开始入局视频号。 近期友望数据发现,不少新品牌在视频号上脱颖而出。比如服饰内衣行业品牌「瑰菲女神」,专注女性内衣裤行业,周销量近20W件&#xf…

Java 并发(二)—— AQS原理

AQS,全名AbstractQueuedSynchronizer。 抽象队列同步器定义多线程访问共享资源的同步模板,解决了实现自定义同步器时涉及的大量细节问题,简化开发两种同步状态:独占、共享核心组件:State变量、CLH变体队列、获取 / 释…

Leetcode每日刷题之75. 颜色分类(C++)

有接触过数据结构的同学应该知道排序有很多种类,我之前也出过一篇 排序大杂烩 的博客,其中包含了一部分排序的讲解,排序在我们学习编程的过程中有着至关重要的作用,不论是大部分新手刚开始接触的冒泡排序还是C库中的sort函数&…

对象类作为类成员(详解版)

我们在第13行创建了一个人的类,并且给它赋予了两个属性,一个为int 类型的age,另一个则是Phone类型的 name,众所周知class类是一个自定义的数据类型,和struct相似,两者在默认情况下的权限不一样。而我们这时候没有Phone的数据类型&…

Docker 入门全攻略:安装、操作与常用命令指南

目录 Docker 入门全攻略:安装、操作与常用命令指南 一、引言 二、Docker 下载与安装 2.1 Docker 的系统要求 2.2 安装步骤 ①对于 Windows 的安装指南 ②对于 macOS 的安装指南 ③对于 Linux 的安装指南 三、Docker 的基本概念 3.1 镜像(Image…

用Python实现特征工程之特征变换——数值特征的归一化和标准化、类别特征的编码、特征组合和分解、特征缩放

特征工程中的特征变换是一个重要的步骤,旨在通过转换原始特征来提高模型的性能。特征变换主要包括数值特征的归一化和标准化、类别特征的编码、特征组合和分解、以及特征缩放等。下面将详细讲解这些内容,并提供相应的Python代码示例。 1. 数值特征的归一…

为什么要选择开放式耳机?开放式耳机的优缺点

今天咱们来聊聊一个特别有意思的话题:为什么我们要选择开放式耳机?在这个耳机种类繁多的世界里,开放式耳机以其独特的魅力,赢得了不少音乐爱好者和运动达人的青睐。 开放式耳机最大的特点就是它不会完全封闭你的耳朵,这…

C语言之“ 分支和循环 ” (2)

🌹个人主页🌹:喜欢草莓熊的bear 🌹专栏🌹:C语言基础 目录 前言 一、switch语句 1.1 if语句和switch语句的对比 1.2 switch语句中的break 1.3 switch语句中的default 1.4 switch语句中的case和default…

信息系统运维管理:深度解析与方案建议

在现代企业环境中,信息系统运维管理扮演着至关重要的角色。它不仅是信息系统高效、安全和稳定运行的保障,更是企业业务发展的坚实支撑。本文将深入探讨服务设计阶段、服务转换阶段、委托系统维护管理这三个关键阶段,并结合最新的互联网技术和…

Transformer模型注意力机制;层归一化(Layer Normalization)

目录 Transformer模型注意力机制 注意力机制(Attention Mechanism) 层归一化(Layer Normalization) 层归一化的作用 Transformer模型注意力机制 中,有几个关键的公式和概念需要解释,包括注意力机制(Attention Mechanism)和层归一化(Layer Normalization)。以下是…

halcon不良黄豆数量检测和大米视觉处理winform

winform halcon不良黄豆数量检测 不良黄豆数量检测.hdev 首先检测黄豆的数量 然后检测不良黄豆的数量 在winform中对其进行分开显示处理 大米视觉处理类似 这段代码主要用于图像处理和显示,使用的是Halcon语言。让我们逐步解释每个部分的功能: 构造函数…

Adnroid 数据存储:SharedPreferences详解【SharedPreferencesUtils,SharedPreferences的ANR】

目录 1)SP是什么、如何使用,SPUtils 2)SP的流程 3)comit和apply 一、SP是什么,如何使用,SPUtils 1.1 SP是什么? SharedPreferences是Android平台提供的一种轻量级的数据存储方式,…

【Linux SQLite数据库】一、SQLite交叉编译与移植

SQLite 是一个用 C 语言编写的开源、轻量级、快速、独立且高可靠性的 SQL 数据库引擎,它提供了功能齐全的数据库解决方案。SQLite 几乎可以在所有的手机和计算机上运行,它被嵌入到无数人每天都在使用的众多应用程序中。此外,SQLite 还具有稳定…

git push上不去的问题Iremote reiectedl——文件过大的问题

在新建分支的时候,发现push怎么也上传不上去,一开始觉得是权限的问题,但是尝试了各种方案都没有用,后面再仔细看了一下是文件太大了,远程拒绝推送 接下来,和大家讲讲我的解决方案 1、把修改的代码迁移到新…

将QT工程打包生成可单独运行的.exe程序

将QT工程打包生成可单独运行的.exe程序 1、生成exe文件2、导入qt配置文件3、打包qt配置文件和exe文件4、单个可执行exe文件 1、生成exe文件 Qt中执行Release操作,生成对应的exe文件。 Release的路径下会生成如下文件: 进入release文件夹,双…

【Linux基础】Linux基本指令(二)

目录 &#x1f680;前言一&#xff0c;mv指令二&#xff0c;more & less指令2.1 more 指令2.1 less指令 三&#xff0c;重定向技术(重要)3.1 echo指令3.2 输出重定向 >3.3 追加重定向 >>3.4 输入重定向 < 四&#xff0c;head & tail指令4.1 head 指令4.2 t…