funcionalidades do oracle racblog.newtonpaiva.br/pos/wp-content/uploads/2013/02/e2-si... ·...

25
FUNCIONALIDADES DO ORACLE RAC Eduardo Amaral Ferreira 1 Iremar Nunes de Lima 2 Resumo: Diversas empresas têm como requisito fundamental do negócio que os seus sistemas de informação fiquem disponíveis 24 horas durante todos os dias da semana. Dentre as soluções de informática para alta disponibilidade disponíveis no Sistema Gerenciador de Banco de Dados Oracle está a tecnologia Oracle RAC (Oracle Real Application Cluster) que visa oferecer sistemas de bancos de dados 100% disponíveis e escaláveis para grandes organizações. Este artigo descreve esta tecnologia e faz uma análise das vantagens e desvantagens desta solução. Palavras-chave: Informática, Banco de Dados, Disponibilidade, Oracle RAC. 1 Especialista em Banco de Dados e Business Intelligence ([email protected]). 2 Mestre em Informática e professor do Centro Universitário Newton Paiva ([email protected]).

Upload: dangliem

Post on 18-Jun-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

FUNCIONALIDADES DO ORACLE RAC

Eduardo Amaral Ferreira 1

Iremar Nunes de Lima 2

Resumo: Diversas empresas têm como requisito fundamental do negócio que os seus

sistemas de informação fiquem disponíveis 24 horas durante todos os dias da semana.

Dentre as soluções de informática para alta disponibilidade disponíveis no Sistema

Gerenciador de Banco de Dados Oracle está a tecnologia Oracle RAC (Oracle Real

Application Cluster) que visa oferecer sistemas de bancos de dados 100% disponíveis e

escaláveis para grandes organizações. Este artigo descreve esta tecnologia e faz uma

análise das vantagens e desvantagens desta solução.

Palavras-chave: Informática, Banco de Dados, Disponibilidade, Oracle RAC.

1 Especialista em Banco de Dados e Business Intelligence ([email protected]). 2 Mestre em Informática e professor do Centro Universitário Newton Paiva ([email protected]).

2

1. INTRODUÇÃO

Hoje em dia, a evolução dos sistemas de informação, que estão cada vez

mais integrados, exige que eles estejam sempre disponíveis, ou seja, que possam ser

acessados 24 horas por dia, 7 dias por semana (24/7) de qualquer lugar.

Com este acelerado crescimento da integração de sistemas, quanto mais

crítico for o negócio ao qual o sistema se aplica, mais disponível ele deve ser. Junto da

integração de sistemas, tem-se a necessidade de oferecer e receber informações sempre,

com consistência, confiabilidade, rapidez e onde for preciso.

Para se ter sistemas disponíveis o máximo possível, é preciso que se tenham

bancos de dados 100% disponíveis, suportando o funcionamento dos sistemas que o

acessam.

Dentre as soluções de alta disponibilidade encontradas no Sistema

Gerenciador de Banco de Dados Oracle, temos o Oracle RAC (Oracle Real Application

Cluster) que visa oferecer sistemas de bancos de dados 100% disponíveis e escaláveis.

Este artigo tem foco na apresentação das vantagens e desvantagens do uso

desta ferramenta oferecida pelo SGBD Oracle, com intuito de se implantar e suportar

um ambiente de banco de dados sempre disponível. É objetivo deste artigo, também, a

apresentação das funcionalidades do Oracle RAC (Oracle Real Application Cluster).

O restante do artigo está organizado da seguinte forma: a seção 2 apresenta

e detalha o Oracle RAC, descrevendo suas funcionalidades e componentes. Na seção 3 é

tratado o funcionamento do Oracle RAC com um detalhamento das vantagens e

desvantagens de se usar um ambiente Oracle RAC e por fim, na seção 4 é feita a

conclusão do trabalho.

3

2. ORACLE RAC

2.1 Computação Distribuída (Grid Computing)

A alta disponibilidade na computação, através do Oracle RAC, tem sua

fundamentação na computação distribuída, que, por sua vez é fundamentada na

distribuição de energia elétrica.

A distribuição de energia é feita de forma transparente aos consumidores de

todo o mundo: por exemplo, ao comprar um aparelho de TV novo, você chega em casa

e o liga na tomada elétrica, que é um terminal de toda a malha elétrica da região ou país.

Não importa onde e como aquela energia elétrica foi gerada, o que importa é que ela

está chegando até sua casa. Outro exemplo: se um fio de energia elétrica de casa for

desencapado e a ele ligado outro para instalação de uma tomada, cria-se um novo

terminal de energia elétrica, que tem ligação com a malha de toda a região, aumentando-

se os terminais de distribuição de energia. Esta energia pode ter sido gerada, por

exemplo, na Hidrelétrica de Furnas ou em Foz do Iguaçu e chega nas casas de todas as

cidades através das redes de transmissão.

Assim acontece com a computação distribuída: por exemplo, uma aplicação

usa recurso computacional de um hardware sem se preocupar de onde e como vem

aquele recurso, quando esta aplicação e/ou este hardware estão hospedados em um

ambiente cluster, ou seja, um ambiente com diversos recursos, mas que representam

apenas um, de maneira transparente para o usuário. É como acontece em um ambiente

RAC: existe um cluster de bancos de dados, com duas ou mais instâncias,

compartilhando de uma única base de dados, porém, ao ser acessada por uma aplicação

ou usuário, parece ser um único serviço de banco de dados.

4

Figura: Distribuição de energia elétrica

Fonte: VALLATH, 2006

Conforme FARIA (2005),

"a idéia central do Grid Computing (computação em grade / distribuída) é oferecer a computação como um serviço público. Não se deve ter preocupação com o local onde os dados residam ou qual computador processe a solicitação. O usuário deve ser capaz de solicitar - e receber- informações ou recurso de computação no volume e freqüência que desejar. Pode-se fazer uma analogia com o modo como funcionam os serviços públicos elétricos: você não sabe onde está o gerador, nem como é a rede elétrica. O que se deseja é eletricidade. E a consegue. O objetivo é tornar a computação um serviço público e onipresente."

2.2 Clusterização

Segundo (Loney, 2005) um banco de dados de um ambiente RAC, é

altamente disponível e escalonável. A falha de um dos nós no cluster não afeta as

sessões de cliente nem a disponibilidade do próprio cluster até o último nó do cluster

falhar. Tal característica é fundamental para o funcionamento dos sistemas de hoje em

dia, que exigem total disponibilidade. Mas o que vem a ser um cluster? E um nó deste

cluster, o que é?

5

O conceito de cluster está presente na maioria das áreas da informática: na

área de redes tem um foco com uma certa especificidade, na área aplicativos tem suas

particularidades e na área de banco de dados, também, com suas próprias características.

De acordo com o conceito comum entre as áreas, ressalvadas as particularidades,

“um cluster pode ser definido como um sistema onde dois ou mais computadores trabalham de maneira conjunta para realizar processamento pesado” (Alecrim, 2004).

Em outras palavras, os computadores dividem as tarefas de processamento,

e trabalham como se fossem um único computador. Enfim, um ambiente cluster é

composto de vários computadores e/ou servidores interligados entre si, mas que aos

olhos do usuário, ou de suas aplicações, parece apenas um único servidor.

Existem diversos tipos de cluster (Alecrim, 2004):

• Cluster para alta disponibilidade: um ambiente com este objetivo visa

maximizar o tempo de disponibilidade e melhora das condições de uso.

Clusters deste tipo indicam sistemas de missão crítica e quase nunca

param de funcionar, característica preconizada pelo Oracle RAC. Em

ambientes como este, existem ferramentas para proteção, detecção e

correção de falhas;

• Cluster para balanceamento de carga: compreende a distribuição de

processamento. Demanda monitoração constante e artifícios de

redundância, sob pena de parada de todo o cluster;

• Cluster Combo: Combina os sistemas de alta disponibilidade e de

balanceamento de carga.

No Oracle RAC temos a implementação de um Cluster Combo, ou seja, a

combinação entre alta disponibilidade e balanceamento de carga.

Assim, a função do Oracle RAC, é fazer isto funcionar de forma

transparente para o usuário, ou seja, em um ambiente Oracle RAC, tem-se diversos

6

servidores de bancos de dados, que receberão os acessos dos usuários e suas aplicações,

de acordo com sua disponibilidade, porém acessando uma única base de dados. Há

ainda uma forte característica, que consiste em manter o serviço totalmente disponível

caso algum dos servidores se torne indisponível. O Oracle RAC, cuidará de transmitir

aos servidores sobreviventes as consultas que estavam “rodando” no servidor que

falhou. Assim, um servidor sobrevivente, receberá as requisições oriundas do servidor

falho, sem que o usuário perceba a troca de máquina que processava sua requisição.

2.3 - O SGBD Oracle

2.3.1 – Estrutura de um Servidor Oracle

O Oracle Real Application Cluster pode ser considerado como uma

extensão de uma instância simples de um banco de dados Oracle. Tal afirmativa é

verdade, pois um Oracle RAC, nada mais é do que várias instâncias Oracle

interconectadas em cluster, porém com alguns componentes a mais do que a instância

normal, para manter seu funcionamento, acessando uma base de dados compartilhada.

Um servidor Oracle é composto de dois principais componentes, ambos

presentes na configuração cluster: (ARQUITETURA, 2009)

• Instância Oracle: Conjunto da SGA e dos processos de background;

• Database Oracle: Conjunto de 3 (três) tipos de arquivos: Datafiles,

Control Files e arquivos de Redo On-Line.

SGA entende-se como a área de memória alocada pelo Oracle no sistema

operacional, comportando seus processos e sub-áreas, por exemplo: (ARQUITETURA,

2009):

• Shared Pool: sub-área da SGA que armazena os comandos SQL e

PL/SQL;

7

• Buffer Cache: Os dados lidos e manipulados pelo Oracle são acessados

através desta área ou de memória, garantia de desempenho, pois acesso em

disco é mais lento do que em memória;

• Log Buffer: Armazena as alterações feitas no banco de dados em

memória, para que tais alterações não tenham de ser feitas diretamente no

disco;

• Java Pool: Bloco de memória da SGA que permite a execução de

comandos Java dentro do banco de dados;

• Large Pool: Responsável por armazenar informações que são e serão

utilizadas por uma série de funcionalidades e utilitários do Oracle;

Além das áreas citadas anteriormente, temos os processos de background

que são abertos por um servidor Oracle: (ARQUITETURA, 2009)

• DBWn: processo responsável por escrever em disco os dados

manipulados que estão na buffer cache;

• CKPT (Checkpoint): processo responsável por sinalizar o disparo do

processo DBWn, ou seja, processo que roda e de tempos em tempos, e

quando acionado, que verifica a existência de blocos a serem gravados, que,

se houver, dispara o processo responsável pela escrita daqueles blocos em

disco;

• SMON (System Monitor): Responsável pela recuperação da instância

durante sua inicialização, “limpar” os segmentos temporários e aglutinação

de espaço livre em tablespaces gerenciados pelo dicionário de dados;

• PMON (Process Monitor): Faz a gerência dos processos dos usuários;

• LGWR (Log Writer): Responsável por escrever o conteúdo do Log

Buffer nos arquivos de Redo Log;

8

E outros processos, além dos citados, mas que fogem um pouco do contexto

deste trabalho.

Sobre os arquivos que compõem o Data Base Oracle, tem-se o seguinte:

• Data Files: Arquivos de dados, onde ficam efetivamente armazenados os

dados do banco;

• Control File: Arquivos de controle do banco de dados. Armazena todas

as informações possíveis sobre a instância Oracle, além dos dados sobre a

estrutura física do Data Base Oracle;

• Redo Log: Armazenam os dados recém alterados que estavam na área de

memória Log Buffer;

Todos os conceitos apresentados anteriormente, formam os principais

componentes de um servidor Oracle.

A figura 2.1, mostra a estrutura de um servidor Oracle, sob configuração de

uma única instância.

Figura: 2.1: Ambiente Oracle instância simples

Fonte: própria

9

Além dos itens mostrados sobre a estrutura de memória do servidor Oracle,

temos a PGA, que é também uma área de memória, que contém dados e informações

sobre uma sessão de um determinado usuário.

A figura 2.2, mostra a estrutura de um servidor Oracle RAC, sob a

configuração de quatro instâncias.

Em um Servidor Oracle, com implementação de RAC, tem-se todos os

componentes mostrados anteriormente, com a adição de alguns poucos componentes

que implementam o cluster e as características de alta disponibilidade e facilidade de

aumento de escalabilidade oferecidas pelo RAC.

Um banco de dados RAC, permite que múltiplas instâncias Oracle, cada

uma com uma estrutura como a mostrada anteriormente, residam em diferentes

servidores de um cluster, compartilhando os arquivos do banco de dados, em outras

palavras, quando há a configuração do RAC, temos várias instâncias Oracle

compartilhando do mesmo Database Oracle, ou seja, do mesmo conjunto de arquivos,

Data File, Control File e Redo Logfile.

10

Figura 2.2: Ambiente RAC com 4 instâncias.

Fonte: VALLATH (2006)

Existem duas formas de funcionamento do Oracle RAC: (FONSECA, 2008)

• Em uma delas existe uma camada de software de cluster que opera nos

nós do cluster. Cada nó (node) pode monitorar um ou mais nós do cluster

(através da interconexão de rede). Se a máquina monitorada falhar, a(s)

sobrevivente(s) pode(m) apropriar-se da memória (SGA e PGA) e restaurar

as aplicações que estavam sendo executadas na máquina que falhou. A

máquina corrompida pode permanecer fora de operação, e os usuários e

cliente da aplicação perceberiam somente uma breve interrupção do serviço,

pelo menos enquanto ocorre a transferência das estruturas de memória e

11

seus conteúdos para a máquina sobrevivente, fato que ocorre muito

rapidamente.

• Uma outra forma de cluster do Oracle RAC, é a operação em clusters

paralelos, onde são usadas versões especiais de software. Cada máquina

opera o Oracle, e uma camada de software conduz o acesso ao disco

compartilhado do banco de dados. Cada máquina tem acesso total a todos os

discos do banco de dados.

O banco de dados deve ser localizado em um grupo de disco compartilhado

onde todos os servidores do cluster possam acessar o banco de dados. Os servidores se

comunicam com os discos compartilhados via rede.

2.3.2 – Oracle Clusterware

O conjunto de software que faz o gerenciamento do cluster é chamado de

Oracle Clusterware. Oracle Clusterware, que no decorrer do texto será chamado de

OCR, é uma nova característica, que surgiu no Oracle 10g, que provê interface cluster

padrão em todas as plataformas, além de prover operações de alta disponibilidade que

não estavam disponíveis nas versões anteriores do Oracle. Existem diversos outros

softwares de gerência de cluster, mas o da Oracle é o mais indicado para RAC

(VALLATH, 2006).

Ele é o componente essencial para o funcionamento do Oracle RAC. Pode

trabalhar só, ou em conjunto com outros softwares deste tipo, de terceiros, como da HP

ou da Sun. Ele deve ser instalado em cada nó do cluster do ambiente RAC. A

combinação entre ele e o Oracle RAC contribui para o alto nível de disponibilidade e

flexibilidade. Ele deve ser o primeiro componente instalado quando se planeja

configurar um RAC.

12

O OCR é o responsável pelo processo de realocação dos componentes de

uma instância e pelo controle da reedição destes em uma nova instância, além de

recuperar parte das transações que falharam em algum nó (node).

O OCR, que também pode ser chamado de CRS (Cluster Ready Services) é

composto por 3 (três) principais componentes, que se manifestam como daemons

(processos) executados no inittab do linux ou como um serviço, em um ambiente

windows.(HART, 2004)

Os daemons componentes do Oracle Clusterware são: (HART, 2004):

• CSS – Cluster Synchronization Services: é o principal componente para

existência de disponibilidade de recursos no ambiente RAC. É base para

comunicação entre processos em um ambiente cluster (RAC). O CSS

também pode ser usado em instâncias simples de maneira a permitir a

interação entre instâncias ASM e o banco de dados. Ele provê uma série de

serviços, como informação em tempo real de cada nó (node) e instância que

compõem o RAC em um determinado momento, além de informações

estatísticas, como os nomes e números dos nós, que podem ser alterados

quando são removidos ou adicionados. O CSS também controla

funcionalidade de bloqueio, a nível de registro dentro do cluster. Este

daemon também é responsável pela checagem constante da permanência de

um nó em um cluster, além da monitoração do voting disk em busca de

falhas. Voting Disk, é um arquivo que contém e gerencia informações sobre

todos os nós membros de um RAC, além de gerenciar o cluster e manter o

RAC. É também um importante componente do OCR;

• CRS – Cluster Ready Services: Responsável por executar as operações

de recuperação de falhas e manter a disponibilidade dos recursos em um

ambiente RAC. É também responsável pela transferência de um serviço /

13

recurso de um nó para outro em caso de falha de um deles, além de registrar

os eventos ocorridos no ambiente no OCR Oracle Cluster Registry, arquivo

que contém os registros de todos os eventos e lista de nós em um cluster;

• EVM – Event Manager: Processo responsável por armazenar os logs

sobre cada evento dos daemons (processos) do RAC.

Um outro importante componente presente no OCR é o VIP: Virtual Ip

Address, que tem uma grande vantagem e importante característica do Oracle RAC, pois

proporciona um menor failover (tempo decorrido entre a detecção e correção de uma

falha) em eventos de falha de um nó do cluster.

Com o VIP, cada nó não terá apenas um endereço ip estático, mas terá

também um virtual que é associado a cada nó. A maneira de garantir este failover

menor é fazendo com que o listener de cada nó escute o VIP, pois tem uma resposta

muito mais rápida do que o ip normal, assim, ao tentar se conectar em um ip virtual

(VIP) onde o nó está inativo, a conexão já é transmitida para outro nó, e para outro, caso

o segundo esteja inativo, e assim por diante, caso não tenha resposta imediata.

Abaixo um exemplo de configuração de um arquivo tnsnames.ora, que

mostra uma lista de ip’s alternativos, possibilitando a busca por nós disponíveis.

GRID =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = rmscvip1)(PORT = 1521))

(ADDRESS = (PROTOCOL = TCP)(HOST = rmscvip2)(PORT = 1521))

(CONNECT_DATA =

(SERVICE_NAME = grid)

)

)

14

3. FUNCIONAMENTO DO ORACLE RAC

O Oracle Real Application Cluster (Oracle RAC) é uma option

(característica adicional) do SGBD Oracle que permite alta disponibilidade e

escalabilidade dos nós em um ambiente cluster. Trata-se de duas ou mais instâncias

Oracle compartilhando de uma única base de dados, em outras palavras, um banco de

dados clusterizado (ORACLE REAL APPLICATION CLUSTER – DATA SHEET,

2005).

No ambiente RAC, há a configuração de um cluster ativo / ativo, ou seja,

todos os nós do cluster acessam os mesmos dados simultaneamente. Existem, nesta

configuração, duas ou mais instâncias que respondem como um único serviço para as

aplicações e/ou usuários que a acessam. Quando uma aplicação ou usuário se conecta ao

banco de dados, existe uma camada de software (OCR) que envia sua sessão para a

instância mais disponível dentro do cluster, caracterizando o balanceamento de carga.

Esta sessão compartilha dos blocos “sujos” (blocos de dados alterados que

ainda não foram escritos em disco, ou seja, ainda estão na memória) do sistema através

do Cache Fusion, que mantém, através de uma interconexão privada, o

compartilhamento destes blocos entre as instâncias, evitando, assim, acesso a disco por

qualquer uma das instâncias. Em outras palavras, uma instância pode precisar acessar

um bloco que foi há poucos instantes alterado por outra instância, e este ainda está na

memória. Através do Cache Fusion esta instância acessará este bloco, com o valor atual,

ou seja, com a alteração feita pela outra instância. No RAC não existe fusão de SGA, ou

seja, cada instância tem sua própria SGA, porém com seus “blocos sujos” visíveis a

todas as instâncias, funcionalidade esta provida pelo Cache Fusion (FONSECA, 2008).

Caso alguma instância se torne inativa, os processos de background que

ficam “vigiando” todo o cluster, cuidarão de não enviar uma nova conexão para este nó

inativo e transferirá todas as sessões que residiam naquele para um ponto do cluster que

15

esteja ainda ativo. É muito importante ressaltar que os comandos e processos de uma

sessão que são transferidos são apenas de consultas, ou seja, transações que estejam

pendentes de commit (confirmação de gravação) lançarão mensagem de erro que deve

ser tratada, e sofrerá rollback (cancelamento de alteração).

Aquele nó que apresentou instabilidade pode sofrer manutenção e voltar à

ativa, passando a receber novas conexões a partir do momento que os processos

responsáveis por “vigiar” o ambiente o identificarem como ativo. Vale lembrar que as

sessões que estavam neste nó não voltam para ele, permanecem na instância para qual

foram transferidas, ele receberá apenas novas sessões, que provavelmente serão

direcionadas a ele, pois acabou de ingressar no cluster, logo está, teoricamente, mais

disponível que os demais nós do ambiente (DYKE, 2006).

Desta forma o Oracle RAC, garante baixo e transparente failover, pois as

sessões existentes em uma instância falha ressurgem em uma outra instância, podendo

acessar os mesmos dados que acessava na instância falha. Garante também capacidade

de escalabilidade, permitindo a adição e/ou remoção de nós no ambiente sem a parada

dos serviços.

Então, um DBA pode prestar manutenção em um ambiente de banco de

dados sem prejudicar o acesso aos dados, como por exemplo, aplicação de pacthes de

segurança e atualização, bem como no sistema operacional do nó hospedeiro de uma

instância.

Um fato importante de se ressaltar no Oracle RAC é as suas sutis diferenças

diante de um banco de dados de uma única instância. Em tese, um RAC, é um banco de

dados simples, porém com mais instâncias, e com alguns componentes a mais.

Componentes estes que merecem atenção são os processos de background específicos

de um ambiente RAC, que não existem em uma configuração simples, são eles

(FONSECA, 2008):

16

• LMS: Conhecido como Global Cache Service. O RAC pode ter até 10

processos deste, variando de acordo com a quantidade de mensagens que

trafegam entre os nós. As suas tarefas são: manusear as interrupções dos

blocos de dados de uma instância remota para o Global Cache Service

(Cache Fusion); controlar as requisições de recursos e as operações de

chamadas realizadas entre as instâncias RAC durante a utilização dos

recursos que são compartilhados; construção de uma lista de elementos que

são afetados pelo lock e validar estes elementos durante uma operação de

recuperação; manusear o mecanismo global de detecção de lock e deadlock

e monitorar a duração de um lock disparando o timeout quando necessário;

ele também controla a requisição dos dados que são acessados entre os nós

de um cluster. No ambiente RAC, cada bloco é associado a uma instância

específica. É este o processo que garante que cada instância irá fazer uma

leitura consistente dos blocos, e uma instância por vez;

• LMON: Sua função é monitorar todo o cluster, as filas globais de

requisição e o uso dos recursos da memória. O LMON controla as instâncias

e a expiração dos processos. Participa do processo de recuperação da

instância, em conjunto com o processo Global Cache Service. É ele que

controla o processo LMD e as regiões de memória usadas. É similar ao

processo PMON, em um banco de dados de única instância;

• LMD: É um processo agente de lock sobre os recursos que estão

armazenados na fila de requisição. Atende às solicitações do LMSn para

controlar o acesso global da instância na solicitação remota sobre a fila de

requisição. Também controla e detecta deadlock’s;

17

• LCK0: Executa o gerenciamento global da fila de requisição como

também da transmissão entre as instâncias. Ele manipula todos os recursos

de transferência que não requerem o uso do Cache Fusion;

• DIAG: É um processo daemon responsável por monitorar e fazer o

diagnóstico dos heartbeats (batimentos cardíacos) de cada instância,

verificando quais instâncias RAC estão rodando no momento. Ele também

captura os dados de um processo de uma instância falha. Existe um processo

deste em cada instância , e não pode desativado ou removido. Se por acaso o

processo DIAG da instância falhar, automaticamente outro é iniciado por

um outro processo de background.

3.1 Vantagens e desvantagens do Oracle RAC

Dentre as vantagens do Oracle RAC destacam-se as seguintes

(VALLATH,2006):

• Alta disponibilidade: Na ocorrência de falha de um nó do cluster, os

outros nós podem continuar a operar e a disponibilidade do banco de dados

não será afetada;

• Confiabilidade: Devido ao uso de cluster no ambiente RAC, e com um

DBA bom prestando manutenção ao ambiente, tem-se confiabilidade, pois o

banco de dados se mantém funcionando até que caia o último nó do cluster,

e enquanto isso, o corpo técnico pode restabelecer o funcionamento daquele

que falhou;

• Recuperabilidade: Facilidade de recuperação em um nó falho, pois o

sistema não tem de parar para se restabelecer a atividade de um nó falho;

• Detecção de erros e manutenção facilitada: As bases de dados múltiplas

do legado podem ser consolidadas em uma única base de dados de RAC que

reduz a complexidade da gerência e que introduz economias de escala.

18

• Continuidade de operações: Garantida pela alta disponibilidade;

• Escalabilidade: Múltiplos nós permitem escalar bancos de dados

clusterizados além do limite de uma instância simples, ou seja, em um

ambiente RAC, pode aumentar e/ou diminuir o número de nós do cluster;

• Diminuição de TCO (Custo Total de Propriedade): Redução dos gastos

com compras de hardware, pois pode-se comprar n máquinas, de menor

porte, logo mais baratas. Além da redução do custo com manutenção e

suporte (PORTILHO, 2009);

Dentre as desvantagens têm-se as seguintes:

• Alto custo de licenciamento, pois para cada instância componente do

cluster é necessário uma licença para cada processador. Assim, se houver

um RAC com dois nós e cada nó deste tiver dois processadores, serão

necessárias 4 licenças de uso do SGBD (PORTILHO, 2009).

• Conhecimento, por parte do DBA, do ambiente de sistema operacional. O

DBA precisa ter um bom conhecimento de SO para facilitar a montagem e

manutenção do RAC.

Além de todas estas desvantagens, pode-se ter um grande problema de

desempenho em casos de catástrofe, ou seja, de acordo com o funcionamento do RAC,

quando um nó falha, uma instância sobrevivente recebe as sessões oriundas daquele e

outras novas. Caso os nós sobreviventes já estejam com uma carga um tanto alta, podem

não suportar a nova carga proveniente do nó inativo, e assim falhar também, daí suas

sessões, incluindo as sessões que herdou daquele nó, vão para um outro sobrevivente,

que teria de suportar sua carga de trabalho e a dos outros dois, causando um efeito

dominó, podendo chegar a inatividade de todo o cluster, caso não se restabeleça a

atividade dos dois primeiros. De acordo com (FONSECA, 2008) ao planejar um

ambiente Oracle RAC, deve-se estimar a utilização de CPU para consultas pesadas.

19

Durante o período de alta utilização de um servidor / instância do ambiente, a CPU não

deve passar de 70%. Deve-se atentar para o fato de se a instância sobrevivente tem

capacidade para suportar toda a carga de trabalho no caso de falha de uma determinada

instância do cluster.

3.2 Ferramentas para manutenção do RAC

Existem diversas ferramentas para o DBA administrar o Oracle RAC, dentre

elas destacam-se as seguintes:

• CVU (Cluster Verification Utility): Seu objetivo é verificar se o cluster

está configurado corretamente antes de se tentar instalar o Oracle

Clusterware ou o próprio software de gerência de banco de dados. Ele faz

uma leitura de checagem e relata dicas / conselhos se encontrar algum

problema. O DBA pode ou não seguir tais dicas, sob pena de encontrar

problemas na instalação de algum componente (DYKE, 2006). Com o CVU,

podem-se passar vários parâmetros para checagens diversas:

o nodereach: verifica se toda a configuração de rede está correta e se todos

os nós podem ser alcançados via rede;

o nodecon: checa se a configuração de rede está correta, checa inclusive o

VIP (ip virtual);

o cfs: verifica a integridade do sistema de arquivos do cluster;

o ssa: checa se o storage compartilhado está acessível;

o space: verifica se o mínimo de espaço em disco requerido é atendido;

o sys: checa se os requisitos de sistema foram atingidos;

o clu: Verifica a integridade do cluster;

o clumgr: permite a verifica da integridade do gerenciador de cluster;

20

o ocr: analisa a integridade do OCR (Oracle Cluster Registry);

o crs: verificação de integridade do Oracle Clusterware;

o nodeapp: checa a existência de aplicação nos nós;

o admprv: verifica se os privilégios administrativos foram devidamente

delegados;

o peer: faz a verificação da configuração corrente de um nó com os

demais;

• CVUQDISK: Uma variação do CVU, que cuida de fazer uma checagem

dos discos que compõem o storage (área de armazenamento) do RAC.

Além das ferramentas de análise do cluster, que faz as verificações

necessárias após o processo de definição/instalação do cluster, existem as ferramentas

para gestão do RAC, incluindo a manutenção, inclusão ou remoção dos nós. É

importante ressaltar que para desativar uma instância no RAC, é essencial que existam

outras ativas e que o Oracle Clusterware esteja rodando nelas. Desligar um nó do RAC

não interfere no funcionamento do ambiente, o que pode ocorrer é um certo impacto nas

instâncias restantes, pois receberão o processamento que havia no nó ora desativado. As

ferramentas que proporcionam tais funcionalidades são:

• EM (Enterprise Manager): Nas versões superiores a 10.1 do Software de

banco de dados Oracle, o Enterprise Manager, que neste texto chamaremos

de EM, é uma ferramenta baseada na plataforma web. Existem duas versões

do EM nas edições 10.1 e superiores do Oracle: Database Control e Grid

Control. Com o Database Control pode-se gerenciar um único banco de

dados Oracle RAC com suas instâncias, listeners e nós. Já com o Grid

Control, consegue-se gerenciar vários bancos de dados Oracle RAC, bem

como suas instâncias, listeners, servidores de aplicação, servidores web, e

21

aplicações web. Com ele também é possível criar um banco de dados de

espera (stand by) Data Guard. (VALLATH, 2006)

• SRVCTL (Server Control Utility): É uma ferramenta de linha comando,

que executa muitas das tarefas feitas pelo EM. Nas versões superiores a 10.1

do Oracle, o SRVCTL armazena informações sobre configuração e status do

OCR (Oracle Cluster Registry), estas informações são utilizadas por outras

várias ferramentas Oracle, incluindo o EM. Pode-se usar o SRVCTL para

iniciar, parar e obter o status corrente de um banco de dados, de suas

instâncias e listeners. É usado também para adicionar e deletar informações

de instâncias e bancos de dados, além de mover uma instância de um nó

para outro por exemplo. Também é possível “setar” variáveis de ambiente,

seja no nível da instância ou do banco de dados. Através desta ferramenta é

possível controlar seis tipos de componentes: database, instância, serviços,

aplicações dos nós (que incluem: GSD – Global Services Daemon, Oracle

Notification Service – ONS, Virtual Ip – VIP , Oracle Net Listener, que

também pode ser administrado pela ferramenta LSNRCTL), ASM e listener.

Dentre as funções do SRVCTL, destacam-se as seguintes com relação a

gerência do banco de dados:

• Inicializar um banco de dados, parar um banco de dados; checar a

configuração de um banco de dados, checar o status de um banco de dados,

adição de configurações a um banco de dados, modificar as configurações

existentes de um banco de dados, habilitar e/ou desabilitar um banco de

dados, além de outras várias funcionalidades.

Com relação às funcionalidades do SRVCTL para gerência das instâncias de

um Oracle RAC, têm-se as seguintes:

22

• Iniciar ou parar uma instância, checar o status desta, adicionar uma nova,

modificar ou remover uma instância, desabilitar e/ou habilitar uma

instância. Abaixo alguns exemplos de comandos que podem ser utilizados

com o SRVCTl:

srvctl start instance -d RAC -i RAC1;

srvctl stop instance -d RAC -i RAC3;

srvctl status instance -d RAC -i RAC1;

Sobre as funções do SRVCTL para manutenção das aplicações nos nós, as

seguintes são as mais relevantes: Inicialização e paralização das aplicações nos nós,

checagem de status e configuração além de adição ou remoção destas.

Além das duas ferramentas para manutenção de um Oracle RAC descritas

anteriormente, tem uma terceira, que além de permitir a execução de várias tarefas

administrativas do ambiente RAC, permite a pesquisa e análise de estatísticas e

informações sobre todo o ambiente e, possibilita a alteração dos parâmetros de

inicialização de todas as instâncias do ambiente RAC, trata-se do SQLPLUS. Que

também a exemplo do SRVCTL, é uma ferramenta de linha de comando. (VALLATH,

2006). Através desta ferramenta, faz-se a gerência do ambiente RAC, incluindo a

alteração de parâmetros de inicialização do ambiente. É importante ressaltar que, ao

alterar algum parâmetro de inicialização, é preciso especificar qual será o escopo de

instância que aquele parâmetro terá validade, ou seja, além de especificar o escopo do

parâmetro, se memória, spfile ou ambos (both) é necessário de que se especifique a qual

SID (instância) o novo parâmetro passa a vigorar.

ALTER SYSTEM SET pga_aggregate_target = 200M SID = 'RACl';

Além das funcionalidades descritas anteriormente do SQLPLUS, pode-se

fazer uso das views dinâmicas de desempenho oferecidas pelo SGBD Oracle, que em

casos de um ambiente RAC, têm-se algumas que ajudam a analisar o desempenho e

23

configuração deste. A seguir alguns exemplos que mostram as informações sobre a

atividade balanceamento de carga no RAC:

• GV$SERVICES: Mostra dados sobre quais serviços de banco de dados

estão configurados atualmente;

• GV$ACTIVE_SERVICES: Exibe dados sobre quais serviços estão em

execução no momento;

• GV$SERVICE_WAIT_CLASS: Resume o tempo de espera por classe de

cada serviço do banco de dados;

Os próximos comandos e views, exemplificam a monitoração de

desempenho e informações sobre as configurações das instâncias e no RAC:

• GV$SYSTEM_EVENT,

• GV$SESSION_EVENT,

• GV$SESSION_WAIT,

• GV$SESSION,

• GV$LOCK,

• GV$SQL,

• GV$SQLTEXT,

• GV$SQLAREA.

Existe também uma ferramenta para administração do Clusterware que é a

CRSCTL (Cluster Ready Services Control). Ela provê a gerência do Oracle

Clusterware, permitindo a inicialização e paralização deste, bem como a administração

dos daemons CSS, CRSD e EVMD, já mencionados neste artigo.

4. CONCLUSÃO

O Oracle RAC, pode ser uma tecnologia complexa e custosa de se

implementar. Requer um bom conhecimento para planejar, instalar, configurar, fazer

24

ajustes de desempenho, suportar e manter. O custo das licenças necessárias para sua

implementação é significativamente maior que o custo para implantação de uma

instância simples.

A maioria das empresas que implantam o Oracle RAC, o fazem por precisar

e ter garantias de que alcançarão maior disponibilidade, escalabilidade ou a combinação

de ambos. Com o RAC têm-se ambientes mais disponíveis, com isso mais segurança.

Além disso, mais facilidade de administração das bases de dados da empresa e a

redução do custo de propriedade, ou seja, gasta-se menos dinheiro com equipamentos já

que se pode comprar mais máquinas, de menor poder de processamento e clusterizá-las

no ambiente RAC, perfazendo o balanceamento de carga, que pode ser configurado, por

exemplo, por requisição ou por disponibilidade, há uma série de configurações

possíveis.

Em síntese, para se decidir pelo RAC, é preciso analisar, além de toda a

viabilidade técnica, todo ambiente dos negócios da empresa, de maneira a identificar a

real necessidade de implantação de um ambiente com as características disponibilizadas

pelo Oracle RAC. Em termos de alta disponibilidade em banco de dados, e

principalmente com o Oracle, o mais falado hoje em dia nas grandes corporações é o

Oracle RAC, porém existem outras tecnologias, como Oracle Data Guard, o Oracle

FlashBack, e outras várias técnicas, cada uma com suas particularidades, desvantagens e

vantagens. Qual delas é a melhor, depende de um estudo no ambiente onde será

implantado, podendo inclusive implantar todas elas, garantindo um ambiente muito

seguro e com forte veio de disponibilidade, escalabilidade.

25

REFERÊNCIAS BIBLIOGRÁFICAS

ALECRIM, Emerson. Cluster: principais conceitos. <http://www.infowester.com/cluster.php> Acesso em 20 junho 2009. ARQUITETURA e Administração do BD Oracle. Synos Education Center. 2009. DYKE, Julian; SHAW, Steve. Pro Oracle Database 10g RAC on Linux: Installation, Administration, and Performance. Apress, 795p. FARIA, Elizabeth. Grid e Oracle 10g. Oracle Corporation, 2005. FONSECA, Luiz Cláudio. DBA RAC 11g Arquitetura: Instalação, Administração e Performance. Ciência Moderna, 2008, 196p. HART, Matthew; JESSE, Scott. High Availability with RAC, Flashback & Data Guard. Oracle Press, 2004, 421p. LONEY, Kevin; BRYLA, Bob. Oracle Data Base 10g – DBA Handbook. Oracle Press, 2005, 757p. LONEY, Kevin. Oracle Database 10g - The Complete Reference. Oracle Press, 2004, 1369p. ORACLE REAL APPLICATION CLUSTER – DATA SHEET, 2005 <http://www.oracle.com/technology/products/database/clustering/index.html> Acesso: 20 junho 2009. PORTILHO, Ricardo. Instalação de Oracle RAC em Linux com VMWare. <http://profissionaloracle.com.br/blogs/portilho/2009/02/18/instalacao-de-oracle-rac-em-linux-com-vmware-parte-i/> Acesso: 22 junho 2009. VALLATH, Murali. Oracle 10g RAC Grid, Services e Clustering. Elsevier Digital Press, 2006, 670p.