实战dataguard主从切换

简介: 前言:        众所周知DataGuard一般的切换分成两种,一种是系统正常的情况下的切换这种方式为:switchover是无损切换,不会丢失数据;另外一种方式属于灾难情况下的切换,这种情况下一般主库已经启动不起来了,为failover,有可能会丢失数据,并且切换后原primary 数据库也不再是该data guard 配置的一部分了。

前言:

       众所周知DataGuard一般的切换分成两种,一种是系统正常的情况下的切换这种方式为:switchover是无损切换,不会丢失数据;另外一种方式属于灾难情况下的切换,这种情况下一般主库已经启动不起来了,为failover,有可能会丢失数据,并且切换后原primary 数据库也不再是该data guard 配置的一部分了。

       本文先简单的介绍在正常情况下运行的系统切换测试; 

 

整个dataguard的搭建,请参考实战ORACLE DataGuard不停机的配置,只要按照该文档操作,保证没有问题;

 

环境信息:

hostname

db_name

db_unique_name

role

dg2

orcl

orcldg2

PRIMARY

dg1

orcl

orcldg1

STANDBY

 

切换步骤:

一、主库的操作

1、主数据库的状态检查

脚本:SQL> select switchover_status from v$database;

说明:如果该列值为"TO STANDBY"则表示primary 数据库支持转换为standby 角色,否则的话你就需要重新检查一下Data Guard 配置,比如看看LOG_ARCHIVE_DEST_n 之类参数值是否正确有效等等。

 

2、首先将primary 转换为standby 的角色

脚本:SQL> alter database commit to switchover to physical standby;

说明:PRIMARY进行转换完毕后,查看状态会变成RECOVERY NEEDED;

 

3、重启动到mount --原primary 数据库操作

SQL> shutdown immediate

ORA-01507: 未装载数据库

ORACLE 例程已经关闭。

SQL> startup mount

ORACLE 例程已经启动

 

二、备库切换成主库的操作

完成以上操作后,变可以进行以下备库的操作

1、检查备库的状态

脚本:脚本:SQL> select switchover_status from v$database;

 

2、确认没有问题后,可以进行切换转换standby 到primary 角色

脚本:SQL> alter database commit to switchover to primary;

 

3、完成转换,打开新的primary 数据库

SQL> alter database open;

 

4、查看当前系统的状态

脚本:select name,open_mode,database_role,protection_mode,SWITCHOVER_STATUS  From v$database;

 

三、原主库切换成备库

当前的备库是mount状态了,运行以下语句

1、执行日志的运用

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

 

2、取消日志的运用

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;  

 

3、打开数据库

SQL> ALTER DATABASE OPEN;

 

4、在open状态下执行日志的即时运用

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

 

四、测试

1、在dg1上面插入一个表test,并插入数值1

 

2、在dg2上面检查

 

大功告成了,数据马上传送到dg2了;

相关文章
|
存储 缓存 NoSQL
服务搭建篇(五) Redis单机/redis-cluster集群搭建
当客户端向一个错误的节点发出了指令,该节点会发现指令的 key 所在的槽位并不归自己管理,这时它会向客户端发送一个特殊的跳转指令携带目标操作的节点地址,告诉客户端去连这个节点去获取数据。客户端收到指令后除了跳转到正确的节点上去操作,还会同步更新纠正本地的槽位映射表缓存,后续所有 key 将使用新的槽位映射表。下面第21步操作会有演示
662 0
|
机器学习/深度学习 数据挖掘 PyTorch
视觉神经网络模型优秀开源工作:PyTorch Image Models(timm)库(上)
视觉神经网络模型优秀开源工作:PyTorch Image Models(timm)库(上)
|
数据采集 缓存 搜索推荐
服务端渲染(SSR)与静态站点生成(SSG)结合使用
服务端渲染(SSR)与静态站点生成(SSG)结合使用
|
并行计算 Java
Future、CompletableFuture概述
Future、CompletableFuture概述
280 0
|
11月前
|
域名解析 缓存 网络协议
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
|
C#
C#一分钟浅谈:Lambda 表达式和匿名方法
本文详细介绍了C#编程中的Lambda表达式与匿名方法,两者均可用于定义无名函数,使代码更简洁易维护。文章通过基础概念讲解和示例对比,展示了各自语法特点,如Lambda表达式的`(parameters) => expression`形式及匿名方法的`delegate(parameters)`结构。并通过实例演示了两者的应用差异,强调了在使用Lambda时应注意闭包问题及其解决策略,推荐优先使用Lambda表达式以增强代码可读性。
175 8
|
Prometheus 监控 Cloud Native
介绍如何使用Prometheus进行监控
介绍如何使用Prometheus进行监控
1544 3
|
开发框架 运维 前端开发
构建一体化运维平台的八大功能
【6月更文挑战第6天】构建一体化运维平台的关键8个基本功能。
System Generator学习——将代码导入System Generator(二)
System Generator学习——将代码导入System Generator
162 1