在Oracle DataGuard环境中使用Broker-自动Fast Start Failove
在Oracle DataGuard数据库容灾环境中使用Broker-自动Fast Start Failove
一、环境介绍
Data Guard 环境:
Primary数据库:oracle 10.2.0.5.0
操作系统: redhat 4.4
主机名:source
IP地址:192.168.10.101
数据库SID:source
DB_UNIQUE_NAME:source_pr
Standby数据库:oracle 10.2.0.5.0
操作系统: redhat 4.4
主机名:target
IP地址:192.168.10.102
数据库SID:source
DB_UNIQUE_NAME:source_st
二、dataguard启停
注意Data Guard 启动顺序:
启动顺序:先standby ,后primary;
关闭顺序:先primary 后standby;
在备库将实例启动到mount 状态:
SQL>startup nomount;
SQL>alter database mount standby database;
SQL>alter database recover managed standby database disconnect from session;
如果要取消恢复:alter database recover managed standby database cancel;
在备库启动监听:
$lsnrctl start
在主库启动实例:
SQL> startup;
在主库启动监听:
$lsnrctl start
在主库验证归档目录是否有效:
SQL> select dest_name,status,error from v$archive_dest;
如果有错误,要排查原因。
SQL> alter system switch logfile;
SQL> select max(sequence#) from v$archived_log;
查看数据库模式
SQL>select dest_name,status,database_mode,recovery_mode,protection_mode from v$archive_dest_status;
SQL>select status,database_mode from v$archive_dest_status;
SQL>select OPEN_MODE, PROTECTION_MODE, ACTIVATION#,DATABASE_ROLE, SWITCHOVER# ,SWITCHOVER_STATUS from v$database;
三、Fast Start Failover概述与介绍
1、Broker
Data Guard环境设置了Broker后,当主库出现以下情况,Broker就会自动进行主备库的切换。
1) Instance Failure
2) Shutdown Abort
3) Offline Datafiles due to I/O error
4) Network disconnection
切换时,Observer会将备库变成主库。 同时Observer通过应用Flashback log将原来的主库变成备库。所以,Data Guard Broker必须开启Flashback,同时将DG 配置在maximum availability模式。
Data Guard Broker会在所有的主备库上使用自己的DMON进程和配置文件进行通信。当我们将DG_BROKER_START 设置为true之后,DMON进程就会启动。 对于Broker的配置文件,我们可以通过Enterprise Manger 或者使用DGMGRL命令进行创建。
Broker的配置文件有自己的参数和设置。 Data Guard 允许有多分配置文件,所以我们需要在DG_BROKER_CONFIG_FILEn 参数里指定正确的配置文件。 要注意的是, 这个控制文件是二进制文件,不要手动去修改它, 这样会破坏这个文件。
如果是RAC 环境, 所有的实例有一份Broker 配置文件。 该文件放在共享设备上。
Broker的更多内容参考:
Interaction Between the Data Guard Broker and a Data Guard Configuration [ID 249703.1]
Data Guard, Concepts and Administration
Data Guard Broker
Note:180031.1: Creating a Data Guard configuration
Note:186150.1: Data Guard 9i Creating a Logical Standby database
Note:214071.1: Creating a configuration using Data Guard Manager
Note:201669.1: Setup and maintenance of Data Guard Broker using DGMGRL
Note:745201.1: Diagnosing Connection Problems with an active Data Guard Broker configuration
2、failover类型
failover有两种类型:完全failover和立即failover。
完全failover
进行完全failover操作的是很broker会竟可能的恢复数据,同时在failover完成之后会根据情况尽可能的将没有参与failover的standby变成新的primary的可用的standby。
立即failover
立即failover的操作开始之后broker不再去试图恢复更多的数据,另一个就是failover完成之后所有没有参与failover的standby都要重新启用。
调用这两种failover的命令如下
-- 完全failover
FAILOVER TO standby_database_name;
-- 立即failover
FAILOVER TO standby_database_name IMMEDIATE;
broker执行完全failover的过程
检查primary是否可用,可用的话给出一条警告信息。
确认目标standby可用,不可用的话failover失败。RAC环境中将关闭standby的其他不参与的instance。
等待目标standby完成还在队列中的redo信息之后关闭redo log apply或是sql apply。
将目标standby转换成新的primary。
将新的primary数据库打开为读写模式。
检查其他的standby是否能成为新primary的standby,如果可以的话则该standby的状态保证不变,否则则需要re-enable。
启动redo传送服务将redo传送给那些不需要re-enable的standby数据库。
如果是RAC环境则重启那些之前关闭的instance。
broker执行立即failover的过程
确认目标standby可用,不可用的话failover失败。RAC环境中将关闭standby的其他不参与的instance。
立即停止redo log apply或是sql apply,不管是否还有可恢复的数据,这样可能会造成数据丢失。
将目标standby转换成新的primary并打开到读写模式,并启动redo传送服务。