Instalando Oracle 10g no CentOS 6.4

Esse artigo tem por finalidade seguir passo a passo a preparação e  ambiente de instalação do Oracle 10gR2 x64 no sistema operacional CentOS 6.4 x64. Parte do pressuposto que o CentOS tenha sido instalado na configuração Basic Server e adicionado apenas os pacotes do grupo X Window System e Desktop.

Alguns artigos anteriores poderão ser úteis:

Utilizarei o usuário root na execução dos comando até que seja expressa a mudança de usuário no decorrer do artigo. É importante ter acesso ao sistema como root, pois em alguns momentos será necessária sua utilização.

Host

A documentação da Oracle recomenda que o servidor tenha um nome de rede qualificado e endereço IP fixo, porém, nesta instalação utilizarei o localhost. O uso de um nome qualificado não interferirá nos procedimentos de instalação, basta seguir a mesma orientação.

Verifique que a primeira linha do arquivo /etc/hosts tenha o nome e endereço do servidor, trata-se de um requisito da instalação:

$ cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

Tudo ok!

Contas e Grupos

Será necessário criar grupos para os usuários do sistema que utilizam ou inicializam o banco de dados. Inicialmente será criado o grupo Oracle Inventory:

$ /usr/sbin/groupadd oinstall

Também, criar o grupo de OSDBA:

$ /usr/sbin/groupadd dba

Apesar de opcional, criar o grupo de operadores OSOPER:

$ /usr/sbin/groupadd oper

Agora um ponto importante, a criação do usuário da aplicação deverá inseri-lo no grupo oinstall (primário), dba e oper:

$ /usr/sbin/useradd -g oinstall -G dba,oper oracle

Em seguida, atribuir uma senha:

$ /usr/bin/passwd oracle

Por último, avaliar se existe no sistema um usuário chamado nobody. Normalmente ele está presente nos sistemas operacionais baseados em Linux. Caso não existe será necessário criá-lo:

$ id nobody 
uid=99(nobody) gid=99(nobody) grupos=99(nobody)

Finalizamos esta fase de configuração.

Parâmetros do Kernel

Há uma série de verificações que se deve realizar para enquadrarmos os requisitos de kernel da Oracle. Aqui não abordaremos a comparação necessária, que poderá ser obtida no guia de instalação da Oracle, no item Configuring Kernel Parameters, página 2-14. Em geral, as alterações serão aplicadas serão consideradas abaixo:

Adicionar no arquivo /etc/sysctl.conf as seguintes linhas:

kernel.sem                   = 250 32000 100 128 
net.ipv4.ip_local_port_range = 1024 65000 
net.core.rmem_default        = 262144 
net.core.rmem_max            = 262144 
net.core.wmem_default        = 262144 
net.core.wmem_max            = 262144 
vm.hugetlb_shm_group         = 502

Note que o valor de vm.hugetlb_shm_group corresponde ao id do grupo dba criado anteriormente e obtido do arquivo /etc/groups.

Para saber mais sobre o HUGETBL há um bom artigo que pode ser acessado em http://www.linuxinsight.com/oracle10g_on_debian.html

Executar o comando a seguir para que as alterações sejam disponibilizadas para o kernel em operação:

$ /sbin/sysctl -p

Atualizar o arquivo /etc/sysconfig/limits.conf

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

Verificar se o arquivo /etc/pam.d/login contém a linha abaixo. Em caso negativo inclua:

session     required     pam_limits.so

Oracle Base Directory

Neste servidor o diretório raiz para as aplicações oracle ficará na pasta /opt/oracle/app. Esse diretório é importante pois a partir dele se dará a instalação dos módulos do banco de dados. A criação do diretório será realizada pelos seguintes comando:

$ /bin/mkdir -p /opt/oracle/app 
$ /bin/chown -R oracle:oinstall /opt/oracle/app 
$ /bin/chmod -R 775 /opt/oracle/app

O comando mkdir criará o diretório, já o comando chown alterará o owner e grupo do diretório e chmod fornecerá as permissões de leitura, escrita e execução.

Configuração do Usuário

Visando facilitar o acesso aos recursos do sistema para o usuário oracle, vamos lterar o arquivo /home/oracle/.bash_profile incluindo o seguinte código:

ORACLE_BASE=/opt/oracle/app 
ORACLE_SID=ORCL 
export ORACLE_BASE

if [ $USER = "oracle" ]; then 
    if [ $SHELL = "/bin/ksh" ]; then 
        ulimit -p 16384 
        ulimit -n 65536 
    else 
        ulimit -u 16384 -n 65536 
    fi 
fi   

umask 022

Tudo pronto para iniciar o processo de instalação de bibliotecas.

Instalando Pré-Requisitos

Utilizando a ferramenta yum deve-se proceder a instalação de bibliotecas necessárias a execução da instalação. Cada biblioteca abaixo deverá ser instalada através do comando: yum install <library>

binutils
compat-db
control-center
gcc
gcc-c++
glibc
glibc-common
libstdc++
libstdc++-devel
make
sysstat
libXp
libXp.i686
libXt
libXt.i686
libXtst.i686
glibc.i686
compat-gcc
glic_devel.i686
glibc_static
glibc_static.i686
libgcc.i686
compat_libstdc++

Distribuição

O pacote de instalação será executado a partir de um diretório temporário:

$ /bin/mkdir /tmp/Oracle10gR2
$ /bin/chown -R oracle:oinstall /tmp/Oracle10gR2
$ /bin/chmod -R 775 /tmp/Oracle10gR2

Copiar o arquivo compactado da distribuição para o diretório temporário:

$ /bin/cp oracle_10201_database_linux_x86_64.cpio.gz /tmp/Oracle10gR2

Descompactar a distribuição Oracle:

$ cd /tmp/Oracle10gR2 
$ /bin/gunzip oracle_10201_database_linux_x86_64.cpio.gz

Será criado um arquivo chamado oracle_10201_database_linux_x86_64.cpio. Caso o arquivo compactado ainda persista no diretório, pode removê-lo sem preocupação. 

O arquivo cpio trata-se do arquivo de instalação. Deve-se descompactá-lo utilizando o comando cpio como segue:

$ /bin/cpio -idmv < oracle_10201_database_linux_x86_64.cpio

Neste ponto temos a instalação pronta para ser executada. Caso o arquivo de instalação persista no diretório, pode ser removido sem preocupação. Reinicie o sistema operacional e logue com o usuário oracle. Avalie os itens que foram configurados e parta para a instalação do Oracle:

$ cd /tmp/Oracle10gR2/database $ ./runInstaller

Pós Instalação

Após a instalação a documentação da Oracle recomenda realizar backup do arquivo root.sh porque quando houver execução de patchs ou produtos esse arquivo será sobreposto:

$ cd /opt/oracle/app/oracle/product/10.2.0/db_1 
$ /bin/cp root.sh root.sh_oracle_10.2.0

É muito interessante adicionar alguns paths nas variáveis de ambiente do usuário oracle para facilitar a gestão do banco. Este procedimento deve ser realizado apenas para a primeira instalação, pois caso haja mais de uma instâncias de banco instalada, gerará conflito.

$ vim /home/oracle/.bash_profile
 
# adicionar
ORACLE_HOME=$ORACLE_BASE/oracle/product/10.2.0/db_1
export ORACLE_HOME
 
# alterar
PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
 
# adicionar
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export LD_LIBRARY_PATH

Execute o comando a seguir para que seja realizada atualização das variáveis de ambiente:

$ . /home/oracle/.bash_profile

Finalmente inicie o banco de dados:

$ lsnrctl start $ dbstart

Neste ponto a execução do segundo comando, dbstart, pode lhe apresentar um erro: Failed to auto-start Oracle Net Listene using /ade/vikrkuma_new/oracle/bin/tnslsnr. Isso significa que seu banco não pode ser inicialiado por esse comando. Altere o arquivo /etc/otatab trocando o último caracter da linha que identifica seu banco de N por Y, como segue:

$ vim /etc/oratb orcl:/opt/oracle/app/oracle/product/10.2.0/db_1:Y

Execute novamente o comando de inicialização do banco:

$ dbstart

A mensagem de erro decorre de um código hardcoded no script do comando dbstart. Pode ser resolvido alterando o script trocando o path /ade/vikrkuma_new/oracle/bin/tnslsnr por $ORACLE_HOME:

$ vim /opt/oracle/app/oracle/product/10.2.0/db_1/bin/dbstart

# alterar 
ORACLE_HOME_LISTNER=$ORACLE_HOME

Teste SQLPlus

Neste ponto temos o banco de dados iniciado. Faça uma conexão com o aplicativo sqlplus para evidenciar a conexão:

$ sqlplus system@orcl
SQL*Plus: Release 10.2.0.1.0 - Production on Tue Aug 20 14:19:06 2013
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
Enter password:

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options

SQL>

Temos o pronto para execução de instruções SQL.

Shutdown

Para finalizar o Oracle manualmente segue-se o seguinte:

$ dbshut
$ lsnrctl stop