Instalação do Oracle RAC 10g Release 2 – Parte 1: Pré-requisitos
Instalação do Oracle RAC 10g Release 2 – Parte 2: Criação da VM
Instalação do Oracle RAC 10g Release 2 – Parte 3: Instalação do Linux

===================================

Olá pessoal!

Vimos no último artigo como instalar o Linux.

Pois bem, agora precisamos configurar o nosso sistema operacional para atender os pré-requisitos necessários para instalar o software Oracle de banco de dados e clusterização.

Os pré-requisitos são citados na Documentação Oficial:

No entanto, quando o software de banco de dados 10g Release 2 foi lançado, ainda não estava disponível no mercado o Red Hat Enterprise Linux 5. Por esse motivo, nos documentos acima, essa versão de sistema operacional não é citada. Somente é possível encontrar esses pré-requisitos no Metalink (Oracle Support). Para acesso ao Metalink, é necessário ter um contrato de suporte junto à Oracle (CSI). No Metalink, é possível encontrar notas de suporte atualizadas para as versões de banco ainda suportadas pela Oracle.

A Nota 419646.1 cita os pré-requisitos necessários para instalar o Oracle 10g Release 2 no Red Hat Enterprise Linux 5 32bit.

Vamos lá, para os pacotes de sistema operacional (os RPM’s), a lista dos pré-requisitos é a seguinte:

  • binutils-2.17.50.0.6-2.el5;
  • compat-libstdc++-33-3.2.3-61;
  • elfutils-libelf-0.125-3.el5;
  • elfutils-libelf-devel-0.125;
  • gcc-4.1.1-52;
  • gcc-c++-4.1.1-52;
  • glibc-2.5-12;
  • glibc-common-2.5-12;
  • glibc-devel-2.5-12;
  • glibc-headers-2.5-12;
  • libaio-0.3.106;
  • libaio-devel-0.3.106;
  • libgcc-4.1.1-52;
  • libstdc++-4.1.1 ;
  • libstdc++-devel-4.1.1-52.e15;
  • make-3.81-1.1;
  • sysstat-7.0.0;
  • unixODBC-2.2.11;
  • unixODBC-devel-2.2.11.

Para pesquisar se temos os pacotes, uma das melhores maneiras é utilizando a seguinte sintaxe, com o binário rpm com o usuário root:

rpm -qa --queryformat "%{NAME}-%{VERSION}.%{RELEASE} (%{ARCH})\n" | grep package_name

Como exemplo, vou pesquisar o pacote binutils:

rpm -qa --queryformat "%{NAME}-%{VERSION}.%{RELEASE} (%{ARCH})\n" | grep binutils

A saída do comando será:

binutils-2.17.50.0.6.9.el5 (i386)

De acordo com a lista acima, e com a instalação do sistema operacional realizada, os únicos pacotes que ainda precisamos instalar são os seguintes:

elfutils-libelf-devel-0.125;
libaio-devel-0.3.106;
unixODBC-2.2.11;
unixODBC-devel-2.2.11.

Para instalar esses pacotes, primeiramente devemos apontar na Console da VMWare que essa máquina virtual utilizará a imagem ISO do Linux:

Após isso, deveremos montar o DVD no sistema operacional, acessar o DVD e instalar os pacotes restantes:

[root@mvrac1 ~]# mount /dev/hdc /media
mount: block device /dev/hdc is write-protected, mounting read-only
[root@mvrac1 ~]# cd /media/Server/
[root@mvrac1 Server]# rpm -ivh elfutils-libelf-devel*
warning: elfutils-libelf-devel-0.137-3.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
Preparing...                ############################### [100%]
   1:elfutils-libelf-devel-s############################### [ 50%]
   2:elfutils-libelf-devel  ############################### [100%]
[root@mvrac1 Server]# rpm -ivh libaio-devel*
warning: libaio-devel-0.3.106-3.2.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
Preparing...                ############################### [100%]
   1:libaio-devel           ############################### [100%]
[root@mvrac1 Server]# rpm -ivh unixODBC*
warning: unixODBC-2.2.11-7.1.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
Preparing...                ############################### [100%]
   1:unixODBC               ############################### [ 33%]
   2:unixODBC-devel         ############################### [ 67%]
   3:unixODBC-kde           ############################### [100%]

Pronto! Uma parte dos pré-requisitos foi concluída!

O próximo passo serão os parâmetros de kernel.

Os seguintes parâmetros precisam ser adicionados ao arquivo de configuração /etc/sysctl.conf

kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144

Após colocar esses parâmetros no arquivo acima especificado, para efetivar os parâmetros no sistema operacional, o seguinte comando deverá ser executado como root:

sysctl -p

Agora, faremos a criação dos grupos e usuário no sistema operacional. Para o ambiente com Oracle RAC, a Oracle solicita que todos os usuários e grupos envolvidos na instalação do software Oracle, possuam os mesmos ID’s em todas as máquinas. Por isso, os grupos oinstall, dba e o usuário oracle serão criados da seguinte forma:

groupadd -g 1521 oinstall
groupadd -g 1522 dba
useradd -g oinstall -G dba -u 1521 oracle

A senha do usuário oracle deverá ser definida:

[root@mvrac1 Server]# passwd oracle
Changing password for user oracle.
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:
passwd: all authentication tokens updated successfully

Com os grupos e usuário criados, agora os diretórios deverão ser criados:

mkdir -p /u01/app/oracle/oraInventory
mkdir -p /u01/app/oracle/product/10.2.0/crs
mkdir -p /u01/app/oracle/product/10.2.0/db_1
chown -R oracle:oinstall /u01

Num ambiente corporativo, é recomendado instalar um Oracle Home para o ASM separadamente do Oracle Home do banco de dados. Como estamos num ambiente virtualizado, utilizarei o ASM e o banco de dados no mesmo Oracle Home.

Agora, o arquivo /etc/security/limits.conf deverá ser editado e as seguintes linhas deverão ser adicionadas:

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

O próximo arquivo a ser editado é o /etc/pam.d/login:

 session required pam_limits.so

O próximo arquivo a ser editado é o /etc/profile:

if [ $USER = "oracle" ]; then
	ulimit -u 16384
	ulimit -n 65536
fi

O módulo hangcheck-timer deverá ser carregado no kernel. Além disso, ele deverá ser carregado automaticamente quando o servidor for iniciado novamente. Num próximo artigo eu definirei em detalhes sobre o que é o hangcheck-timer. Editar o arquivo /etc/rc.d/rc.local e inserir a seguinte linha no final arquivo:

/sbin/insmod /lib/modules/2.6.18-128.el5/kernel/drivers/char/hangcheck-timer.ko hangcheck_tick=1 hangcheck_margin=10 hangcheck_reboot=1

Após isso, executar o arquivo e verificar se o módulo foi carregado:

[root@mvrac1 ~]# /etc/rc.d/rc.local
[root@mvrac1 ~]# lsmod |grep hangcheck
hangcheck_timer         8025  0

Outro ponto importante num ambiente clusterizado, é o horário dos servidores. Como os servidores vão “hospedar” o mesmo banco de dados, é importante que o horário desses servidores estejam sincronizados. Por este motivo, é recomendado utilizar um servidor NTP (Network Time Protocol). Muitas empresas têm servidores NTP internamente, na sua própria rede, e na grande maioria das vezes, esses servidores NTP apontam para um servidor NTP externo, muito preciso, brasileiro, que é o servidor da Rede Nacional de Ensino e Pesquisa (RNP).

Se a empresa não tiver um servidor NTP interno, e os servidores de banco de dados conseguirem acessar a Internet, basta colocar a seguinte informação na crontab do usuário root no servidor de banco de dados:

 * * * * * /usr/sbin/ntpdate ntp.cais.rnp.br >/dev/null 2>/dev/null

Com isso, o servidor sempre terá a hora sincronizada.

Para garantir que o serviço está OK, ou seja, que o servidor de banco de dados consegue utilizar o binário ntpdate para acessar o servidor da RNP, basta executar o seguinte comando como root:

[root@mvrac1 ~]# ntpdate ntp.cais.rnp.br
18 Feb 00:06:46 ntpdate[23646]: step time server 200.144.121.33 offset 90541.348582 sec

O próximo passo é configurar o arquivo /etc/hosts do servidor. Nesse arquivo, teremos a configuração de todos os servidores que farão parte do cluster:

# ========================================
# Arquivo /etc/hosts configurado para utilizacao do Oracle RAC
# Configurado por Marcus Vinicius
# 18/02/2010
# ========================================

# Localhost
127.0.0.1         localhost.localdomain      localhost

# Oracle RAC 10g
# -----------------

# Rede Publica
172.23.10.11   mvrac1.viniciusdba.com.br       mvrac1
172.23.10.12   mvrac2.viniciusdba.com.br       mvrac2

# InterConnect - Conexao Privada
10.0.0.11      mvrac1-priv.viniciusdba.com.br  mvrac1-priv
10.0.0.12      mvrac2-priv.viniciusdba.com.br  mvrac2-priv

# Virtual IP's
172.23.10.21   mvrac1-vip.viniciusdba.com.br   mvrac1-vip
172.23.10.22   mvrac2-vip.viniciusdba.com.br   mvrac2-vip

Por enquanto, para finalizarmos os pré-requisitos, falta instalarmos e configurarmos a ASMLib. Eu explicarei o porquê de utilizarmos essa LIB num artigo posterior.

Para baixarmos a ASMLib, precisamos acessar o seguinte link:

Oracle ASMLib Page / Downloads / Red Hat Enterprise Linux 5 AS*.

Deveremos encontrar a seção na página que trata da arquitetura 32bit:

Intel IA32 (x86) Architecture

Após encontrarmos, os dois primeiros arquivos deverão ser baixados:

Após baixar esses dois arquivos, procurar a versão correta da Lib para o Kernel utilizado no sistema operacional: 2.6.18-128.el5. Pode ser que você encontre variações como 2.6.18-128.1.1.el5 e assim por diante. Ignore essas versões, encontre a versão exata do Kernel:

Baixar os três arquivos, transferí-los via SCP/FTP para o servidor e instalá-los, com o usuário root:

[root@mvrac1 ~]# rpm -ivh oracleasm*
warning: oracleasm-2.6.18-128.el5-2.0.5-1.el5.i686.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
Preparing...                ############################### [100%]
   1:oracleasm-support      ############################### [ 33%]
   2:oracleasm-2.6.18-128.el############################### [ 67%]
   3:oracleasmlib           ############################### [100%]

Após instalar os pacotes, deveremos configurar a ASMLib no sistema operacional:

[root@mvrac1 ~]# /etc/init.d/oracleasm configure
Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library
driver.  The following questions will determine whether the driver is
loaded on boot and what permissions it will have.  The current values
will be shown in brackets ('[]').  Hitting  without typing an
answer will keep that current value.  Ctrl-C will abort.

Default user to own the driver interface []: oracle
Default group to own the driver interface []: dba
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done
Initializing the Oracle ASMLib driver:                     [  OK  ]
Scanning the system for Oracle ASMLib disks:               [  OK  ]

Pronto! A primeira fase de pré-requisitos foi concluída! Falta agora particionar os discos e criar a equivalência de usuários entre os servidores que farão parte do cluster.
Como estamos num ambiente virtualizado, podemos agora baixar esse servidor, para clonar esse servidor para a nova máquina virtual (mvrac2).

Baixar o servidor:

 shutdown -h now

No próximo artigo veremos como clonar esse servidor para criar a nova máquina virtual.

Abraços!

Vinicius

 

———–

* Links do ASMLIb atualizados em 19/05/2011. Obrigado, Mônica!