Índice do fórum Treinamentos Avançados Treinamento Oracle RAC Load balance Server x Client

Load balance Server x Client

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

Mensagem Qui Jan 19, 2017 1:30 pm

Mensagens: 0
Portilho,

Dúvida:

Se eu criar um database default (sem configurar o service) e na minha camada de client (aplicação, máquina do user, etc) eu usar o tnsnames abaixo:


ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.137.65)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.137.64)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.137.66)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
(FAILOVER_MODE =
(TYPE = SELECT)
(METHOD = BASIC)
(RETRIES = 180)
(DELAY = 5)

Ele vai fazer o failover?
Esse service é o default criado pelo próprio dbca.

E sim, o usuário está usando os IPs do VIP ao invés do SCAN (é de doer o figado)...

Mensagem Qua Jan 25, 2017 11:17 am
portilho Site Admin

Mensagens: 444
Creio que o FAILOVER vai funcionar, vou até preparar um teste para confirmar. É 11.2.0.4, certo?

Apenas mude estes valores de RETRIES e DELAY, pois 180 tentativas com 5 segundos de intervalo entre cada uma é muita coisa - em caso de uma falha, até dar o 180 x 5, o VIP já migrou para outro servidor e a conexão foi restabelecida de qualquer forma. Acho que este valor só faz sentido se for menos que o MISSCOUNT do Grid.

O uso de Load Balance sem o SCAN não irá trazer os benefícios do SCAN, que é principalmente a facilidade de configuração:
"The benefit is that the client’s connect information does not need to change if you add or remove nodes or databases in the cluster."
Fonte: http://www.oracle.com/technetwork/produ ... 129069.pdf

Mas veja esta parte do mesmo documento, que mostra que o SCAN traz outro benefício (muito mais importante):
"Ever since Oracle Database 11g Release 2, SCAN is an essential part of the Oracle RAC database configuration and therefore the REMOTE_LISTENER parameter is set to the SCAN per default, assuming that the database is created using standard Oracle tools (e.g. the formerly mentioned DBCA). This allows the instances to register with the SCAN Listeners as remote listeners to provide information on what services are being provided by the instance, the current load and a recommendation on how many incoming connections should be directed to the instance."


Este uso pode ser necessário quando:
- Não há DNS, ou o DNS Server / DNS Client possui problemas (por exemplo, os Clients sempre vão para o mesmo VIP, por conta de Cache).
- Não pode ser utilizado outro SERVICE que não o padrão. Imagina uma aplicação que já está em uso, e você quer configurar o TAF, mas não pode mudar a string de conexão (ou seja, o SERVICE). Já tentei (em 11.2.0.4, não lembro se em 12.1.0.1) e não é possível alterar o SERVICE padrão.

Mensagem Qui Jan 26, 2017 12:30 pm

Mensagens: 0
Sim, é um 11.2.0.4.
Não consigo testar pois estou sem VM de RAC...

Eu fiquei na dúvida se funcionaria ou não.

Em relação ao RETRAY e DELAY, me passaram assim já. É aquela famosa história: "Sempre esteve assim, ninguém nunca reclamou..."

Eu sempre envio o tnsnames com o scan, vi uns DBA reclamando do scan dizendo que não funciona bem, mas não entendi o que queriam dizer com "não funciona bem".

Acredito que a desvantagem de usar essa configuração no TNS do client é que configurado no Service você pode configurar os parâmetros:

GOAL_NONE
GOAL_SERVICE_TIME
GOAL_THROUGHPUT
CLB_GOAL_SHORT
CLB_GOAL_LONG

O que no tnsnames não permite, pelo menos não fala na documentação do 12c.

https://docs.oracle.com/database/121/NE ... m#NETRF007

Mensagem Seg Jan 30, 2017 12:05 pm
portilho Site Admin

Mensagens: 444
Ah, sempre é assim. Sei como é.

Sobre o "ninguém nunca reclamou", será que um dos nós já ficou indisponível? E aí teve Failover? E o Failover foi rápido? Provavelmente nunca aconteceu, ou não saberão dizer.

Sobre o "não funciona bem", pode ser o DNS Server / Client que teve / tem problemas. Ou pode ser como meu caso, que acha que injeção eletrônica não funciona bem, mas carburador sim, mas apenas porque não entendo como funciona o primeiro. :-D

Bem lembrado, eu tinha esquecido destes itens ( Connection Load Balancing Goal e Runtime Load Balancing Goal) de configuração dos Services, que realmente não podem ser habilitados pelo Client Load Balance (tnsnames.ora). Além dessas, os Services tem muitas outras opções, que não estão disponíveis via tnsnames.ora, como rodar apenas se o banco for Physical Standby:

Usage: srvctl add service -db <db_unique_name> -service <service_name> [-role [PRIMARY][,PHYSICAL_STANDBY][,LOGICAL_STANDBY][,SNAPSHOT_STANDBY]] [-policy {AUTOMATIC | MANUAL}][-notification {TRUE|FALSE}] [-clbgoal {SHORT|LONG}] [-rlbgoal {NONE|SERVICE_TIME|THROUGHPUT}][-failovertype {NONE|SESSION|SELECT|TRANSACTION}] [-failovermethod {NONE|BASIC}][-failoverretry <failover_retries>] [-failoverdelay <failover_delay>] [-edition <edition>] [-pdb <pluggable_database>] [-global <TRUE|FALSE>] [-maxlag <max_lag_time>] [-sql_translation_profile <sql_translation_profile>] [-commit_outcome {TRUE|FALSE}] [-retention <retention>] [replay_init_time <replay_initiation_time>] [-session_state {STATIC|DYNAMIC}] [-force]
    -db <db_unique_name>           Unique name for the database
    -service <service>             Service name
    -role <role>                   Role of the service (primary, physical_standby, logical_standby, snapshot_standby)
    -policy <policy>               Management policy for the service (AUTOMATIC or MANUAL)
    -failovertype                  (NONE | SESSION | SELECT | TRANSACTION)      Failover type
    -failovermethod                (NONE | BASIC)     Failover method
    -failoverdelay <failover_delay> Failover delay (in seconds)
    -failoverretry <failover_retries> Number of attempts to retry connection
    -edition <edition>             Edition (or "" for empty edition value)
    -pdb <pluggable_database>      Pluggable database name
    -maxlag <maximum replication lag> Maximum replication lag time in seconds (Non-negative integer, default value is 'ANY')
    -clbgoal                       (SHORT | LONG)                   Connection Load Balancing Goal. Default is LONG.
    -rlbgoal                       (SERVICE_TIME | THROUGHPUT | NONE)     Runtime Load Balancing Goal
    -notification                  (TRUE | FALSE)  Enable Fast Application Notification (FAN) for OCI connections
    -global <global>               Global attribute (TRUE or FALSE)
    -sql_translation_profile <sql_translation_profile> Specify a database object for SQL translation profile
    -commit_outcome                (TRUE | FALSE)          Commit outcome
    -retention <retention>         Specifies the number of seconds the commit outcome is retained
    -replay_init_time <replay_init_time> Seconds after which replay will not be initiated
    -session_state <session_state> Session state consistency (STATIC or DYNAMIC)
    -force                         Force the add operation even though a listener is not configured for a network
    -verbose                       Verbose output
    -help                          Print usage
[oracle@nerv10 ~]$

Mensagem Seg Jan 30, 2017 3:53 pm

Mensagens: 0
Sim, é verdade!

Então, no resumo:

Configurar via client funciona, mas tem suas limitações onde o Service leva vantagem.
E, além disso, se o seu ambiente não ter hardware (memória, cpu, etc) para um PRE CONNECT com select nas outras instâncias o próprio usuário pode colocar no seu tnsnames.ora para conectar assim o que dificulta a adm do DBA, ou estou errado?

Mensagem Ter Jan 31, 2017 10:07 am
portilho Site Admin

Mensagens: 444
Exato.
Configurar Load Balance no Client funciona. Usar o Windows XP também.
O Load Balance no Client possui várias limitações em relação ao Load Balance no Server.

E realmente, o Load Balance "fica na mão do cliente", o DBA não tem pleno controle da forma de conexão.

Mensagem Ter Jan 31, 2017 11:42 am

Mensagens: 0
Legal, mais argumentos para eu debater com o cliente que não quer mexer em nada, valeu!! :D

Mensagem Qua Fev 01, 2017 8:10 am
portilho Site Admin

Mensagens: 444
:-D


Voltar para Treinamento Oracle RAC