Services x load balance

Dúvidas, dicas e atualizações sobre o Treinamento Oracle RAC.
Róli

Services x load balance

Post by Róli » Tue Dec 17, 2013 9:29 pm

Olá!

Tenho um ambiente que foi implementado services no seguinte formato:

 Por services:

INSTANCIA INST_ID SERVICE_NAME NUMERO
---------- ---------- ----------------------- -------------
Instancia 1 SYS$USERS 10
Instancia 1 servicex4 39
Instancia 1 servicex3 8
Instancia 1 servicex1 40
Instancia 2 SYS$USERS 5
Instancia 2 servicex2 217


Load balance:
INSTANCIA INST_ID NUMERO
--------- ---------- ----------
Instancia 1 96
Instancia 2 214

Diante de um cenário com essa implementação de services, o DBA justifica que foi feito dessa forma, pois uma aplicação é a principal da empresa e precisa ter mais recursos disponíveis para as suas transações.
Os dois nós do RAC tem a mesma configuração de memória, swap, tudo igual.

Dúvida: Este procedimento está corredo, direcionar uma aplicação somente para um nó para que tenha todo o nó disponível?

portilho
Site Admin
Posts: 482
Joined: Wed May 29, 2013 8:51 am

Re: Services x load balance

Post by portilho » Thu Dec 26, 2013 8:28 am

Concordo completamente com esta configuração.

Se o DBA configurou o service com nós preferenciais (opção -r do srvctl) e disponíveis (opção -a), como no Lab 16.1, ele está com Failover automático, e ainda está evitando a concorrência entre os nós por blocos, o que pode sobrecarregar o Interconnect.
Acho esta fuga da sobrecarga do Internconnect mais importante ainda do que ter toda a máquina disponível para a aplicação.

Róli

Re: Services x load balance

Post by Róli » Sat Dec 28, 2013 3:08 pm

Certo, duas dúvidas:

1. Como saberei se o DBA configurou o service com nós preferenciais (opção -r do srvctl) e disponíveis (opção -a)?
Ex:
srvctl add service -d ORCL -s OLTP_SERVICE -r ORCL1 -a ORCL2 -w 1 -z 10 -P PRECONNECT
-e SESSION -m BASIC -j SHORT -B SERVICE_TIME

Teria alguma view ou alguma dba* que mostra essa informação da configuração do service?

No Lab 16.1, explica como ver detalhes de um Service já configurado, alterando o tnsnames.ora para utilizar os novos Services e tentando o Failover, mas a conexão é via jdbc, não tem nenhuma informação no tnsnames.ora nem do oracle nem do grid.
E testar o failover, só em um momento de janela de manutenção, pois durante o dia não teria como indisponibilizar um nó para testar. Ou teria outra forma de testar?

Se tentar conectar com um CONNECT user/senha@host:1521/service ou CONNECT user/senha@alias (com uma configuração no tnsnames no outro nó, usando o service) seria uma forma de testar o failover?



2. "Acho esta fuga da sobrecarga do Internconnect mais importante ainda do que ter toda a máquina disponível para a aplicação."
O que seria "esta fuga da sobrecarga do Internconnect"?seria o centralizar a aplicação em um nó sem utilizar a interconect para comunicação entre os nós principalmente a respeito de cache e de Locks?


Sei que as perguntar são simples, mas aposto que muita gente não sabe disso e simplesmente ignora essas questões!Eu quero saber sempre, a fundo como as coisas funcionam :D

Desde já, muito obrigada!

portilho
Site Admin
Posts: 482
Joined: Wed May 29, 2013 8:51 am

Re: Services x load balance

Post by portilho » Mon Dec 30, 2013 8:33 am

Para ver as configurações de um Service:
srvctl config service -d NOMEDOBANCO -s NOMEDOSERVICE

Seria mais real testar via uma conexão JDBC, como a aplicação. Mas como o teste mais real seria desligando um dos nós, ele só poderá ser feito em sua janela de manutenção mesmo.

Sobre o Interconnect, é exatamente isso, a intenção de isolar os Services em nós específicos é para evitar ao máximo o trânsito na rede privada a respeito de Locks e Cache.

gcomenale

Re: Services x load balance

Post by gcomenale » Sat Sep 19, 2015 11:43 am

Lembro que no treinamento você havia dito que o tnsnames.ora do slide está incorreto para >11gr2

Client tnsnames.ora
ORCL =
(DESCRIPTION=
(LOAD_BALANCE=ON) →→→ Escolha Aleatória
(FAILOVER=ON) →→→ Tenta acessar o 1o, depois o 2o
(ADDRESS=(PROTOCOL=TCP)(HOST=nerv01-vip)(PORT=1521)) →→→ VIP
(ADDRESS=(PROTOCOL=TCP)(HOST=nerv02-vip)(PORT=1521)) →→→ VIP
(CONNECT_DATA=
(SERVICE_NAME=ORCL)
(FAILOVER_MODE=
(TYPE=SELECT) →→→ SESSION ou SELECT
(METHOD=BASIC) →→→ BASIC ou PRECONNECT
(RETRIES=10) →→→ 10 tentativas de conexão
(DELAY=1) →→→ 1 segundo para cada tentativa
)
)

Isso na camada client.
Uma outra dúvida que ficou é: o SERVICE_NAME que ele aponta aqui é na verdade o SID da conexão porque o tnsnames.ora do server está apontando o ORCL como um service=ORCL_OLTP, por exemplo, onde o serviço apontaria para a ORCL. Seria isso?

portilho
Site Admin
Posts: 482
Joined: Wed May 29, 2013 8:51 am

Re: Services x load balance

Post by portilho » Mon Sep 21, 2015 7:55 am

Sim, este tnsnames,ora está incorrero para >=11gR2.
O ORCL deste tnsnames.ora é um SERVICE, e não um SID, já que os SIDs são ORCL1 e ORCL2. Mesmo se não foi criado um SERVICE com srvctl, há o SERVICE padrão criado, com o mesmo nome do banco.

gcomenale

Re: Services x load balance

Post by gcomenale » Mon Sep 21, 2015 8:04 am

Então no caso o que eu preciso é alterar o service ORCL.
Crio o meu service próprio e depois substituo na string de conexão, mas os parâmetros estão corretos, certo? Só preciso fazer os ajustes para a conexão agir como eu desejo.
Isso no lado client, sendo que os parâmetros devem constar no tnsnames da máquina do cliente/aplicação. Já no lado server eu colocaria

ORCL_PRD =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac01-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = <Meu serviço>)
))

ORCL_BI =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac01-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = <Meu outro serviço>)
))


Por exemplo, a string de conexão da aplicação será user/passwd@ORCL_BI para o serviço de BI e user/passwd@ORC_PRD para produção, fazendo com quem ambos os serviços de conexão estejam setados nos tnsnames client, correto? Assim o serviço em si irá direcionar as conexões para a instancia correta.

portilho
Site Admin
Posts: 482
Joined: Wed May 29, 2013 8:51 am

Re: Services x load balance

Post by portilho » Tue Sep 22, 2015 6:58 am

"Crio o meu service próprio e depois substituo na string de conexão, mas os parâmetros estão corretos, certo?"
Que parâmetros?

"...Já no lado server eu colocaria..."
Não precisa das estradas dos Services no tnsnames.ora nos servidores. Só no cliente.

"Por exemplo, a string de conexão da aplicação será user/passwd@ORCL_BI para o serviço de BI e user/passwd@ORC_PRD para produção..."
Correto.

gcomenale

Re: Services x load balance

Post by gcomenale » Tue Sep 22, 2015 7:14 am

Me refiro aos parametros na string de conexão do lado client

(ADDRESS=(PROTOCOL=TCP)(HOST=rac01-vip)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=rac02-vip)(PORT=1521))

É sempre apontando o vip e não o scan?

Ah tá, entendi os services são configurados pelos srvctl e o próprio vip aponta para o service e não o tnsnames no lado server. No lado server ele só precisa das informações do scan e o nome do service, certo?

Client tnsnames.ora:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
))

portilho
Site Admin
Posts: 482
Joined: Wed May 29, 2013 8:51 am

Re: Services x load balance

Post by portilho » Tue Sep 22, 2015 7:22 am

Só precisa (e só pode) ter o SCAN no tnsnames.ora do Cliente. :-)

Post Reply