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

本文主要分享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:00sys@dgora11g> select value from v$dataguard_stats where name='apply lag'; VALUE
----------------------------------------------------------------
+00 00:00:00--检查最新归档到的日志号及是否有gapsys@dgora11g> SELECT UNIQUE THREAD# AS THREAD, MAX(SEQUENCE#) OVER (PARTITION BY thread#) AS LAST from V$ARCHIVED_LOG;THREAD	 LAST
---------- ----------1	  289sys@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:00sys@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	  289sys@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/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) db_unique_name=sbora11g
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 VALID_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,sbora11g)

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.rhkb.cn/news/395991.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Github 2024-08-09 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-08-09统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目6TypeScript项目4Jupyter Notebook项目1Cuda项目1Sentry:开发者优先的错误跟踪和性能监控平台 创建周期:5093 天开发语言:Python,…

android系统中data下的xml乱码无法查看问题剖析及解决方法

背景: Android12高版本以后系统生成的很多data路径下的xml都变成了二进制类型,根本没办法看xml的内容具体如下: 比如想要看当前系统的widget的相关数据 ./system/users/0/appwidgets.xml 以前老版本都是可以直接看的,这些syste…

旅游出行必备商城小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,新闻类型管理,新闻资讯管理,商品类型管理,旅游商品管理,旅游景点,景点分类,系统管理 微信端账号功能包括&am…

GitHub的常用操作

目录 GitHub GitHub加速 克隆GitHub上的项目到本地 克隆GitHub上指定分支的项目 把本地项目上传到GitHub上管理 删除分支里的内容 单个仓库管理多个项目 上传项目到新建的分支 目前正在逐步熟悉GitHub,打算把整理好的代码上传到GitHub上,建立属…

C++ 类与对象

面向对象程序设计基本特点 特点: 抽象(数据抽象,行为抽象) 数据抽象:int hour,int minute.....,车:长,宽,高.... 功能抽象:showTime(),setTime() .....车:刹车…

使用Cisco进行模拟配置OSPF路由协议

OSPF路由协议 1.实验目的 1)理解OSPF 2)掌握OSPF的配置方法 3)掌握查看OSPF的相关信息 2.实验流程 开始 → 布置拓扑 → 配置IP地址 → 配置OSPF路由并验证PC路由的连通性 → 查看路由器路由信息 → 查看路由协议配置与统计信息 → 查看O…

【从零开始一步步学习VSOA开发】VSOA命令行工具vcx

VSOA命令行工具vcx vcx 介绍 vcx 是一个使用 VSOA RPC 客户端功能执行器,支持 RPC SET/GET 调用。 [rootsylixos:/root]# [rootsylixos:/root]# vcx -help USAGE: vcx [options] url -h : Show help message. -v : Show vcx version. -z …

[MRCTF2020]PYWebsite-1

打开以后查看源码信息 看到flag.php试着打开 提示看到,需要后端审计代码,而且应该要改ip,改成自己本地,burp抓包看一下 改X-Forwarded-For:127.0.0.1 得到flag flag{74242eb7-844f-4638-8aae-9ec37870d585}

通过LLM大模型将「白雪公主的故事」转为图数据存储

💡 本次将使用LLM大模型将「白雪公主的故事」转为图数据存储于neo4j数据库中,并展示图数据部分的效果 故事内容 很久很久以前,在一个遥远的王国里,有一位美丽的**王后**生下了一个皮肤像雪一样白皙、嘴唇像血一样鲜红的**女儿**…

网页设计模板范例

随着互联网的发展,网页设计变得越来越重要。一个吸引人的网页设计可以吸引更多的用户,提升用户体验,并且使网站内容更加易于浏览和理解。在这篇文章中,我将为大家介绍一个网页设计模板范例。 1. 选择合适的颜色和字体:…

golang for range time.Ticker 和 time.Timer时间通道使用示例 - 每隔指定时间执行一次,执行指定时长后退出执行

golang中的 ticker和timer时间通道除了可以使用for select case语句来执行外, 还可以使用 for range语句来执行ticker或者timer时间通道。 for range time.Ticker 和 time.Timer时间通道使用示例 下面的示例演示了time.Ticker 和 time.Timer的区别和使用演示。 Ti…

JAVA分布式CAP原则

分布式CAP原则主要是使用SpringCloud框架的时候会涉及到该部分知识点 CAP原则指的是在一个分布式系统中,一致性,可用性,分区容错性 实际的项目开发中,这三者往往是不可兼顾的。 AP:牺牲一致性,保证可用性…

【学习笔记】Matlab和python双语言的学习(动态规划)

文章目录 前言一、动态规划动态规划的基本步骤示例1示例2 三、代码实现----Matlab1.示例12.示例2 四、代码实现----python1.示例12.示例2 总结 前言 通过模型算法,熟练对Matlab和python的应用。 学习视频链接: https://www.bilibili.com/video/BV1EK411…

Linux驱动开发—平台总线模型详解

文章目录 1.平台总线介绍1.1平台总线模型的组成部分1.2平台总线模型的优势 2.使用平台总线模型开发驱动2.1注册platform设备2.2注册platform驱动2.3效果演示 1.平台总线介绍 Linux 平台总线模型(Platform Bus Model)是一种设备驱动框架,用于…

Debezium报错处理系列之第116篇:Caused by: java.lang.NumberFormatException: null

Debezium报错处理系列之第116篇:Caused by: java.lang.NumberFormatException: null 一、完整报错二、错误原因三、解决方法Debezium从入门到精通系列之:研究Debezium技术遇到的各种错误解决方法汇总: Debezium从入门到精通系列之:百篇系列文章汇总之研究Debezium技术遇到的…

【从零开始一步步学习VSOA开发】VSOA命令行工具vcl

VSOA命令行工具vcl 介绍 vcl 是一个 VSOA 命令监听器,支持订阅来自特定服务器发布的所有数据。 [rootsylixos:/root]# [rootsylixos:/root]# vcl -help USAGE: vcl [options] host [topics] -h : Show help message. -v : Show vcl version. …

平安城市行业无人机解决方案(网格化巡逻场景应用)

场景痛点: 缺少飞手,导致无人机应用频次偏低 无人机需要人工换电池、维护及存储 日常巡逻 | 无人机补盲巡逻 大疆航点飞行功能,重复性任务只飞一遍,后续重复调用 无人机航点规划,一次设置,后续重复调用…

SpringBoot + RabbitMQ + WebSocket + STOMP 协议 + Vue 实现简单的实时在线聊天案例

1. 什么是WebSocket? WebSocket是一种在单个TCP连接上进行全双工通信的协议。它允许客户端和服务器之间的实时、双向数据传输。与传统的HTTP请求/响应模型相比,WebSocket更加高效,因为它在初次握手后,连接保持打开状态&#xff0…

前端(HTML + CSS)小兔鲜儿项目(仿)

前言 这是一个简单的商城网站,代码部分为HTML CSS 和少量JS代码 项目总览 一、头部区域 头部的 购物车 和 手机 用的是 文字图标,所以效果可以和文字一样 购物车右上角用的是绝对定位 logo用的是 h1 标签,用来提高网站搜索排名 二、banne…

Golang | Leetcode Golang题解之第331题验证二叉树的前序序列化

题目&#xff1a; 题解&#xff1a; func isValidSerialization(preorder string) bool {n : len(preorder)slots : 1for i : 0; i < n; {if slots 0 {return false}if preorder[i] , {i} else if preorder[i] # {slots--i} else {// 读一个数字for i < n &&…