news 2026/7/7 18:04:00

Oracle DG主备架构两种切换方式总结(switch over和fail over)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Oracle DG主备架构两种切换方式总结(switch over和fail over)

Oracle DG主备架构两种切换方式总结(switch over和fail over)

一、DG主备正常切换(即有计划的切换)

主备正常switch over切换(即有计划的切换),这种切换方式无数据丢失
备注:
1)Oracle10g版本,RAC环境下,主备都只能保留一个实例,才能进行switch over,否则不容许。而且备库上,保留的实例,必须是MPR进程存在的实例。
2)11g版本以上,上面的限制已经取消,只需确保备库切换为主库时,必须MPR进程存在的实例。(如果条件允许,保留一个节点来切换,影响最小化)

1、查看主库状态,是否能够进行switch over切换
主库上执行 set linesize 200 pagesize 999 col open_mode format a10 select open_mode,database_role,protection_level,protection_mode,switchover_status,force_logging from v$database; 查询结果类似如下 OPEN_MODE DATABASE_ROLE PROTECTION_LEVEL PROTECTION_MODE SWITCHOVER_STATUS FOR ---------- ---------------- -------------------- -------------------- -------------------- --- READ WRITE PRIMARY MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE TO STANDBY YES

根据SWITCHOVER_STATUS列,判断是否可以切换,To standby 或者session active表明可以进行切换,session active表示主备库有活动的session关联,在switchover前需要将这些session关闭(执行切换命令时加上with session shutdown)

2、主库上发起切换命令,切换为备库
主库上执行 Alter database commit to switchover to standby with session shutdown ;

这个命令完成后,主库自动down(集群环境,所有节点都会自动停止)

3、备库切换为主库
1)如果备库是集群,判断MPR日志应用进程在哪个节点,需要在MPR进程上完成备库切换为主库
备库上执行 查询MPR进程在哪个节点的语句 SELECT INST_ID,PROCESS, STATUS, THREAD#, SEQUENCE#, BLOCK#, BLOCKS FROM GV$MANAGED_STANDBY where PROCESS like '%MRP%';
2)在MPR节点上,查看备库状态,是否能够切换为主库
备库上执行 set linesize 200 pagesize 999 col open_mode format a10 select open_mode,database_role,protection_level,protection_mode,switchover_status,force_logging from v$database; 查询结果类似如下 OPEN_MODE DATABASE_ROLE PROTECTION_LEVEL PROTECTION_MODE SWITCHOVER_STATUS FOR -------------------- ---------------- -------------------- -------------------- -------------------- --- READ ONLY WITH APPLY PHYSICAL STANDBY MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE TO PRIMARY YES

根据SWITCHOVER_STATUS列,判断是否可以切换,TO PRIMARY表名可以进行切换

3)执行切换命令
备库上执行 alter database commit to switchover to primary with session shutdown ;

备注:集群环境,切换完成后,所有节点都会变为mount状态(数据库挂载状态)

4)切换后,检查备库状态
set linesize 200 pagesize 999 col open_mode format a10 select open_mode,database_role,protection_level,protection_mode,switchover_status,force_logging from v$database; OPEN_MODE DATABASE_ROLE PROTECTION_LEVEL PROTECTION_MODE SWITCHOVER_STATUS FOR ---------- ---------------- -------------------- -------------------- -------------------- --- MOUNTED PRIMARY UNPROTECTED MAXIMUM PERFORMANCE NOT ALLOWED YES
5)打开新的主库(源备库)
alter database open;

如果是集群环境,所有节点都需要执行数据库打开操作,这一点不要遗漏!!!

6)新主库检查状态
set linesize 200 pagesize 999 col open_mode format a10 select inst_id,open_mode,database_role,protection_level,protection_mode,switchover_status,force_logging from gv$database; INST_ID OPEN_MODE DATABASE_ROLE PROTECTION_LEVEL PROTECTION_MODE SWITCHOVER_STATUS FOR ---------- ---------- ---------------- -------------------- -------------------- -------------------- --- 2 READ WRITE PRIMARY MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE FAILED DESTINATION YES 1 READ WRITE PRIMARY MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE FAILED DESTINATION YES
4、原先的主库,再次打开后,直接转变为standby db,直接应用日志即可
1)打开原先的主库
单库环境 sqlplus "/as sysdba" startup 集群环境 srvctl start database -d orcl
2)检查状态
set linesize 200 pagesize 999 col open_mode format a10 select inst_id,open_mode,database_role,protection_level,protection_mode,switchover_status,force_logging from gv$database; INST_ID OPEN_MODE DATABASE_ROLE PROTECTION_LEVEL PROTECTION_MODE SWITCHOVER_STATUS FOR 2 READ ONLY PHYSICAL STANDBY MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE RECOVERY NEEDED YES 1 READ ONLY PHYSICAL STANDBY MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE RECOVERY NEEDED YES
3)执行日志应用
alter database recover managed standby database using current logfile disconnect from session;
4)检查状态
set linesize 200 pagesize 999 col open_mode format a10 select inst_id,open_mode,database_role,protection_level,protection_mode,switchover_status,force_logging from gv$database; INST_ID OPEN_MODE DATABASE_ROLE PROTECTION_LEVEL PROTECTION_MODE SWITCHOVER_STATUS FOR 1 READ ONLY WITH APPLY PHYSICAL STANDBY MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE NOT ALLOWED YES 2 READ ONLY WITH APPLY PHYSICAL STANDBY MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE NOT ALLOWED YES

至此switch over主备切换完成!

二、DG主备异常切换(主库意外挂掉,切换至备库接手对外服务)

主备异常切换,特指fail over切换,切换后主备环境破坏,备库需要重新搭建!大概率有数据丢失!
RAC环境中,关闭除了运行MRP进程的其他实例,然后再MRP存在的实例上执行。
执行切换前,备库最好是处于mount状态,可以提高切换速度

(一)老版本切换方法(12c开始有新语法,但是老方法仍旧可用)
1、如果主库可以mount,将主库中所有未到备库的归档日志和redo刷新到备库
ALTER SYSTEM FLUSH REDO TO target_db_name; 备注: 1)target_db_name:用于指定目标备库的DB_UNIQUE_NAME,必须使用单引号括起来 2)语句必须在mount状态下执行 具体如下: ALTER SYSTEM FLUSH REDO TO 'orcl_st';
2、如果主库不可以mount,使用下面方式尽可能将主库数据同步至备库
查询备库上的v$archivd_log视图,以获取redo的最大sequence号。 su - oracle sqlplus "/as sysdba" set linesize 20o pagesize 999 col standby_tns_name format a30 select inst_id,max(sequence#) ,min(sequence#) from gv$archived_log where applied='NO' group by inst_id order by 1; 将主库的最新归档日志传输到备库,然后注册该归档文件 ALTER DATABASE REGISTER PHYSICAL LOGFILE '归档日志文件名绝对路径'; 继续查询备库上的v$archived_GAP视图,在确定备库上是否存在gap SELECT inst_id,THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM gV$ARCHIVE_GAP; 如果有gap,请将gap的归档日志从主库传输到备库,然后在备库中继续注册归档文件。 ALTER DATABASE REGISTER PHYSICAL LOGFILE '归档日志文件名绝对路径'; 重复执行,直至所有的gap间隙都得到解决

如果上面的1、2步骤,都不能达成,此问题不能解决,则在failover期间可能会丢失一些数据。

3、备库取消日志应用
alter database recover managed standby database cancel;
4、备库执行如下SQL语句应用完成所有接收到的归档日志。
alter database recover managed standby database finish force; 备注:如果上面的命令出错,无法解决错误(例如gap间隙),可以通过在目标备库上执行下面的SQL语句来强制切换(会丢失一些数据): alter database activate physical standby database;
5、确认目标备库已经准备好切换成主库
SELECT SWITCHOVER_STATUS FROM V$DATABASE; TO PRIMARY或SESSIONS ACTIVE的值均表示目标备库已准备好切换到主库。如果返回结果不是这两个值,大概率只能执行强制切换。
6、目标备库上执行以下SQL语句将物理备库切换成主库
alter database commit to switchover to primary with session shutdown;
7、如果4-6步骤无问题,则表示failover切换完成,跳过这一步骤!!如果4-6步骤,切换出现问题,则只能强制切换(会丢失一些数据);
alter database activate physical standby database;
8、打开新主库
sqlplus "/as sysdba" alter database open; 检查: select inst_id,open_mode,database_role,protection_level,protection_mode,switchover_status,force_logging from gv$database;
9、建议立即对新主库执行完整备份
(二)12c版本开始,新的failover方法(旧方法也可以继续使用)

12c版本开始,failover有新语,方法如下

1-3步骤保持不变
4、目标备库上执行(语法有变动)
ALTER DATABASE FAILOVER TO targe_db_name; 备注: 1)target_db_name:用于指定目标备库的 DB_UNIQUE_NAME,必须使用单引号括起来 如果上面的命令执行报错,下面的命令忽略与原主库交互时遇到的任何故障,并在可能的情况下继续进行failover,如下 ALTER DATABASE FAILOVER TO targe_db_name FORCE;
5、如果4步骤无问题,则表示failover切换完成,跳过这一步骤即可!!如果步骤4,切换出现问题,则只能强制切换(会丢失一些数据);
alter database activate physical standby database
6、打开新主库
sqlplus "/as sysdba" alter database open; 检查: select inst_id,open_mode,database_role,protection_level,protection_mode,switchover_status,force_logging from gv$database;
7、建议立即对新主库执行完整备份
(三)FAILOVER切换总结
1、主库尽量将日志传输至备库中
2、备库取消日志一个应用(取消同步)
alter database recover managed standby database cancel;
3、尝试常规切换(常规切换不行、报错,则直接使用步骤四)
alter database recover managed standby database finish force; alter database commit to switchover to primary with session shutdown; shutdown immediate;
4、如果常规切换成功,步骤四无需执行!!如果fail over时,存在gap,常规切换不起作用,直接使用强制切换(会丢失一部分数据)
alter database activate physical standby database; shutdown immediate;
5、打开新主库
startup;

如果时间紧迫,必须第一时间打开备库,则上述步骤,只需要执行2、4、5即可,这是最快打开备库的方法!

(四)DG BROKER工具下的failover切换,记录一下(实际很少使用)

1、通过dg broker工具检查主备的同步状态

show database verbose 目标主库; show database verbose 目标备库; show configuration verbose;

返回结果中有报错,尽量处理

2、通过dg broker工具执行failover(主备库皆可执行)

failover to 备库名称。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/7 17:56:27

多参数水质在线监测设备—水环境实时管控解决方案

水环境治理重在实时管控,传统水质抽检采样繁琐、检测滞后,只能阶段性研判水质状况,难以捕捉水体瞬时污染变化,给水务监管、水质运维带来不少难题。这款多参数水质在线监测设备,依托物联网架构打造一体化监测方案&#…

作者头像 李华
网站建设 2026/7/7 17:54:42

python6.5-函数的传参方式

传参方式指的是,在调用函数时,传递实参的方式。1、位置参数:调用函数时根据函数定义时的位置来传递参数要求:调用函数时参数顺序与定义函数时参数顺序完全一致2、关键字参数:调用函数时以函数定义时形参名称作为关键字…

作者头像 李华
网站建设 2026/7/7 17:53:10

2026国内数字孪生头部企业TOP5:空间智能、平台能力与行业落地分析

2026年,国内数字孪生行业已经从概念普及期进入规模化落地阶段。企业选型时,不能只看三维画面是否精细,也不能只看大屏展示是否震撼,更要关注平台是否具备空间智能、数据融合、仿真推演、国产化适配、AI融合和行业闭环能力。站在行…

作者头像 李华
网站建设 2026/7/7 17:50:47

2026遵义黄金回收白银回收铂金回收旧料回收怎么选?五家高实价铂金白银线下门店测评清单 + 联系方式

遵义街头巷尾,黄金铂金白银回收门店鳞次栉比,看似选择众多实则鱼龙混杂,报价虚高、克扣成色、暗设陷阱者屡见不鲜。为帮市民甄别靠谱变现渠道,小编实地走访、货比三家,筛选出本地五家诚信经营的正规回收商户。这份清单…

作者头像 李华
网站建设 2026/7/7 17:45:21

智慧党建之“用党建”方便快捷

智慧党建“用党建”是基于微信平台,以“指尖”为触点,深度融合移动技术与党建信息化,打造便捷高效的“指尖上的党建云矩阵”。集党建宣传、互动交流、组织生活、学习考试、党员服务等应用于一体,每一位党员都能在指尖上感受到党建…

作者头像 李华
网站建设 2026/7/7 17:43:53

蓝海AIoT一站式工作台实践案例:高危作业智控驾驶舱

随着工矿行业高危作业常态化开展,传统安全监管模式的诸多短板持续暴露,成为制约安全生产精细化、规范化管控的突出瓶颈。高危作业场景复杂、点位分散、流动性强的行业特性,让传统监管方式难以适配现场安全管控需求。本项目搭建全域高危作业智…

作者头像 李华