这个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上操作:
在standby数据库上打开flashback之前,要先将standby数据库的intended state的状态更改为apply-off,primary数据库上不用操作。
2、备库操作:
打开flashback之后,要将standby数据库的intended state的状态更改为apply-on。
二、配置和启用observer:
官方建议observer应该与primary和standby数据库隔离,不能在一台机器上,这里资源有限,所以三者都在同一台机器上。
首先创建一个observer.log文件,里面包含了系统切换信息:
查看fast_start failover的状态:
修改FastStartFailoverLagLimit的值为45,默认是30。
启用fast_start failover和启动observer:
查看observer的日志信息:
查看fast_start failover是否已经启用成功:
也可用通过查询v$database视图,获取有关observer的信息:
v$database视图中fast_start failover的信息:
v$database视图中查看observer的信息:
对于以下结果:
官方有如下解释:
如果observer不存在,会是如下结果:
如果observer启动失败,会产生以下ORA错误信息:
三、fast_start failover实战过程:
在primary数据库上执行以下语句:
以上语句会向v$fs_failover_stats视图中写入”App Initiated Failover Test”信息。执行完成后,系统会执行fast_start failover操作,可以查看observer.log文件:
这块执行完成后,primary数据库db01会shutodown。
standby数据库db02上查询:
通过dgmgrl查询配置信息:
接着启动primary数据库db01至mount状态:
完了之后再执行reinstate db01操作:
primary数据库db01查询:
standby数据库db02上查询:
standby数据库db02上查询V$FS_FAILOVER_STATS视图:
V$FS_FAILOVER_STATS视图中包含了系统中fast-start failover的信息。
以abort方式关闭standby数据库db02后,primary数据库db01就会成为主库:
可以查看observer.log文件:
接着启动standby数据库db02至mount状态:
启动起来之后,继续查看observer.log文件,会发现系统会重新reinstate db02:
然后查看dgmgrl的配置信息:
至此,整个fast_start failover配置过程结束。某些具体参数的意义请参考官方文档。
参考文献:
1、Oracle? Data Guard Broker 11g Release 2 (11.2)
本文出自 “candon123” 博客,谢绝转载!