viernes, 17 de diciembre de 2010

Requisitos Para Instalar Oracle 11gR2 en Linux x86 para RHEL5

Estos son los requerimientos para poder instalar Oracle 11gR2 en Oracle Linux x86 para RHEL 5. Siempre recomiendo tomar los ultimos valores disponibles en la documentacion oficial de Oracle disponible en este enlace
Si no especifico otro usuario, todos los comando mencionados son con el usuario root asi que debemos tener acceso a ese usuario.

Requisitos de Memoria
  • Por lo menos 1 GB de RAM
    Para verificar el tamaño de tu RAM
    grep MemTotal /proc/meminfo
  • Espacio swap
    Para verificar el tamaño de tu espacio Swap
    grep SwapTotal /proc/meminfo

RAM Disponible Espacion Swap Requerido
Entre 1 GB y 2 GB 1.5 veces el tamaño de la RAM
Entre 2 GB y 16 GB Igual al Tamaño de la RAM
Mas que 16 GB 16 GB

Requisitos de Hardware
  • 1 GB de espacio en el directorio /tmp
    Para determinar el espacio libre
    df -h /tmp
Tipo de Instalacion Requerimientos de Archivos SW (GB)
Enterprise Edition 3.95
Standard Edition 3.88

Tipo de Instalacion Requerimientos Para Datafiles (GB)
Enterprise Edition 1.7
Standard Edition 1.5

Requisitos de Software
  • Determinar la distribucion y version de Linux instalado. Acuerdate que estamos instalando una version de RHEL 5 con un kernel 2.6.32
    cat /proc/version
  • Kernel Requerido
    Para Asianux Server 3, Oracle Linux 5, y Red Hat Enterprise Linux 5:
    2.6.18 o posterior
    Para verificar que la version requerida del Kernel esta instalada
    uname -r
  • Paquetes Requeridos
    Todos son la version mencionada o posterior.
    binutils-2.17.50.0.6
    compat-libstdc++-33-3.2.3
    elfutils-libelf-0.125
    elfutils-libelf-devel-0.125
    elfutils-libelf-devel-static-0.125
    gcc-4.1.2
    gcc-c++-4.1.2
    glibc-2.5-24
    glibc-common-2.5
    glibc-devel-2.5
    glibc-headers-2.5
    kernel-headers-2.6.18
    ksh-20060214
    libaio-0.3.106
    libaio-devel-0.3.106
    libgcc-4.1.2
    libgomp-4.1.2
    libstdc++-4.1.2
    libstdc++-devel-4.1.2
    make-3.81
    numactl-devel-0.9.8.i386
    sysstat-7.0.2
    Para verificar si tienes el paquete instalado, utiliza el siguiente comando
    rpm -q nombre_paquete

    Ejemplo
    rpm -q binutils

Parametro Valor Minimo Archivo
semmsl
semmns
semopm
semmni
250
32000
100
128
/proc/sys/kernel/sem
shmall 2097152 /proc/sys/kernel/shmall
shmmax Ya sea 4 GB - 1 byte, or la mitad del tamaño de la memoria fisica (en bytes), El que sea Menor.
Default: 536870912

/proc/sys/kernel/shmmax
shmmni 4096 /proc/sys/kernel/shmmni
file-max 6815744 /proc/sys/fs/file-max
ip_local_port_range Minimo: 9000
Maximo: 65500
/proc/sys/net/ipv4/ip_local_port_range
rmem_default 262144 /proc/sys/net/core/rmem_default
rmem_max 4194304 /proc/sys/net/core/rmem_max
wmem_default 262144 /proc/sys/net/core/wmem_default
wmem_max 1048576 /proc/sys/net/core/wmem_max
aio-max-nr Maximo: 1048576 /proc/sys/fs/aio-max-nr

Para ver los valores de los parametros del Kernel, utiliza los comandos mencionados en la siguiente tabla

Parametro Comando
semmsl, semmns, semopm, y semmni # /sbin/sysctl -a | grep sem
shmall, shmmax, y shmmni # /sbin/sysctl -a | grep shm
file-max # /sbin/sysctl -a | grep file-max
ip_local_port_range # /sbin/sysctl -a | grep ip_local_port_range
rmem_default # /sbin/sysctl -a | grep rmem_default
rmem_max # /sbin/sysctl -a | grep rmem_max
wmem_default # /sbin/sysctl -a | grep wmem_default
wmem_max # /sbin/sysctl -a | grep wmem_max

  • Si cualquiera de los valores mencionados es menor a los valores recomendados, crea o edita el archivo /etc/sysctl.conf y añade o edita las lineas mencionadas abajo: 
    fs.aio-max-nr = 1048576
    fs.file-max = 6815744
    kernel.shmall = 2097152
    kernel.shmmax = 536870912
    kernel.shmmni = 4096
    kernel.sem = 250 32000 100 128
    net.ipv4.ip_local_port_range = 9000 65500
    net.core.rmem_default = 262144
    net.core.rmem_max = 4194304
    net.core.wmem_default = 262144
    net.core.wmem_max = 1048586
  • Utiliza el siguiente comando para cambiar los valores actuales que tiene el kernel
    /sbin/sysctl -p
  • El siguiente comando te ayuda para confirmar que los parametros estan correctos
    /sbin/sysctl -a
Crear el usuario Oracle y sus grupos
Tomando en cuenta de que esta es una instalacion nueva vamos a crear los siguientes grupos
  • /usr/sbin/groupadd dba
  •  /usr/sbin/groupadd oinstall
A continuacion vamos a vamos a crear el usuario oracle
  • /usr/sbin/useradd -g oinstall -G dba oracle 
  • Para cambiar el password del usuario, vamos a usar el siguiente comando
    passwd oracle
Recursos Limites Para el Usuario que va a instalar los binarios
Estos son los valores recomendados por Oracle
Recurso Limite del Shel Recurso Limite Soft Limite Hard
Descriptores de Open file
nofile

por lo menos 1024

por lo menos 655
Numero de procesos disponibles a un solo usuario
nproc

por lo menos 2047

por lo menos 16384
Tamaño del segmento stack del proceso
stack

por lo menos 10240 KB

por lo menos 10240 KB, y a lo mas 32768 KB

  • Para verificar los recursos limites del usuarioEntra como el usuario que va a hacer la instalacion, en nuestro caso es el usuario Oracle
  • Verifica los limites soft y hard para los descriptores de archivo. Por ejemplo:
    $ ulimit -Sn
     4096
    $ ulimit -Hn
    65536
  • Verifica los limites soft y hard para los numeros de procesos disponibles al usuario. Por ejemplo:
    $ ulimit -Su
    2047
    $ ulimit -Hu
    16384
  • Verifica los limites soft y hard para los segmentos stack.Por ejemplo:
    $ ulimit -Ss
    10240
    $ ulimit -Hs
    32768
  • Si es necesario, actualiza los recursos limites en el archivo de configuracion /etc/security/limits.conf . Por ejemplo, añade las siguientes lineas al archivo /etc/security/limits.conf file:
    oracle              soft    nproc   2047
    oracle              hard    nproc   16384
    oracle              soft    nofile  1024
    oracle              hard    nofile  65536
    oracle              soft    stack   10240
Crear los Directorios Necesarios
En mi caso, yo rompo un poco de la arquitectura OFA, pero sigue teniendo mucho sentido, creo un mount point y dentro de ese creo todos los directorios necesarios para mi base de datos. En mi caso, uso el directorio de oracle para instalar los binarios.
oracle@localhost /mount
oracle $ ls
arch01     copy01     dba01      dump01     oracle   u01

Configurando la variable de ambiente
Aqui yo tambien me alejo un poco de lo que recomienda Oracle. Lo que hago es utilizar en el .profile del usuario oracle uso lo siguiente:

set -o vi
stty erase "^?"
export PS1="
`echo ${LOGNAME}`@`hostname` \${PWD}
`who am i | awk '{print $1}'` $ "
export EDITOR=vi
PATH=$HOME/bin:
$PATH
export PATH
 De ahi en el directorio $HOME/bin creo una variable de ambiente que refleje ahora si las necesidades de mi instancia, ya que puedo definir una variable distinta si tengo tengo otras versiones de Oracle en mi servidor.

ORACLE_HOME=/mount/oracle/product/11.2.0.2v1
DATA_PUMP_DIR=/mount/copy01/export01/TESTDB/
ORACLE_SID=TESTDB
ORACLE_BASE=/mount/oracle
export ORACLE_HOME ORACLE_SID ORACLE_BASE DATA_PUMP_DIR
ORACLE_CONFIG_HOME=/mount/oracle/product/cfg/TESTDB
export ORACLE_CONFIG_HOME
ADR_HOME=/mount/dump01/oracle/TESTDB/diag/rdbms/testdb/TESTDB
export ADR_HOME
SID_HOME=/mount/dba01/oracle/TESTDB
export SID_HOME
DBA_HOME=/mount/dba01/oracle
export DBA_HOME
TNS_ADMIN=$ORACLE_HOME/network/admin
export TNS_ADMIN
ORACLE_TERM=vt100
export ORACLE_TERM
Conclusion
Aqui no hay mucho que concluir, mas que les vuelvo a decir que esto es solo una guia, para cualquier cambio de los requisitos, consulten la documentacion oficial