sexta-feira, 17 de junho de 2011

Procedimento para mudança do IP privado no RAC - VIP

Neste artigo serão descritos os procedimentos para a mudança dos Ips privados no RAC – endereços VIP.

A alteração do endereço IP privado é realizada na base seguintes etapas:

2) Mude a interface pública
3) Modificar o endereço VIP
4) Desligue o CRS
5) Modificar o endereço IP em nível de SO e reconfigurar o arquivo /etc/hosts
6) Restart


1)      Baixando banco + ASM + servicos de redes (ONS,VIP,GSD e Listener)

srvctl stop database -d prd1
srvctl stop asm -n db0001
srvctl stop asm -n db0002
srvctl stop nodeapps -n db0001
srvctl stop nodeapps -n db0002

1.1) Verificar o status do banco de dados e ASM.

srvctl status database -d prd1
srvctl status asm -n db0001
srvctl status asm -n db0002

Dica para o ambiente AIX !!

Para reconfigurar o IP PRIV deve-se criar um ALIAS para a entrada publica, no caso (en10).
Se isso não for definido os VIPs e Listeners não irao subir.

Os IP´s publicos e VIPs ficam na mesma (en) ou (eth - para linux). Ou seja, na mesma placa tem-se dois enderecos IPs. Executar como “root” o comando abaixo nos dois nós.


[nó 1]
ifconfig en10 alias 199.198.20.100

[nó 2]
ifconfig en10 alias 199.198.20.101

1.2) Verificar o status dos serviços nos nós do RAC.

srvctl status nodeapps -n db0001
srvctl status nodeapps -n db0002

1.3) Verificar os IPs definidos.

oifcfg getif
srvctl config nodeapps -n db0001 -a
srvctl config nodeapps -n db0002 -a
ifconfig -a

2)      Para a alteração dos endereços públicos deve-se alterar somente o VIP e pular essa etapa. Para alterar a interface en10.  Local onde está definido o VIP, deve-se apagar e redefinir a interface, usar.

oifcfg delif -global en8
oifcfg setif -global en10/:public

Ex:
oifcfg setif -global en10/172.30.21.0:public

2.1) Verificar se a ação foi realizada com sucesso, usar.

oifcfg getif

Ex:
db0001:/storage/app/oracle/product/10.2/crs/bin>oifcfg getif
en10  172.30.21.0  global  public
en9  192.168.1.0  global  cluster_interconnect

3)      Modificar o endereço vip.
 Devido ao fato de mudamos a sub-rede do endereço IP público, temos de mudar o endereço VIP também.
 Para modificar os endereços VIP´s  as declarações devem ser usadas. ( executar como “root”)

srvctl modify nodeapps -n db0001 -A /255.255.255.0/eth8
srvctl modify nodeapps -n db0002 -A /255.255.255.0/eth8

Ex:
srvctl modify nodeapps -n db0001 -A 199.198.20.100/255.255.255.0/en10
srvctl modify nodeapps -n db0002 -A 199.198.20.101/255.255.255.0/en10

Note que o usuário “root” deve ser utilizado para esta ação e a  variável ORACLE_HOME deve esta definida, caso contrário, a mensagem de erro abaixo será gerada.

PRKO-2117 : This command should be executed as the system privilege user.
****ORACLE_HOME environment variable not set!
ORACLE_HOME should be set to the main directory that contains Oracle products.
Set and export ORACLE_HOME, then re-run.

4)      Parar os serviços de CRS em todos os nós:

crsctl stop crs

5)       Modificar o endereço IP no sistema operacional. Modificar o endereço IP público (eth0), deve-se realizar a mudança em todos os nós. Modificar o /etc/hosts e arquivos “listener.ora” se necessário.

 Reinicie todos os nós e verificar o status.

ifconfig -a | egrep '(en|Mask)'

Ex:
en9: flags=4e080863,80 
< UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST,GROUPRT,64BIT,PSEG,CHAIN >
         tcp_sendspace 131072 tcp_recvspace 65536 rfc1323 0
en10: flags=4e080863,80 
< UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST,GROUPRT,64BIT,PSEG,CHAIN >
         tcp_sendspace 131072 tcp_recvspace 65536 rfc1323 0
         tcp_sendspace 131072 tcp_recvspace 131072 rfc1323 1

5.1) Verificando o status final do RAC apos alteração.

srvctl status database -d prd1
srvctl status asm -n db0001
srvctl status asm -n db0002

srvctl status nodeapps -n db0001
srvctl status nodeapps -n db0002

Ex:
db0001:/storage/app/oracle/product/10.2/crs/bin>srvctl status database -d prd1
Instance prd11 is running on node db0001
Instance prd12 is running on node db0002

db0001:/storage/app/oracle/product/10.2/crs/bin>srvctl status asm -n db0001
ASM instance +ASM1 is running on node db0001.

db0001:/storage/app/oracle/product/10.2/crs/bin>srvctl status asm -n db0002
ASM instance +ASM2 is running on node db0002.

db0001:/storage/app/oracle/product/10.2/crs/bin>srvctl status nodeapps -n db0001
VIP is running on node: db0001
GSD is running on node: db0001
Listener is running on node: db0001
ONS daemon is running on node: db0001

db0001:/storage/app/oracle/product/10.2/crs/bin>srvctl status nodeapps -n db0002
VIP is running on node: db0002
GSD is running on node: db0002
Listener is running on node: db0002
ONS daemon is running on node: db0002

crs_stat -t

Ex:
Name           Type           Target    State     Host
------------------------------------------------------------
ora....SM1.asm application    ONLINE    ONLINE    db0001
ora....01.lsnr application    ONLINE    ONLINE    db0001
ora....b01.gsd application    ONLINE    ONLINE    db0001
ora....b01.ons application    ONLINE    ONLINE    db0001
ora....b01.vip application    ONLINE    ONLINE    db0001
ora....SM2.asm application    ONLINE    ONLINE    db0002
ora....02.lsnr application    ONLINE    ONLINE    db0002
ora....b02.gsd application    ONLINE    ONLINE    db0002
ora....b02.ons application    ONLINE    ONLINE    db0002
ora....b02.vip application    ONLINE    ONLINE    db0002
ora.prd1.db    application    ONLINE    ONLINE    db0001
ora....11.inst application    ONLINE    ONLINE    db0001
ora....12.inst application    ONLINE    ONLINE    db0002
ora...._prd.cs application    ONLINE    ONLINE    db0001
ora....d11.srv application    ONLINE    ONLINE    db0001
ora....d12.srv application    ONLINE    ONLINE    db0002


Se todos os serviços estiverem com o status “ONLINE” , então tudo correu conforme descrito!


Rubens Oliveira
DBA Oracle Consultor
olivert.dba@consultant.com