在使用rac的时候,有几个很闪亮的使用特性,一个就是load balance,这块毋庸置疑,确实做了很大的改进,从Oracle 10g版本开始的多
在使用rac的时候,有几个很闪亮的使用特性,一个就是load balance,这块毋庸置疑,确实做了很大的改进,从Oracle 10g版本开始的多个vip地址的load balance,到11g版本中的进一步load balance改进 scan-ip,确实做了很大的简化。
而在failover的实现中,还是有一定的使用限定,比如11g中默认的scan-ip的实现其实还是默认没有failover的选项,如果两个节点,某个节点挂了,那么原有的连接中继续查询就会提示session已经断开,需要重连。
很多应用都在这样使用scan-ip,也都相安无事,所以对于failover的选择还是有一定选择空间,如果说failover的实现方式,简单来说,主要就是通过换取时间,或者换取资源来实现。
怎么理解呢。
假设我们存在两个节点,如果某个session连接到了节点2,突然节点2挂了,,那么故障转移的方式就有通过换取时间或者换取资源。
比如说换取时间,为了更快达到failover的速度,failover method 有preconnect,这种预连接方式还是会占用较多的资源使用,在各个节点上还是会预先占用一部分额外的资源,在切换时会相对更加平滑,速度更快。这种就是preconect的方式
另外一种情况,则在发生failover的情况时,再去切换对应的资源,中间会有一些卡顿&#