Páginas

terça-feira, 18 de outubro de 2011

Oracle RAC - Listeners

Remote listener: especifica a lista de hosts que a instância local deve contactar para registrar seus serviços. Deve ser um nome (entrada no tnsnames.ora) apontando para os vip dos outros nós do cluster. É configurado para todas as instâncias do cluster com o mesmo valor.

Ex.:

alter system set remote_listener='LISTENERS_RAC' sid ='*';

Entrada tnsnames.ora:
LISTENERS_RAC=
  (DESCRIPTION=
    (ADDRESS_LIST=
      (ADDRESS=(PROTOCOL=TCP)(HOST=vip-rac-1.infra)(PORT=1521))
      (ADDRESS=(PROTOCOL=TCP)(HOST=vip-rac-2.infra)(PORT=1521))
      (ADDRESS=(PROTOCOL=TCP)(HOST=vip-rac-3.infra)(PORT=1521))
    )
  )

Obviamente que os nomes colocados como HOST tem que ser resolvidos pelo nó. Aconselho a resolução local (/etc/hosts) ou o uso dos IPs fixamente.

*UPDATE: É possível utilizar outra forma mais simples de netservices que não precisa de entrada de TNS:

alter system set remote_listener='scan-name.domain:1521' sid ='*';

Local listener: Define como será feita a conexão local, ou seja, qualquer listener remoto que perguntar como deve ser a conexão naquela instância recebe a string do local listener como retorno. Por isso é EXTREMAMENTE recomendável o uso de IP fixo aqui, uma vez que se usado nome, o cliente também precisa resolver o nome e, na maioria das vezes, isso não acontece e a conexão falha por ORA-12545: Connect failed because target host or object does not exist.

Ex.:

alter system set local_listener = '(ADDRESS=(PROTOCOL=TCP)(HOST=10.2.110.1)(PORT=1521))' sid='inst1';

alter system set local_listener = '(ADDRESS=(PROTOCOL=TCP)(HOST=10.2.110.2)(PORT=1521))' sid='inst2';

alter system set local_listener = '(ADDRESS=(PROTOCOL=TCP)(HOST=10.2.110.3)(PORT=1521))' sid='inst3'; 


O artigo abaixo é muito interessante e ajuda na configuração de listeners num ambiente Oracle RAC:

Nenhum comentário:

Postar um comentário