这个fast-start failover的功能是当primary数据库down掉后,它会自动地快速执行切换standby数据库为primary数据库操作,在实际环境中这个功能还是蛮不错的。那么何时系统才会执行fast-start failover呢?据官方文档介绍,当数据库以正常模式(shutdown immediate、shutdown normal、shutdown transactional)关闭时,系统不会触发fast-start failover的。下面的过程是使用shutdown abort关闭primary数据库的,所以这个操作触发了fast-start failover。在这里会用到observer,observer是用来监控primary数据库是否可用,当主库不可用时,系统会执行快速切换standby数据库为primary数据库。官方建议observer不能与primary和standby数据库位于同一台主机,由于资源有限,我这里的primary、standby数据库与observer都位于同一台机器。primary数据库的名称是db01,standby的数据库名称是db02。

一、在primary和standby数据库启用flashback:

1、主库db01上操作:

Oracle Data Guard fast-start failover配置与应用_第1张图片

Oracle Data Guard fast-start failover配置与应用_第2张图片

在standby数据库上打开flashback之前,要先将standby数据库的intended state的状态更改为apply-off,primary数据库上不用操作。

2、备库操作:

Oracle Data Guard fast-start failover配置与应用_第3张图片

打开flashback之后,要将standby数据库的intended state的状态更改为apply-on。

Oracle Data Guard fast-start failover配置与应用_第4张图片

二、配置和启用observer:

官方建议observer应该与primary和standby数据库隔离,不能在一台机器上,这里资源有限,所以三者都在同一台机器上。

首先创建一个observer.log文件,里面包含了系统切换信息:

Oracle Data Guard fast-start failover配置与应用_第5张图片

查看fast_start failover的状态:

Oracle Data Guard fast-start failover配置与应用_第6张图片

修改FastStartFailoverLagLimit的值为45,默认是30。

Oracle Data Guard fast-start failover配置与应用_第7张图片

启用fast_start failover和启动observer:

Oracle Data Guard fast-start failover配置与应用_第8张图片

查看observer的日志信息:

Oracle Data Guard fast-start failover配置与应用_第9张图片

查看fast_start failover是否已经启用成功:

Oracle Data Guard fast-start failover配置与应用_第10张图片

Oracle Data Guard fast-start failover配置与应用_第11张图片

也可用通过查询v$database视图,获取有关observer的信息:

v$database视图中fast_start failover的信息:

Oracle Data Guard fast-start failover配置与应用_第12张图片

v$database视图中查看observer的信息:

Oracle Data Guard fast-start failover配置与应用_第13张图片

对于以下结果:

Oracle Data Guard fast-start failover配置与应用_第14张图片

官方有如下解释:

p_w_picpath

如果observer不存在,会是如下结果:

p_w_picpath

如果observer启动失败,会产生以下ORA错误信息:

p_w_picpath

三、fast_start failover实战过程:

在primary数据库上执行以下语句:

Oracle Data Guard fast-start failover配置与应用_第15张图片

以上语句会向v$fs_failover_stats视图中写入”App Initiated Failover Test”信息。执行完成后,系统会执行fast_start failover操作,可以查看observer.log文件:

Oracle Data Guard fast-start failover配置与应用_第16张图片

这块执行完成后,primary数据库db01会shutodown。

standby数据库db02上查询:

Oracle Data Guard fast-start failover配置与应用_第17张图片

通过dgmgrl查询配置信息:

Oracle Data Guard fast-start failover配置与应用_第18张图片

接着启动primary数据库db01至mount状态:

Oracle Data Guard fast-start failover配置与应用_第19张图片

完了之后再执行reinstate db01操作:

p_w_picpath

Oracle Data Guard fast-start failover配置与应用_第20张图片

primary数据库db01查询:

Oracle Data Guard fast-start failover配置与应用_第21张图片

standby数据库db02上查询:

Oracle Data Guard fast-start failover配置与应用_第22张图片

standby数据库db02上查询V$FS_FAILOVER_STATS视图:

Oracle Data Guard fast-start failover配置与应用_第23张图片

V$FS_FAILOVER_STATS视图中包含了系统中fast-start failover的信息。

以abort方式关闭standby数据库db02后,primary数据库db01就会成为主库:

Oracle Data Guard fast-start failover配置与应用_第24张图片

可以查看observer.log文件:

Oracle Data Guard fast-start failover配置与应用_第25张图片

接着启动standby数据库db02至mount状态:

Oracle Data Guard fast-start failover配置与应用_第26张图片

启动起来之后,继续查看observer.log文件,会发现系统会重新reinstate db02:

Oracle Data Guard fast-start failover配置与应用_第27张图片

然后查看dgmgrl的配置信息:

Oracle Data Guard fast-start failover配置与应用_第28张图片

至此,整个fast_start failover配置过程结束。某些具体参数的意义请参考官方文档。

参考文献:

               1、Oracle? Data Guard Broker 11g Release 2 (11.2)