【DataGuard】OracleDataGuard数据保护模式切换
Data Guard 提供三种数据保护模式:最大保护(Maximum Protection),最高可用(Maximum Availability)和 最高性能(Maximum Performance)。
如果按照对数据的保护程度或者说主从库数据的同步性 由低到高排序,三种保护模式的顺序应该是:最高性能、最高可用、最大保护 。
本文通过实验模拟三种数据保护模式进行相互切换六个场景,对比保护模式的升级、切换过程。
【实验图例】
【实验环境】
操作系统:Red Hat Enterprise Linux Server release 5.4数据库:Oracle Database 11g Enterprise Edition Release 11.2.0.3.0
【主库、物理备库结构信息】
【实验过程】
①、最高性能 升级 最高可用
(1)查看数据库当前保护模式:最高性能模式
select
database_role,protection_mode,protection_level from v$database;
主库 Primary :
创新互联专注于河西网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供河西营销型网站建设,河西网站制作、河西网页设计、河西网站官网定制、微信小程序开发服务,打造河西网络公司原创品牌,更为您提供河西网站排名全网营销落地服务。
物理备库 Physical Standby
查看日志传输方式
当前在最大性能模式下,日志传输方式为ARCH ASYNC,arch进程异步传输归档的方式。
(2)修改主库日志传输模式
要升级为最高通过修改初始化参数文件中远程归档参数,讲日志传输模式改为LGWR SYNC AFIRM,即lgwr进程同步传输redo日志的方式。
vim $ORACLE_HOME/dbs/initBJ.ora
主库正常关库后开库。
shutdown immediate;
startup;
(3)备库添加standby logfilegroup
首先查看当前日志组个数、大小、文件位置
select sequence#,group#,bytes/1024/1024 MB from v$log;
select member from v$logfile;
备库要添加4个standby 日志组,比普通日志组多一个。
alter database add standby logfile group 4 '/u02/oradata/sh/redo04.std' size 50m;
alter database add standby logfile group 5 '/u02/oradata/sh/redo05.std' size 50m;
alter database add standby logfile group 6 '/u02/oradata/sh/redo06.std' size 50m;
alter database add standby logfile group 7 '/u02/oradata/sh/redo07.std' size 50m;
添加完成后查看,standby logfile group 已经添加
(4)切换数据保护模式为最高可用
alter database set standby database
to maximize availability;
查看当前主、备库数据保护模式,已经是最高可用模式。
select database_role,protection_mode,protection_level from v$database;
②、最高可用 升级 最大保护
(1)查看当前数据库保护模式:最高可用模式select database_role,protection_mode,protection_level from v$database;
(2)设置数据库保护模式为最大保护
alter database set standby database
to maximize protection;
查看数据库当前保护模式,已经升级成功:最大保护模式
select database_role,protection_mode,protection_level from v$database;
③、最大保护 转 最高可用 (降级)
查询当前保护模式状态:最大保护模式
设置保护模式为最高可用
再次查询,protection_level 已成功切换为:最高可用模式。
select database_role,open_mode,protection_mode,protection_level from v$database;
alter database set standby database to maximize availability;
select database_role,open_mode,protection_mode,protection_level from v$database;
④、最高可用 转 最高性能 (降级)
查询当前保护模式状态:最高可用模式
设置保护模式为最高性能
再次查询,已成功切换为:最高性能模式。
select database_role,protection_mode,protection_level from v$database;
alter database set standby database to maximize performance;
select database_role,protection_mode,protection_level from v$database;
⑤、最高性能 升级 最大保护
查询当前数据库保护模式:最高性能模式select database_role,open_mode,protection_mode,protection_level from v$database;
设置数据保护模式为最大保护报错,【ORA-01126】:database must be mounted in this instance and not open in any instance;
要求在mounted状态操作,且任何实例都不能处于open状态。
alter database set standby database to maximize protection;
正常关库,把库起到mount状态shutdown immediate;
startup mount;
在mount状态,设置数据库保护模式,可以切换,因处于mount状态,当先保护模式显示unprotected.
select database_role,protection_mode,protection_level from v$database;
alter database
open;
⑥、最大保护 转 最高性能 (降级)
查看当前数据库保护模式:最大保护模式
设置数据库保护模式为最高性能
查看已经设置成功,protection_level 已变成最高性能模式。
select database_role,protection_mode,protection_level from v$database;
alter database set standby database to maximize performance;
select database_role,protection_mode,protection_level from v$database;
【实验总结】
1、最高性能模式既可以使用ARCH方式传递日志,也可以使用LGWR方式传递,在升级到更高级别保护模式时,需使用LGWR方式,且需要在备库创建standby日志组。2、三种保护模式进行切换时,最高性能升级到最大保护模式(⑤),需先把数据库重启到mounted状态才能操作。其他情况(①②③④⑥)相互切换时,可以直接进行。
根据实验结论,在生产环境下如果需要从最高性能模式升级为最大保护模式,可先从最高性能模式升级最高可用模式,再由最高可用模式升级为最大保护模式。
如下图,通过①②分步升级的方式代替⑤直接升级,避免了重启到mounted状态对生产环境下业务造成的影响。
吕星昊
2014.8.9
新闻标题:【DataGuard】OracleDataGuard数据保护模式切换
标题来源:http://hbruida.cn/article/jsodhc.html