Oracle Single Client Access Name (SCAN)

Single Client Access Name (SCAN) é um novo recurso do Oracle Real Application Clusters (RAC) 11g Release 2 que fornece um unico nome para os clientes acessar os bancos de dados em um cluster.
O beneficio para os clientes que usam o SCAN é que eles não precisaram de mudanças de configurações se adicionarmos ou removermos nós no cluster.
Ter um único nome para acessar o cluster permite os clientes usar conexões do tipo EZConnect ou usar o JDBC thin URL para acessar qualquer banco de dados no cluster independente de que servidor está ativo. SCAN fornece balanceamento de carga e failover para as conexões dos clientes nos bancos de dados.
O SCAN funciona como um IP apelido (alias) para o cluster.

 sqlplus system/oracle@cluster-scan:1521/orcl
 jdbc:oracle:thin@cluster-scan:1521/orcl
 

Requisitos de Rede para a Utilização do SCAN

O SCAN é configurado durante a instalação do Grid Infrastructure que é distribuido com o Oracle Database 11g R2.
Durante as fases de instalação do Grid Infrastructure, será necessário configurar o SCAN.
Existe duas opções para definir o SCAN:

  1. Definir o SCAN no seu DNS (Domain Name Server)
  2. Usar o Grid Naming Service (GNS)

Se voce escolhe a opção 1, você solicitar ao seu administrador para criar um unico nome para resolver 3 endereços de IPs usando o algoritimo round robin. Os endereços de IP devem estar na mesma subnet que a rede publica do cluster. O nome deve conter menos que 15 caracteres sem incluir o dominio e deve ser resolvido sem o sufixo do domino. (ex: cluster-scan deve ser resolvido). Os IPS não devem ser configurados em nenhuma interface de rede o Oracle Clusterware irá tomar conta disto.

Importante: O DNS utilizando o algoritimo round robin por conta propria não suporta failover para as conexões, mas não se preocupe o Oracle Client 11g R2 toma conta disto. Por isto é altamente recomentado utilizar o Cliente na versão 11g R2.

Se você escolher a opçao 2, voce irá precisar apenas definir um nome para o SCAN e durante a configuração do cluster, três endereços de IPs ira ser adquirido do serviço de DHCP (usando GNS asume que você tenha o serviço de DHCP disponivel em sua rede publica) criando o SCAN a resoluçao de nome para o SCAN será fornecida pelo GNS).

Não entrarei em detalhes do GNS, em breve estarei postando algo sobre GNS, mas basicamente o GNS do Oracle funciona como um DHCP secundario.

Configurando o SCAN no Cluster

Durante a configuração do Cluster, muitos recursos são criados no cluster para o SCAN. Para cada um dos 3 endereços de IPs que O SCAN resolve, um recurso SCAN VIP é criado e um SCAN LISTENER é criado. O SCAN Listener é dependente do SCAN VIP e 3 SCAN VIP (juntos com seu SCAN LISTENER associados) irão ser espalhados pelo cluster. Isto significa que iremos ter um par de recurso (SCAN VIP e SCAN LISTENER) em um nó diferente do cluster. Se o nó onde está executando o SCAN VIP vier falhar, o SCAN VIP e SCAN Listener associado irá executar o Failover para outro nó ativo do cluster.

Exemplo de configuração do SCAN.

 $srvctl config scan_listener
 SCAN Listener LISTENER_SCAN1 exists. Port: TCP:1521
 SCAN Listener LISTENER_SCAN2 exists. Port: TCP:1521
 SCAN Listener LISTENER_SCAN3 exists. Port: TCP:1521
 $srvctl config scan
 SCAN name: cluster-scan, Network: 1/192.168.217.0/255.255.255.0/
 SCAN VIP name: scan1, IP: /cluster-scan.mycompany.com/192.168.217.143
 SCAN VIP name: scan2, IP: /cluster-scan.mycompany.com/192.168.217.99
 SCAN VIP name: scan3, IP: /cluster-scan.mycompany.com/192.168.217.100
 

Configurando Banco de Dados para utilizar o SCAN

No banco de Dados 11g R2, o parametro do banco de dados REMOTE_LISTENER deve ser configurado para SCAN. Isto permite as instancias registrar o SCAN LISTENERs fornecendo informações quais serviços estão sendo fornecido pela instancia, carga corrente, e uma recomendação de quantas conexões de entrada devem ser dirigidas para a instância.
O parametro LOCAL_LISTENER deve ser configurado com o Listener que está utilizando o ip VIP.
Não configure REMOTE_LISTENER no TNSNAMES como e utilize como apelido (alias), o REMOTE_LISTENER deve ser configurando da seguinte forma:
REMOTE_LISTENER=SCAN:PORTA
Ex:
REMOTE_LISTENER=cluster-scan:1521

Balanceamento de Carga utilizando o SCAN

Para conexões dos clientes,o SQL*NET (11g R2) irá ter os 3 endereços de IP que o SCAN ira resolver. Ele ira receber a lista de IP do DNS e tentar conectar no LISTENER associado ao IP utilizado naquele momento.
Se o Cliente receber um erro, ele irá tentar outro IP antes de retornar o erro ao cliente. Isto é similar com os failover das conexões de versões anteriores , quando uma lista de endereços era configurada no Service Name no TSNNAMES.

Quando o SCAN LISTENER recebe uma conexão, o SCAN LISTENER ira verificar a instancia com a menor carga de trabalho. Ira então redirecionar a conexão requisitada para o Listener Local do nó para instancia com a menor carga.
O Cliente ira receber o endereço do Listener local e será capaz de resolver o endereço do node VIP. O Listener Local irá criar a conexão com a instancia do banco de dados.

Importante: Se seu cliente ORacle é uma versao anterior a 11G R2, você nao irá conseguir utilizar todos as funcionalidades do SCAN. O Oracle Client ira obter apenas um SCAN IP (retornado pelo DNS) e tentará conectar naquele endereço. Se o SCAN LISTENER não estiver disponivel, a conexão ira falhar e o usuario receberá a mensagem de erro. Se quiser utilizar a funcionalidade de balanceamento de carga e failover com clientes versão anteriores a 11G R2 , você ira precisar usar os 3 endereços de IP do SCAN no TNSNAMES.

ex:

 orcl.mycompany.com =(DESCRIPTION=
 (ADDRESS_LIST= (LOAD_BALANCE=on)(FAILOVER=ON)
 (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.217.43)(PORT=1521))
 (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.217.99)(PORT=1521))
 (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.217.100)(PORT=1521)))
 (CONNECT_DATA=(SERVICE_NAME= orcl.mycompany.com)))
 

Recomendo fortemente é utilizar o Cliente Oracle na mesma versão do Oracle Database.

Este documento foi criado com base no Oracle Technical Paper criado por Barb Lundhild.

Aproveite!!!

Advertisements


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s