声明:最近小编可能会不定期托更,最近在准备跳槽,希望大家可以理解,我会尽量跟上每天文章的分享。希望我的这个公众号可以对大家有帮助。也希望大家能通过公众平台和我私信沟通,我们一起学习和进步。么么哒!!!
物理standby角色转换
首先在角色切换的时候一定要注意:
检查各数据库的初始化参数,主要确认对不同角色相关的初始化参数进行正确的配置。
确保可能成为primary数据库的standby服务器已经处于archivelog模式。
确保standby数据库的临时文件存在并且匹配primary数据库的临时文件。
确保standby数据块的RAC实例只有一个处于open状态。(对于rac结构的standby数据库,在角色装欢的时候只能有一个实例startup。其他的RAC实例必须统统的shutdown,等待角色转换结束的时候在startup)
有两中转换方法:
switchover:
无损转换,通常是用户手动出发或者有计划的让其自动触发,其执行分为两个阶段,第一个阶段是primary数据库转换为standby角色,第二步,standby 数据库转换成primary数据库,这样证明就是两个角色之间的互相转换。
fallover:
当发生了无法预知的原因,导致primary数据库故障并且短内不能回复就需要failover,这种切换一定要注意。所以需要完备的备份恢复策略而且需要primary一定要处于最大数据保护和最高可用性模式。
这里需要注意的是在failover之前,一定要尽量将primary的可用redo和归档都复制到standby。不然的话在failover之后会导致原standby数据库丢失数据。
注意:
如果转换角色的standby数据库处于maximum protection的模式。需要手动将其切换成maximum performance模式
SQL>select protection_mode from v$database ; --查看保护模式
SQL>alter database set standby database to maximize performance;
当standby切换成新的primary之后,就可以随意更改数据库的保护模式了
此时要注意的是当standby处于max protection 模式下,如果primary仍然和standby数据库有数据传输,此时alter database 更改standby保护模式会失败,这也是由maxmum protection模式特性所决定的。
这里需要注意的是在failover之前,一定要尽量将primary的可用redo和归档都复制到standby。不然的话在failover之后会导致原standby数据库丢失数据。
物理standby的switchover
这个步骤注意先后顺序
先查看primary
先查看是否支持switch over 的操作
select swictchover_status from v$database;
primary 的结果
SWITCHOVER_STATUS
--------------------
TO STANDBY
alter database commit to switchover to physical standby;
这个时候primary数据库会转变为standby数据库;并且自动备份其控制文件到trace文件当中。
select database_role from v$database;
DATABASE_ROLE
--------------------
STANDBY
查看standby
select switchover_status from v$database ;
SWITCHOVER_STATUS
--------------------
TO PRIMARY
首先,这里不一定显示的是这样,很可能显示的是
SWITCHOVER_STATUS
--------------------
NOT ALLOWED
这种情况之后介绍,需要检查在初始化参数文件当中的设置,问题可能出在primary的中的初始化参数
primary转换角色
alter database commit to switchover to primary;
待转换的物理standby可以处于mount模式和open read only,但是不可以处于open read write模式。
打开primary
alter database open;
如过原standby的数据库处于open read only 模式,需要先shutdown 之后startup。
物理standby的failover
注意一下几点:
failover 之后,原primary的数据库默认不在是data guard 配置的一部分。
其他的逻辑/物理standby数据库不直接参与failover的过程,因此这些和数据库不需要做任何操作。
某些情况下,新的primary数据库配置之后,需要重新创建其他的所有的standby 数据库。
此处在select switchover_status from v$database当中,如果发现switchover_status的状态并不是to standby,而是
SWITCHOVER_STATUS
--------------------
FAILED DESTINATION
或者是
SWITCHOVER_STATUS
--------------------
RESOLVABLE GAP
或者是
SWITCHOVER_STATUS
--------------------
LOG SWITCH GAP
此处记住,第一种情况一定要排查监听是否开启,数据库参数文件是否配置正确。dg最重要的是监听文件,监听一定要开启,一定要写正确的数据库参数文件。
当发现有resolvable gap 的情况或者是log switch gap 的时候,一定要注意这种情况是因为当前日志没有写完,没有传到Standby数据库,所以需要alter system archive log current 切一次归档。
THAT'S ALL
BY CUI PEACE
领取专属 10元无门槛券
私享最新 技术干货