1.gipc概念和功能
对于Oracle集群来说,集群私网是非常重要的,无论是集群的网络心跳,节点间通信还是
数据库的 cache fusion 都需要私网来实现。
网卡聚合对Oracle集群来说是透明的,Oracle集群只是作为私有网络的使用者,
而不是真正的管理者。这种设计给集群带来一些不稳定性,例如:
若网卡聚合配置不正确,当被聚合的网卡之一有问题时,集群很可能认为私网
有问题而导致很严重的问题(节点重启,实例重启)。
由于集群并不是真正管理集群的私网,当私网出现问题时,集群可能并没有被通知到,
从而影响数据库的性能或者出现其他问题。
从11.2.0.2 版本开始,Oracle决定由集群自己来管理私网网卡,集群新特性 gipc
(grid interprocess communication)被推出,这个新特性以守护进程 gipcd.bin 的
形式存在于集群中。
2.gipcd 守护进程功能
当集群启动时,发现集群的私网网卡,并对发现的私网网卡进行检查。
通过集群私网发现集群中的其他节点,并和其他节点的私网建立联系。
如果集群配置了多块私网网卡,当某个节点的某一个、几个私网网卡出现问题,
离线有问题的私网,并通知其他节点。同时,继续监控被离线的私网,以便在其
恢复后能够重新上线私网。
正是由于 gipcd 的出现,oracle集群具有了集群管理集群私网的能力,而且
集群间数据通信负载较大,同时集群管理的主要资源就是数据库,HAIP应运而生,
作为Oracle RAC通信的高可用性、负载均衡的实现方法,来完成数据通信。
3.由 gipcd 引发的问题
有时候集群中出现偶然的私网网卡卡顿,之后网络恢复正常,而 gipcd 在私网恢复
后并没有正确的检查私网的健康性,并将私网的 rank 值 标记为0或者-1.
由于 gipcd 进行由 ohasd 对应的代理进程所管理,即使这个进程终止,
代理进程也会启动一个新的 gipcd 守护进程。此时杀掉 gipcd进程,重新启动后,
私网的监控信息会变化,集群会恢复正常。