Neste contexto, este artigo é útil quando se pretende estudar ou mesmo testar as funcionalidades de um ambiente de Oracle RAC com a versão 12c, mas não há orçamento suficiente para a aquisição de dois servidores, pois permite que, mesmo em máquinas modestas ou até mesmo em uma máquina doméstica (com um pouco mais de recursos), este ambiente seja criado.
O contínuo desenvolvimento dos softwares de virtualização permite que as empresas, e mesmo os profissionais da área de tecnologia de informação, possam usufruir o que há de mais moderno em termos de tecnologias de banco de dados sem a necessidade de “desembolsar” altos valores para a aquisição de equipamentos para implementar as tecnologias de banco de dados.
Sendo assim, empresas com um “orçamento” mais limitado podem testar as novidades disponibilizadas pelos fabricantes de software de banco de dados, avaliar os benefícios de tal tecnologia e decidir pela sua aquisição.
Da mesma forma, os profissionais de banco de dados também tiram proveito da tecnologia de virtualização para seus estudos e, consequente, aprimoramento de seus conhecimentos sem a necessidade de comprar um servidor de banco de dados para ter em casa e, para estudar um ambiente de RAC, ter que comprar dois servidores de banco de dados.
Um dos maiores obstáculos que impedem as empresas e os profissionais de criar ambientes RAC de teste é a exigência de armazenamento compartilhado. Em um ambiente de produção, armazenamento compartilhado muitas vezes é fornecido por um dispositivo SAN ou NAS, mas ambas as opções são muito caras para simplesmente testar a instalação e utilização de um ambiente RAC.
Uma alternativa mais barata é a utilização de uma caixa de disco FireWire para permitir o acesso de duas máquinas a um mesmo disco(s), mas que ainda custa dinheiro e exige dois servidores.
Uma terceira opção é a utilização de virtualização para “simular” o armazenamento compartilhado. Através do Oracle VirtualBox é possível executar várias máquinas virtuais (VMs) em um único servidor, permitindo que sejam executados os dois (ou mais) nós do RAC em uma única máquina. Além disso, ele permite que sejam configurados discos virtuais compartilhados, resolvendo o problema de armazenamento compartilhado caro.
O objetivo deste artigo é justamente o de criar um ambiente de Oracle RAC utilizando-se da tecnologia de virtualização. Assim, apresentaremos como clonar uma máquina virtual para ser o segundo nó de um ambiente de RAC e como configurar estes dois nós para receber a instalação de toda a infraestrutura.
A Figura 1 apresenta a infraestrutura que pretendemos simular.
Figura 1. Ambiente de RAC simulado
Mas antes de “colocarmos a mão na massa”, é preciso considerar algumas coisas:
- Ao final deste artigo, teremos o sistema operacional hospedeiro e dois sistemas operacionais convidados. Imagino que o leitor ainda pretenda fazer a instalação do banco de dados, então já dá para imaginar que isso requer uma quantidade significativa de espaço em disco, CPU e memória;
- Os discos compartilhados, que serão criados, devem ter o seu espaço pré-alocado;
- Este não é, e não deve ser considerado, um sistema pronto para a produção. É simplesmente para a criação de um ambiente de teste, permitindo que o leitor possa efetuar seus estudos do Oracle Database 12c em um ambiente de RAC;
- É considerado que o leitor já tenha uma máquina virtual criada com o sistema operacional devidamente instalado e configurado. Nesta mesma edição foi publicado o artigo “Oracle Database 12c. Criando o ambiente em uma máquina virtual.”, que apresenta em detalhes todos os passos necessários para que o leitor tenha o ambiente devidamente preparado para continuar com o que será apresentado aqui;
- Este artigo usa as versões do Oracle VirtualBox 4,2,16, Oracle Linux 6 de 64 bits num sistema operacional hospedeiro Ubuntu 13.10, Oracle Database 12c Release 1 Enterprise Edition (12.1.0.1.0) - Linux x86-64 e Oracle Grid Infrastructure 12c Release 1 (12.1.0.1.0) - Linux x86-64.
SAN e NAS
A Storage Area Network (SAN) é uma rede dedicada que dá acesso a um dispositivo de armazenamento no nível de bloco consolidado. SANs são usadas principalmente para tornar os dispositivos de armazenamento, como disk arrays, bibliotecas de fitas e jukeboxes ópticos acessíveis aos servidores de modo que os dispositivos aparecam como dispositivos conectados localmente ao sistema operacional.
A SAN normalmente tem sua própria rede de dispositivos de armazenamento que geralmente não são acessíveis através da rede local por outros dispositivos. O custo e a complexidade de SANs caíram no início de 2000 para níveis que permitem a adoção mais ampla tanto em empresas pequenas quanto em ambientes comerciais de médio porte.
A SAN não fornece abstração de arquivos, apenas as operações no nível do bloco. No entanto, sistemas de arquivos construídos em cima de SANs fornecem acesso no nível de arquivo, e são conhecidos como sistemas de arquivos SAN ou sistemas de arquivos de discos compartilhados.
Historicamente, os data centers eram criados como “ilhas” de arrays de disco SCSI como Direct-Attached Storage (DAS), cada uma dedicada a um aplicativo e visível como uma série de “discos rígidos virtuais” (ou seja, LUNs). Essencialmente, uma SAN consolida essas “ilhas” de armazenamento em conjunto, utilizando uma rede de alta velocidade.
Sistemas operacionais mantêm seus próprios sistemas de arquivos em suas próprias LUNs dedicadas e não compartilhada, como se estivessem locais. Se múltiplos sistemas simplesmente tentassem compartilhar uma LUN, estes interfeririam uns com os outros e corromperiam os dados rapidamente.
Qualquer compartilhamento planejado de dados em diferentes computadores dentro de uma LUN requer soluções avançadas, tais como sistemas de arquivos SAN ou computação em cluster.
Apesar desses problemas, SANs ajudam a aumentar a utilização da capacidade de armazenamento, uma vez que vários servidores consolidam o seu espaço de armazenamento privado para os arrays de disco.
Os usos mais comuns de SAN incluem o fornecimento de dados transacionalmente acessados que exigem acesso de alta velocidade no nível de bloco às unidades de disco rígido, tais como servidores de e-mail, bancos de dados e servidores de arquivo de alto uso.
Já Network-attached storage – NAS – (Armazenamento Anexado à Rede) é um armazenamento de dados do computador em nível de arquivo conectado a uma rede de computador que oferece acesso a dados para um grupo heterogêneo de clientes. NAS não só funciona como um servidor de arquivos, mas é especializado para esta tarefa, quer pelo seu hardware, software ou a configuração desses elementos.
NAS muitas vezes é fabricado como um dispositivo de computador - um computador especializado construído a partir do zero para armazenar e servir arquivos - ao invés de simplesmente um computador de uso geral a ser utilizado para esta finalidade.
A partir de 2010 os dispositivos NAS ganharam popularidade como um método conveniente de compartilhar arquivos entre vários computadores. Os benefícios potenciais de armazenamento anexado à rede, em comparação a servidores de arquivos, incluem acesso mais rápido de dados, administração mais fácil e configuração simples.
Sistemas NAS estão em aparelhos conectados à rede que contenham um ou mais discos rígidos, muitas vezes organizados em recipientes de armazenamento redundantes ou RAID. Armazenamento anexado à rede elimina a responsabilidade de servir arquivos de outros servidores na rede. Eles geralmente fornecem acesso a arquivos usando protocolos de compartilhamento de arquivos de rede como: NFS, SMB / CIFS ou AFP.
Uma unidade NAS é um computador conectado a uma rede que fornece apenas serviços de armazenamento de dados baseados em arquivos para outros dispositivos na rede. Embora possa ser tecnicamente possível executar outro software em uma unidade NAS, ele não foi projetado para ser um servidor de propósito geral.
Por exemplo, unidades NAS geralmente não têm um teclado ou um monitor, e são controlados e configurados ao longo da rede, muitas vezes utilizando um navegador.
Um sistema operacional completo não é necessário em um dispositivo NAS, muitas vezes um sistema operacional enxuto é usado. Por exemplo, FreeNAS, uma solução NAS código aberto projetado para hardware PC baratos e é implementado como uma versão reduzida do FreeBSD.
Sistemas NAS contêm um ou mais discos rígidos, muitas vezes organizados em recipientes de armazenamento redundantes ou RAID.
NAS utiliza protocolos baseados em arquivos, como NFS (popular em sistemas UNIX), SMB / CIFS (Message Block / Common Internet File System Server) (usado com sistemas MS Windows), AFP (usado com computadores Apple Macintosh), ou NCP (usado com OES e Novell NetWare). Unidades NAS raramente limitam os clientes a um único protocolo.
Configurando os pré-requisitos de instalação do Oracle Database 12c
A primeira atividade é efetuar o download dos softwares necessários para este tutorial. Os links estão na seção Downloads, logo ao final deste artigo.
Feito isso, agora é o momento de iniciar a instalação do Oracle Database 12c. A primeira coisa a ser feita é configurar todos os pré-requisitos necessários no sistema operacional. Esta configuração pode ser feita de forma automática ou manual.
Sem a menor sombra de dúvidas a forma automática poupa bastante trabalho, por outro lado exige que o servidor de banco de dados (a máquina virtual, neste caso) tenha acesso à Internet. No caso da configuração automática, proceda como apresentado na Listagem 1.
Listagem 1. Configuração automática dos pré-requisitos de instalação.
1. [oracle@oel6-121-rac1 ~]$ su
2. Senha:
3. [root@oel6-121-rac1 oracle]# yum install oracle-rdbms-server-12cR1-preinstall -y
4. Loaded plugins: refresh-packagekit, security
5. ol6_UEK_latest | 1.2 kB 00:00
6. ol6_latest | 1.4 kB 00:00
7. Setting up Install Process
8. Resolving Dependencies
9. --> Running transaction check
10.---> Package oracle-rdbms-server-12cR1-preinstall.x86_64
0:1.0-8.el6 will be installed
11.--> Processing Dependency: ksh for package:
oracle-rdbms-server-12cR1-preinstall-1.0-8.el6.x86_64
12.--> Processing Dependency: libaio-devel for package:
oracle-rdbms-server-12cR1-preinstall-1.0-8.el6.x86_64
13.--> Running transaction check
14.---> Package ksh.x86_64 0:20100621-19.el6_4.4 will be installed
15.---> Package libaio-devel.x86_64 0:0.3.107-10.el6 will be installed
16.--> Finished Dependency Resolution
17.Dependencies Resolved
18.=======================================================================================================================
19. Package Arch Version Repository Size
20.=============================================================================================================================
21.Installing:
22. oracle-rdbms-server-12cR1-preinstall x86_64 1.0-8.el6 ol6_latest 15 k
23.Installing for dependencies:
24. ksh x86_64 20100621-19.el6_4.4 ol6_latest 686 k
25. libaio-devel x86_64 0.3.107-10.el6 ol6_latest 13 k
26.Transaction Summary
27.=============================================================================================================================
28.Install 3 Package(s)
29.Total download size: 714 k
30.Installed size: 1.5 M
31.Downloading Packages:
32.(1/3): ksh-20100621-19.el6_4.4.x86_64.rpm | 686 kB 00:03
33.(2/3): libaio-devel-0.3.107-10.el6.x86_64.rpm | 13 kB 00:00
34.(3/3): oracle-rdbms-server-12cR1-preinstall-1.0-8.el6.x86_64.rpm | 15 kB 00:00
35.-----------------------------------------------------------------------------------------------------------------------------
36.Total 134 kB/s | 714 kB 00:05
37.aviso: rpmts_HdrFromFdno: Cabeçalho V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
38.Retrieving key from http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6
39.Importing GPG key 0xEC551F03:
40. Userid: "Oracle OSS group (Open Source Software group) <build@oss.oracle.com>"
41. From : http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6
42.Running rpm_check_debug
43.Running Transaction Test
44.Transaction Test Succeeded
45.Running Transaction
46. Installing : ksh-20100621-19.el6_4.4.x86_64 1/3
47. Installing : libaio-devel-0.3.107-10.el6.x86_64 2/3
48. Installing : oracle-rdbms-server-12cR1-preinstall-1.0-8.el6.x86_64 3/3
49. Verifying : libaio-devel-0.3.107-10.el6.x86_64 1/3
50. Verifying : oracle-rdbms-server-12cR1-preinstall-1.0-8.el6.x86_64 2/3
51. Verifying : ksh-20100621-19.el6_4.4.x86_64 3/3
52.Installed:
53. oracle-rdbms-server-12cR1-preinstall.x86_64 0:1.0-8.el6
54.Dependency Installed:
55. ksh.x86_64 0:20100621-19.el6_4.4 libaio-devel.x86_64 0:0.3.107-10.el6
56.Complete!
57.[root@oel6-121-rac1 oracle]#
Abra um terminal e conecte-se como usuário root (linha 1) e então execute o comando de instalação via repositório yum (linha 3). A verificação de todas as dependências será feita e todos os pacotes necessários serão “baixados”.
Este procedimento instalará todos os pacotes necessários e já efetuará algumas configurações no nível do sistema operacional.
Caso não queira utilizar o pacote de configuração dos pré-requisitos, ou por problemas de conexão à Internet ou por qualquer outro fator, é possível efetuar a configuração dos pré-requisitos manualmente.
Da mesma forma que o processo automático, é necessário estar conectado como usuário root. Se esta foi sua escolha, será necessário primeiro adicionar o conteúdo apresentado na Listagem 2 no arquivo /etc/sysctl.conf;
Listagem 2. Conteúdo a ser adicionado no arquivo /etc/sysctl.conf.
1. fs.file-max = 6815744
2. kernel.sem = 250 32000 100 128
3. kernel.shmmni = 4096
4. kernel.shmall = 1073741824
5. kernel.shmmax = 4398046511104
6. net.core.rmem_default = 262144
7. net.core.rmem_max = 4194304
8. net.core.wmem_default = 262144
9. net.core.wmem_max = 1048576
10. fs.aio-max-nr = 1048576
11. net.ipv4.ip_local_port_range = 9000 65500
Para que as alterações sejam persistidas nos parâmetros de kernel, execute o comando a seguir:
1. [root@oel6-121-rac1 oracle]# /sbin/sysctl -p
Agora adicione o conteúdo apresentado na Listagem 3 no arquivo /etc/security/limits.conf.
Listagem 3. Conteúdo a ser adicionado no arquivo /etc/security/limits.conf.
1. oracle soft nofile 1024
2. oracle hard nofile 65536
3. oracle soft nproc 2047
4. oracle hard nproc 16384
5. oracle soft stack 10240
6. oracle hard stack 32768
Instale, através do DVD ou mesmo através do repositório yum, os pacotes apresentados na Listagem 4.
Listagem 4. Efetivação das alterações nos parâmetros de kernel.
1. binutils
2. compat-libcap1
3. compat-libstdc++-33
4. compat-libstdc++-33.i686
5. gcc
6. gcc-c++
7. glibc
8. glibc.i686
9. glibc-devel
10. glibc-devel.i686
11. ksh
12. libgcc
13. libgcc.i686
14. libstdc++
15. libstdc++.i686
16. libstdc++-devel
17. libstdc++-devel.i686
18. libaio
19. libaio.i686
20. libaio-devel
21. libaio-devel.i686
22. libXext
23. libXext.i686
24. libXtst
25. libXtst.i686
26. libX11
27. libX11.i686
28. libXau
29. libXau.i686
30. libxcb
31. libxcb.i686
32. libXi
33. libXi.i686
34. make
35. sysstat
36. unixODBC
37. unixODBC-devel
38.
39.
40. [root@oel6-121-rac1 oracle]# yum
install binutils -y
41.
42. [root@oel6-121-rac1 oracle]# cd /media/OEL6.3/Disc1/Paclages
43. [root@oel6-121-rac1 Packages]# rpm -Uvh compat*
Os pacotes que deverão ser instalados estão nas linhas 01 a 37, e o leitor pode instalá-los através do repositório yum (linha 40), ou acessar o DVD de instalação, no diretório “Packages”, e instalar o pacote manualmente (linhas 42 e 43).
Agora é necessário criar os grupos e o usuário no sistema operacional (caso já não esteja criado). A Listagem 5 apresenta esta etapa.
Listagem 5. Criação dos grupos e usuário no sistema operacional
1. [root@oel6-121-rac1 oracle]# groupadd -g 5001 oinstall
2. [root@oel6-121-rac1 oracle]# groupadd -g 5002 dba
3. [root@oel6-121-rac1 oracle]# groupadd -g 5003 oper
4. [root@oel6-121-rac1 oracle]# useradd -u 5001 -g
oinstall -G dba,oper oracle
Os comandos das linhas 01 a 03 criam os grupos necessários, enquanto que o comando da linha 04 cria o usuário oracle, que será o “proprietário” do software do banco de dados.
A partir deste ponto, será necessário executar todos os passos independentemente se as configurações de pré-requisitos tenham sido feitas através do processo manual ou automático.
Defina uma senha para o usuário oracle (caso ainda não o tenha feito), conforme apresentado a seguir:
[root@oel6-121-rac1 oracle]# passwd oracle
Apesar de não ser necessário, é recomendado adicionar os endereços de rede no arquivo /etc/hosts, até mesmo por questões de organização e manter as referências dos endereços utilizados. Veja, na Listagem 6 como ficará o arquivo.
Listagem 6. Conteúdo do arquivo /etc/hosts.
1. 127.0.0.1 localhost.localdomain localhost
2. # Publico
3. 192.168.56.101 oel6-121-rac1.localdomain oel6-121-rac1
4. 192.168.56.102 oel6-121-rac2.localdomain oel6-121-rac2
5. # Privado
6. 192.168.1.101 oel6-121-rac1-priv.localdomain oel6-121-rac1-priv
7. 192.168.1.102 oel6-121-rac2-priv.localdomain oel6-121-rac2-priv
8. # Virtual
9. 192.168.56.251 oel6-121-rac1-vip.localdomain oel6-121-rac1-vip
10.192.168.56.252 oel6-121-rac2-vip.localdomain oel6-121-rac2-vip
11.# SCAN
12.#192.168.56.253 oel6-121-scan.localdomain oel6-121-scan
13.#192.168.56.254 oel6-121-scan.localdomain oel6-121-scan
14.#192.168.56.255 oel6-121-scan.localdomain oel6-121-scan
Perceba que foram definidos os endereços públicos (linhas 02 a 04), privados (linhas 05 a 07), virtuais (linhas 08 a 10) e os SCANs (linhas 11 a 14), que comentarei mais a frente.
Perceba também que o endereço SCAN está comentado no arquivo /etc/hosts, porque ele deve ser resolvido usando um DNS, para que possa escolher aleatoriamente entre três endereços na mesma sub-rede que os IPs públicos. O DNS pode ser configurado na máquina host usando BIND ou Dnsmasq (ver BOX 1), que é muito mais simples.
Caso esteja usando Dnsmasq, coloque as entradas específicas de RAC nas máquinas hospedeiras no arquivo “/etc/host”, com as entradas SCAN descomentadas e reinicie Dnsmasq.
Verifique se o arquivo “/etc/resolv.conf” inclui uma entrada chamada “nameserver” que aponta para o servidor de nomes correto. Além disso, se as entradas “domain” e “search” estão presentes, comente uma delas. Para esta instalação o arquivo “/etc/resolv.conf” deve ficar como apresentado na Listagem 7.
Listagem 7. Conteúdo do arquivo /etc/resolv.conf
1. search localdomain
2. nameserver 192.168.2.20
BIND
é o software de DNS mais utilizado na Internet. Nos sistemas
operacionais Unix-like é o padrão. Originalmente escrito por quatro
estudantes de pós-graduação do Grupo de Pesquisa em Sistemas de Computação da
Universidade da Califórnia, em Berkeley (UCB), o nome se origina como uma sigla
de Berkeley Internet Name Domain, refletindo o uso do aplicativo na UCB. BIND foi lançado pela primeira
vez com o Berkeley Software Distribution 4.3BSD. Paul Vixie começou a
mantê-lo em 1988, enquanto trabalhava para a Digital Equipment Corporation.
A partir de 2012, a Internet Systems Consortium mantém, atualiza e
escreve novas versões do BIND. A última versão do BIND, BIND 10 1.1.0 foi
lançado em 6 de junho de 2013, mas ainda não há uma distribuição binária para o
MS-Windows ou sequer suporte para o sistema operacional MS-Windows, embora BIND
9 tenha suporte completo para o MS-Windows. Já o
Dnsmasq é um servidor leve projetado para fornecer serviços de DNS, DHCP e TFTP
a uma rede de pequena escala. Pode servir os nomes de máquinas locais que não
estão nos DNS globais. O servidor DHCP integra o servidor de DNS e permite que
as máquinas com endereços alocados via DHCP apareçam no DNS com nomes
configurados, ou em cada host, ou em um arquivo de configuração central.
Dnsmasq suporta concessões de DHCP estático e dinâmico e BOOTP para
inicialização via rede de máquinas sem disco. Os desenvolvedores de redes
Dnsmasq direcionaram seu desenvolvimento a residências usando NAT e conectados
à Internet através de um modem, cable-modem ou ADSL, mas o sistema
funciona bem em qualquer rede pequena onde a baixa utilização de recursos e
facilidade de configuração são importantes. As plataformas suportadas incluem
Linux (com glibc ou uClibc), BSD e Mac OS X.
O foco deste artigo não é a instalação/criação de um servidor DNS. Parto do princípio que o leitor já tenha esta configuração pronta. Se não for o seu caso, na sessão Links você encontrará um link para um artigo interessante, que ensina a instalar e configurar o Dnsmasq, tanto em distribuições baseadas no Debian (como é o caso do Ubuntu) quanto distribuições baseadas no RedHat (como é o caso do Oracle Enterprise Linux). Apenas não se esqueça de que este servidor DNS deve ser a máquina host.
As alterações no arquivo “resolv.conf” serão substituídas pelo Network Manager, devido à presença da interface NAT. Por esta razão, esta interface agora deve ser desativada na inicialização. É possível habilitá-la manualmente caso precise acessar a internet a partir das VMs.
Edite o arquivo “/etc/sysconfig/network-scripts/ifcfg-eth0”, fazendo a alteração apresentada logo a seguir. Esta alteração terá efeito após a próxima reinicialização:
ONBOOT=no
Não é necessário reiniciar neste momento. Basta executar o comando apresentado a seguir para “baixar” a interface eth0:
# ifdown eth0
Se tudo estiver OK, incluindo o servidor DNS, o endereço do SCAN está sendo resolvido para os três endereços IP, como é apresentado na Listagem 8.
Listagem 8. Verificando a resolução do endereço do SCAN.
1. [root@oel6-121-rac1 oracle]# nslookup ol6-121-scan
2. Server: 192.168.2.20
3. Address: 192.168.2.20#53
4. Name: ol6-121-scan.localdomain
5. Address: 192.168.56.106
6. Name: ol6-121-scan.localdomain
7. Address: 192.168.56.107
8. Name: ol6-121-scan.localdomain
9. Address: 192.168.56.105
Agora altere o conteúdo do arquivo “/etc/security/limits.d/90-nproc.conf” para que fique da seguinte forma:
* - nproc 16384
Também altere a configuração do SELinux para permissiva editando o arquivo “/etc/ selinux/config”:
SELINUX=permissive
Tenha certeza que o firewall está realmente desabilitado. Depois, configure o NTP, ou tenha certeza de que ele não está configurado para que o Oracle Cluster Time Synchronization Service (ctssd) possa sincronizar o horário dos nós do RAC. Para desabilitar o NTP, como feito nesta instalação, execute os comandos apresentado na Listagem 9.
Listagem 9. Desabilitando o NTP.
1. [root@oel6-121-rac1 oracle]# service ntpd stop
2. Desligando o ntpd: [ OK ]
3. [root@oel6-121-rac1 oracle]# chkconfig ntpd off
4. [root@oel6-121-rac1 oracle]# mv /etc/ntp.conf /etc/ntp.conf.orig
Agora estamos mais próximos das etapas de uma instalação convencional. Chegou a hora de criar a estrutura de diretórios para a instalação. Veja o conteúdo apresentado na Listagem 10.
Listagem 10. Criando a estrutura de diretórios para a instalação.
1. [root@oel6-12 ...