Instalando e Configurando o Oracle DataBase 10G no Centos 5.5

Vou levar em consideração que o CentOS 5.5 está instalado e com o ambiente gráfico.

Informações da máquina:

  • IP: 192.168.0.50/24
  • Nome: oracle
  • Domínio: douglasqsantos.com.br

Vamos ajustar o nome da máquina

vim /etc/hosts
127.0.0.1       oracle10.lab.lan oracle10 localhost.localdomain localhost
::1             localhost6.localdomain6 localhost6
192.168.0.50    oracle10.douglasqsantos.com.br oracle10

Vamos instalar as dependências, eu vou utilizar os repositórios default do CentOS

yum install binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel glibc glibc-common glibc-devel gcc gcc-c++ libaio libaio-devel \
libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel pdksh libXp libXp-devel openmotif setarch  -y

Vamos agora ajustar as variáveis do kernel para o Oracle

vim /etc/sysctl.conf
#kernel.shmall = 2097152
#kernel.shmmax = 2147483648
kernel.shmmni = 4096
# semaphores: semmsl, semmns, semopm, semmni
kernel.sem = 250 32000 100 128
#fs.file-max = 65536
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

Agora vamos carregar elas

sysctl -p

Agora precisamos ajustar as variáveis de controle de uso do sistema para o oracle

vim  /etc/security/limits.conf
[...]
#Adicionar no final do arquivo
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

Agora vamos adicionar a biblioteca de controle de limites no login

echo "session required pam_limits.so" >> /etc/pam.d/login

Agora precisamos deixar o selinux desabilitado

vim /etc/selinux/config
[...]
SELINUX=disabled

Agora vamos criar os grupos que serão utilizados pelo Oracle

groupadd oinstall
groupadd dba
groupadd oper

Agora vamos criar o usuário oracle

useradd -m -g oinstall -G dba oracle

Agora vamos definir a senha do nosso Oracle

passwd oracle

Agora vamos criar o diretório para armazenar a instalação do Oracle

mkdir -p /u01/app/oracle/product/10.2.0/db_1

Agora vamos ajustar as permissões dos diretórios

chown -R oracle.oinstall /u01

Agora vamos fazer um backup do arquivo que controla a versão do CentOS

cp /etc/redhat-release /etc/redhat-release.bkp

Agora vamos ajustar a versão que o Oracle vai esperar para a instalação

echo "redhat-4"> /etc/redhat-release

Agora vamos ajustar as variáveis de ambiente do Oracle

vim /home/oracle/.bash_profile
[...]
#Adicionar no final do arquivo
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR

ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOME
ORACLE_SID=TSH1; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

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

Note que aqui foi setado o SID default do Oracle como TSH1 que é o nome do banco default que o Oracle gera caso utilize outro nome para a instância precisamos mudar essa variável.

Agora vamos dar permissão no diretório que contém os arquivos de instalação do Oracle para o usuário oracle

chown -R oracle /usr/src/database10gR2/

Agora vamos acessar o servidor com o usuário Oracle.

Podemos exportar o display para outro host

Podemos acessar o servidor via ssh mandando exportar o X

ssh -X oracle@192.168.0.50

Agora vamos liberar o Oracle a exportar a tela de instalação

xhost +

Agora vamos chamar o instalador do Oracle

/usr/src/database10gR2/runInstaller

Vamos ter a seguinte tela

Aqui vamos selecionar Advanced Installation e selecione Next

Agora vamos ter a seguinte tela para armazenar os arquivos do Oracle

Aqui vamos deixar como na imagem e vamos selecionar Next

Agora precisamos selecionar a versão do nosso Oracle escolha a que você achar melhor eu vou deixar a default Enterprise Edition note que ela vai precisar de no mínimo 1.60GB

Aqui vamos selecionar Next

Agora precisamos passar a path do diretório aonde vai ser instalado o Oracle vamos deixar a default como na imagem e o nome vamos deixar como db_1

Agora vamos selecionar Next

Agora vamos ter as checagens dos pre-requisitos aqui no meu caso o Oracle está me alertando sobre a configuração da interface com DHCP

Aqui selecione Next

No meu caso vou ter um warn apenas selecione yes

Agora vamos ter a opção de instalar somente o software de SGDB ou criar um Banco de dados vamos selecionar Create a database como na imagem

Aqui selecione Next

Aqui vamos ter os tipos de configuração para o banco eu vou escolher transactional Processing

Aqui selecione Next

Agora vamos ter o nome global do banco de dados e o seu SID como TSH1 eu vou deixar esse padrão que foi o que eu defini no .bash_profile do usuário oracle

Aqui selecione Next

Agora temos a opção de utilizar o Database Management que é uma ferramente web para o gerenciamento da nossa instancia do Banco de dados eu vou deixar habilitado Use Database Cotnrol for Database Management

Aqui selecione Next

Agora temos a opção de especificar o mecanismo de armazenamento do Banco de dados eu não estou utilizando ASM então vou deixar a primeira opção File System

Aqui selecione Next

Agora podemos especificar se o Oracle vai fazer o backup automático do nosso banco de dados na FRA no File System ou no ASM eu não vou habilitar essa opção.

Aqui selecione Next

Agora podemos especificar as senhas para os usuários do Oracle eu vou definir para todos eles a mesma senha depois eu posso modificar isso

Aqui selecione Next depois de informar a senha

Agora vamos ter um resumo da nossa instalação

Aqui vamos selecionar Install

Agora vamos ter a seguinte tela a instalação do Software SGDB

Agora que o SGDB já foi instalado vamos ter a tela de criação do Banco de dados

Após a criação do banco de dados vamos ter a seguinte tela

Aqui temos informações de como acessar o Enterprise Management aqui selecione Ok

Agora vamos ter um aviso que precisamos executar dois script com a permissão de root

Vamos executar eles com o usuário root

Vamos executar o primeiro script

/u01/app/oracle/oraInventory/orainstRoot.sh 
Changing permissions of /u01/app/oracle/oraInventory to 770.
Changing groupname of /u01/app/oracle/oraInventory to oinstall.
The execution of the script is complete

Agora vamos executar o segundo script

/u01/app/oracle/product/10.2.0/db_1/root.sh
Running Oracle10 root.sh script...

The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /u01/app/oracle/product/10.2.0/db_1

Enter the full pathname of the local bin directory: [/usr/local/bin]: #ENTER
   Copying dbhome to /usr/local/bin ...
   Copying oraenv to /usr/local/bin ...
   Copying coraenv to /usr/local/bin ...


Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.

Como pode ser notado os dois script foram executados com sucesso então podemos selecionar ok da tela de aviso.

Agora vamos ter a seguinte tela se tudo deu certo

Aqui vamos selecionar Exit e Yes

Agora com o usuário oracle vamos consultar a nossa instancia

lsnrctl status

LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 26-APR-2013 09:53:58

Copyright (c) 1991, 2005, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date                26-APR-2013 09:44:18
Uptime                    0 days 0 hr. 9 min. 39 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle10.douglasqsantos.com.br)(PORT=1521)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "TSH1" has 1 instance(s).
  Instance "TSH1", status READY, has 1 handler(s) for this service...
Service "TSH1XDB" has 1 instance(s).
  Instance "TSH1", status READY, has 1 handler(s) for this service...
Service "TSH1_XPT" has 1 instance(s).
  Instance "TSH1", status READY, has 1 handler(s) for this service...
The command completed successfully

Como podemos notar a nossa instancia está ok

Vamos acessar o banco para confirmar se ele está ok

sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Fri Apr 26 09:54:34 2013

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


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

SQL> quit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options

Agora com o usuário root Agora vamos voltar o arquivo de controle de versão do CentOS

cp /etc/redhat-release.bkp /etc/redhat-release

Agora tamos ajustar o oratab aqui vamos mudar o N no final da linha para Y

vim /etc/oratab
[...]
TSH1:/u01/app/oracle/product/10.2.0/db_1:Y

Isso vai ser utilizado para podermos subir e baixar o banco com o dbstart

Agora vamos criar o script para manipular o banco

vim /etc/init.d/dbora
#!/bin/bash
#
# Init file for Oracle 10G
#
# chkconfig: 345 55 25
# description: Oracle 10G

ORA_HOME=/u01/app/oracle/product/10.2.0/db_1
ORA_OWNER=oracle

if [ ! -f $ORA_HOME/bin/dbstart ]
then
    echo "Oracle startup: cannot start"
    exit
fi

case "$1" in
    'start')
        # Start the Oracle databases:
        # The following command assumes that the oracle login
        # will not prompt the user for any values
        su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart $ORA_HOME"
        ;;
    'stop')
        # Stop the Oracle databases:
        # The following command assumes that the oracle login
        # will not prompt the user for any values
        su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut $ORA_HOME"
        ;;
esac

Agora vamos dar permissão para o script

chmod 750 /etc/init.d/dbora

Agora vamos colocar o script na inicialização do sistema

chkconfig --level 345 dbora on

Agora precisamos fazer um ajuste no arquivo de controle do banco

vim /u01/app/oracle/product/10.2.0/db_1/bin/dbstart
[...]
#Na linha 78 precisamos deixar ela da seguinte maneira
ORACLE_HOME_LISTNER=$ORACLE_HOME
[...]

Agora vamos testar ele vamos parar o banco

/etc/init.d/dbora stop

Agora com o usuário oracle vamos verificar as instâncias do banco

lsnrctl status

LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 26-APR-2013 10:07:39

Copyright (c) 1991, 2005, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date                26-APR-2013 10:06:57
Uptime                    0 days 0 hr. 0 min. 41 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle10.douglasqsantos.com.br)(PORT=1521)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

Como podemos notar não temos instâncias TSH1 ativas

Agora vamos subir o banco novamente com o usuário root

/etc/init.d/dbora start
Processing Database instance "TSH1": log file /u01/app/oracle/product/10.2.0/db_1/startup.log

Agora vamos consultar as instâncias novamente

lsnrctl status

LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 26-APR-2013 10:08:03

Copyright (c) 1991, 2005, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date                26-APR-2013 10:06:57
Uptime                    0 days 0 hr. 1 min. 6 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle10.douglasqsantos.com.br)(PORT=1521)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "TSH1" has 1 instance(s).
  Instance "TSH1", status READY, has 1 handler(s) for this service...
Service "TSH1XDB" has 1 instance(s).
  Instance "TSH1", status READY, has 1 handler(s) for this service...
Service "TSH1_XPT" has 1 instance(s).
  Instance "TSH1", status READY, has 1 handler(s) for this service...
The command completed successfully

Referências