ADG switchover and failover 、三种模式的切换

本文详细介绍了Oracle Active Data Guard (ADG) 的三种模式:最大保护、最高性能及最高可用性的特点与切换方法,并通过实例演示了如何进行switchover操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


ADG 三种模式是针对 主库在未计划内停机但停机时主库数据要尽量达到哪种目的 而提出的;

LYNC 、ASYNC 是针对主库负载提出的;




 ADG 配置 见 http://my.oschina.net/1272149624/blog/618290


本节接上节继续——ADG switchover and failover 、三种模式的切换


一、ADG有三种(PROTECTION|AVAILABILITY|PERFORMANCE)模式切换


首先对三种模式做个简单的介绍:

DG的三种模式:

最大保护:主节点事务提交前,redo写入在线日志,而且从节点也要写入到standby redolog中,并且保证在从库中至少一个节点可用,在主节点才提交事务,注意,最大保护模式,从节点故障,主库会被shutdown

最高性能:这种模式,主节点随时提交事务,事务提交时,redo至少写入一个从节点,但是写入不一定同步。

最高可用性(介于最大保护与最大性能之间):这种模式和最大保护有点类似,不同的是,从库故障,主库不会shutdown,而是转为最高性能模式,从库恢复后,转回最高可用性模式。

 Oracle 10g Dataguard 物理standby只能read only打开,此时只接受redo,不应用redo。应用redo,就不能打开(只能mount);Oracle 11G Dataguard 可以以open read only模式打开,继续应用redo.





查看ADG当前模式

主:

SQL> select database_role,protection_mode,protection_level from v$database;
DATABASE_ROLE PROTECTION_MODE      PROTECTION_LEVEL
---------------- -------------------- --------------------
PRIMARY  MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE

备:

SQL> select database_role,protection_mode,protection_level from v$database;
DATABASE_ROLE PROTECTION_MODE      PROTECTION_LEVEL
---------------- -------------------- --------------------
PHYSICAL STANDBY MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE

--默认ADG为最大性能模式


切换为最大可用模式

SQL> alter database set standby database to maximize availability;
主:
SQL> select database_role,protection_mode,protection_level from v$database;
DATABASE_ROLE PROTECTION_MODE      PROTECTION_LEVEL
---------------- -------------------- --------------------
PRIMARY  MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY
备:
SQL> select database_role,protection_mode,protection_level from v$database;
DATABASE_ROLE PROTECTION_MODE      PROTECTION_LEVEL
---------------- -------------------- --------------------
PHYSICAL STANDBY MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY


切换为最高保护

SQL>alter database set standby database to maximize protection;
主:
SQL> select database_role,protection_mode,protection_level from v$database;
DATABASE_ROLE PROTECTION_MODE      PROTECTION_LEVEL
---------------- -------------------- --------------------
PRIMARY  MAXIMUM PROTECTION   MAXIMUM PROTECTION
备:
SQL> select database_role,protection_mode,protection_level from v$database;
DATABASE_ROLE PROTECTION_MODE      PROTECTION_LEVEL
---------------- -------------------- --------------------
PHYSICAL STANDBY MAXIMUM PROTECTION   MAXIMUM PROTECTION


********************* 三种模式间,具体细节区别,请自行建立相关实验测试 *********************



二、 failover测试





三、switchover测试

查看主备状态

主:
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
primary  OPEN
备:
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
standby  OPEN


switchover切换

SQL>alter database commit to switchover to physical standby with session shutdown;
查看主库状态
SQL> select database_role,protection_mode,protection_level from v$database;
DATABASE_ROLE PROTECTION_MODE      PROTECTION_LEVEL
---------------- -------------------- --------------------
PHYSICAL STANDBY MAXIMUM PROTECTION   UNPROTECTED
SQL>  select database_role,switchover_status from v$database;  
DATABASE_ROLE SWITCHOVER_STATUS
---------------- --------------------
PHYSICAL STANDBY RECOVERY NEEDED
查看备库状态
SQL> select database_role,protection_mode,protection_level from v$database;
DATABASE_ROLE PROTECTION_MODE      PROTECTION_LEVEL
---------------- -------------------- --------------------
PHYSICAL STANDBY MAXIMUM PROTECTION   MAXIMUM PROTECTION



备库:

SQL> alter database commit to switchover to primary with session shutdown;


Database altered.


查看备库状态:

SQL> select database_role,protection_mode,protection_level from v$database;
DATABASE_ROLE PROTECTION_MODE      PROTECTION_LEVEL
---------------- -------------------- --------------------
PRIMARY  MAXIMUM PROTECTION   UNPROTECTED
查看主库状态:
SQL>  select database_role,switchover_status from v$database;  
DATABASE_ROLE SWITCHOVER_STATUS
---------------- --------------------
PHYSICAL STANDBY RECOVERY NEEDED


主备都执行:

shutdown immediate;

startup;





查看备库状态,发现成了primary角色

SQL> select database_role,protection_mode,protection_level from v$database;
DATABASE_ROLE PROTECTION_MODE      PROTECTION_LEVEL
---------------- -------------------- --------------------
PRIMARY  MAXIMUM PROTECTION   MAXIMUM PROTECTION


查看主库状态,发现成了standby角色

SQL>  select database_role,switchover_status from v$database;  
DATABASE_ROLE SWITCHOVER_STATUS
---------------- --------------------
PHYSICAL STANDBY TO PRIMARY



做测试

备:
SQL> archive log list;
Database log mode       Archive Mode
Automatic archival       Enabled
Archive destination       /u01/app/oracle/fast_recovery_area
Oldest online log sequence     40
Next log sequence to archive   41
Current log sequence       41
主:
SQL> archive log list;
Database log mode       Archive Mode
Automatic archival       Enabled
Archive destination       /u01/app/oracle/fast_recovery_area
Oldest online log sequence     39
Next log sequence to archive   0
Current log sequence       41
备:
SQL> alter system switch logfile;  
System altered.
SQL> archive log list;
Database log mode       Archive Mode
Automatic archival       Enabled
Archive destination       /u01/app/oracle/fast_recovery_area
Oldest online log sequence     40
Next log sequence to archive   42
Current log sequence       42
主:
SQL> archive log list;
Database log mode       Archive Mode
Automatic archival       Enabled
Archive destination       /u01/app/oracle/fast_recovery_area
Oldest online log sequence     39
Next log sequence to archive   0
Current log sequence       42
查看备库switchover状态
SQL>  select database_role,switchover_status from v$database;
DATABASE_ROLE SWITCHOVER_STATUS
---------------- --------------------
PRIMARY  TO STANDBY
查看主库switchover状态
SQL>  select database_role,switchover_status from v$database;
DATABASE_ROLE SWITCHOVER_STATUS
---------------- --------------------
PHYSICAL STANDBY NOT ALLOWED

---SWITCHOVER_STATUS好像不正常,不过后面测试却是可以的,具体原因,我再研究下下

***************至此,switchover 结束 *********


关于,swithover后,验证数据可行性,上面步骤是有问题的,留下悬念(提示,备库启动时,应该先启动到mount,再recover)








转载于:https://my.oschina.net/1272149624/blog/618405

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值