日期:2014-05-16 浏览次数:20509 次
实验环境:OEL+Oracle11.2.0.3+physical standby
众所周知,Data Guard已经是现今标准的主流容灾方案,由于日志传递对于网络适应程度强,且可以采用同步实时的传递方式和异步延迟的传递方式,甚至可以成为远程的异地容灾方案。不管用于何种用途,DG都免不了要进行角色转换,即将standby 数据库切换为primary数据库,角色转换分为:switchover和failover两种;两种区别从三个角度来对比:
(1)、使用场合不同:Switchover 用于有准备的、计划之中的切换,通常是系统升级、数据迁移等常态任务;Failover用于意料之外的突发情况,比如异常掉电、自然灾难等等。
(2)、数据丢失程度不同:Switchover不会丢失数据,Failover通常意味着有部分数据丢失。
(3)、善后处理的不同:Switchover之后Dataguard环境不会被破坏,任然有Primary、Standby两种角色的系统存在。但是Failover之后,Dataguard环境就会被破坏,必须需要重建。
因为Switchover这种转化是有DBA主动、人为触发的,所以Switchover的步骤都是标准化的。Switchover流程是从Primary Database开始,终止于Standby Database。
Switchover步骤如下:
1 在主库端检查数据库可切换状态
SQL> select switchover_status from v$database;
SWITCHOVER_STATUS:TO STANDBY 表示可以正常切换.
如果SWITCHOVER_STATUS 的值为SESSIONS ACTIVE,表示当前有会话处于ACTIVE状态
2 开始主库正常切换
如果SWITCHOVER_STATUS 的值为TO STANDBY:
SQL>alter database commit to switchover to physical standby;
Database altered.
如果SWITCHOVER_STATUS 的值为SESSIONS ACTIVE:
SQL>alter database commit to switchover to physical standby with session shutdown;
Database altered.