Oracle Cache Fusion é um dos componentes mais importante de um ambiente Oracle RAC. Como o próprio nome já indica, trata-se da fusão dos caches (buffers) de memória dos vários servidores que compõem a arquitetura de cluster da Oracle.
Cada instância possui seu próprio buffer local. Imagine que uma transação na Instância "A" precisa acessar um bloco de dados que está em uso na Instância "B". O mecanismo que possibilita que a instância "A" tenha acesso ao bloco da instância "B" é denominado CACHE FUSION. Ou seja, uma instância pode acessar um bloco de dados que se encontra no cache de outra instância via uma interconexão de alta velocidade.
Podemos agora imaginar o quanto este processo é crítico para a performance da solução Oracle RAC. Mas e se configurarmos somente uma placa de rede para executar esta tarefa e esta ficar indisponível por qualquer razão que seja. Imagine agora outra situação que é a limitação de banda da rede, geralmente limitada a 1GB, que pode ficar saturada facilmente dependendo do tipo de aplicação que está sendo rodada no ambiente.
Até pouco tempo poderíamos contornar esta limitação de banda e de disponibilidade do canal configurando o mecanismo de "BONDING". Este termo é usado para representar a junção de 2 placas de rede para aparecer como um único dispositivo com o mesmo endereço MAC. O objetivo é aumentar a largura de banda e possibilitar o contingenciamento da rede na eventual falha de um de seus componentes.
A Oracle, a partir da versão 11gR2 criou o protocolo HAIP (High Availability Internet Protocol) para substituir o bonding. A intenção da Oracle é prover melhor performance e alta disponibilidade com a configuração de até 4 placas de rede.
Como configurar o Oracle HAIP?
Vamos usar o utilitário da Oracle chamado: oifcfg
O Oracle Grid irá criar um apelido denominado IP Privado usando a sub-rede 169.254.*.* para usar no HAIP.
Passo 1: Identifique os endereços privados de IP
[root@db01 bin]# ./oifcfg getif
eth0 192.168.1.0 global cluster_interconnect
eth1 10.91.119.0 global public
Passo 2: Adicione e configure uma nova interface de rede privada (eth4)
[oracle@db01 bin]$ ./oifcfg iflist
eth0 192.168.1.0
eth0 169.254.0.0
eth4 192.168.1.0
eth1 10.91.119.0
Passo 3: Use o utilitário setif para configurar a nova interface de rede com o tipo cluster interconnect.
[oracle@db01 ~]$ oifcfg setif -global eth4/192.168.1.0:cluster_interconnect
Passo 4: Pare o serviço de cluster em todos os servidores(nós do cluster):
[oracle@db01 ~]# sudo /u01/app/11.2.0/grid/bin/crsctl stop cluster -all
Passo 5: Inicie o serviço de cluster nos servidores
[root@db01 ~]# /u01/app/11.2.0/grid/bin/crsctl start cluster -all
Passo 6: Confira suas alterações do ambiente:
[root@coltdb01 bin]# ./oifcfg getif
eth0 192.168.1.0 global cluster_interconnect
eth1 10.91.119.0 global public
eth4 192.168.1.0 global cluster_interconnect
[root@coltdb01 bin]# ./oifcfg iflist -p -n
eth0 192.168.1.0 PRIVATE 255.255.255.0
eth0 169.254.0.0 UNKNOWN 255.255.128.0
eth4 192.168.1.0 PRIVATE 255.255.255.0
eth4 169.254.128.0 UNKNOWN 255.255.128.0
eth1 10.91.119.0 PRIVATE 255.255.255.0