sábado, 24 de septiembre de 2011

Instalación de Oracle ASM 11g sobre redhat 5.7 Desktop virtualizado




1 Instalación de VirtualBox 4.1.2 sobre Ubuntu 10.0.4

  1. Se agrega en Synaptic, el repositorio correspondiente:
    deb http://download.virtualbox.org/virtualbox/debian lucid contrib non-free
  2. Del sitio web de VirtualBox se descarga la clave pública oracle_vbox.asc, y se la agrega al sistema:
    sudo apt-key add oracle_vbox.asc
  3. Se procede con la instalación:
    sudo apt-get update
    sudo apt-get install virtualbox-4.1

2 Instalación de RedHat Enterprise 5.7 – Desktop

2.1 Creación de la máquina virtual

Se crea la máquina virtual con opciones por defecto, pero los archivos de VirtualBox se deben ubicar en una unidad con 100GB aproximadamente en el sistema anfitrión; para esto sugiero montar una partición en una ubicación como /datos.
La memoria que se debe asignar a la máquina virtual debe ser de 2.9GB al menos, para soportar la infraestructura Oracle que se va a instalar y la instancia standalone del curso. Se le asigna un procesador y 128MB para vídeo.
Únicamente se debe tener atención de los siguientes puntos para evitar advertencias y mantener un desempeño aceptable.

2.1.1 Creación del disco para el SO

Para el sistema operativo que se va a instalar se crea una unidad de expansión dinámica en el formato nativo de VirtualBox, con un tamaño máximo de 20GB.

2.1.2 Configuraciones adicionales

Una vez creada la máquina, se activa la caché de E/S para el disco de la máquina, y se agrega el usuario del sistema operativo anfitrión al grupo vboxusers mediante el comando:
sudo usermod -a -G vboxusers oracle
Donde oracle es el usuario anfitrión. Finalmente, se debe instalar el paquete de adiciones para el anfitrión:
Oracle_VM_VirtualBox_Extension_Pack-4.1.2-73507.vbox-extpack
El cual puede ser descargado del sitio de VirtualBox, y debe coincidir en versión con la distribución instalada de VirtualBox.
Para la instalación del paquete de extensión se debe primero asociar el binario descargado (Oracle_VM_VirtualBox_Extension_Pack-4.1.2-73507.vbox-extpack) a la instalación de VirtualBox (menú archivo > preferencias > extensiones) y luego usar el menú de la máquina virtual en ejecución, la opción “Install Guest Additions”. Esto monta una imagen en la máquina huesped, que contiene entre otros ejecutables el archivo VboxLinuxAdditions.run, el cual debe ejecutarse como root luego de haber afinado el sistema hasta llegar la sección 3.6 del presente documento.

2.2 Instalación del SO

El sistema operativo se instala con las opciones por defecto para la configuración de red, se deshabilitan las opciones de corta fuegos y de seguridad adicionales, así como se omite cualquier opción de cifrado.
Se omiten también la instalación de paquetes de sonido y de oficina, para conseguir mayor espacio disponible.
La configuración de particiones sobre el disco de 20GB creado incluye 1 partición SWAP de aproximadamente 3848MB , y el resto de espacio para el montaje del sistema de archivos de Linux ( / ).
La contraseña para root será “oracle”, y se creará un usuario oracle con contraseña “oracle”. En general y por tratarse de un curso, la contraseña que se utilizará para todo siempre será “oracle”.
Durante la instalación se deshabilita el corta fuegos del servidor, ya que se requerirá realizar una gran cantidad de operaciones que podrían fallar si el corta fuegos estuviera habilitado.

3 Instalación de Oracle Grid Infrastructure

La Infraestructura de Grilla de Oracle para un servidor standalone, es software de soporte para la base de datos, ASM (sistema de archivos y manejador de volúmenes) y para Oracle Restart.

3.1 Requisitos de memoria

  • Mínimo recomendado para memoria RAM (Infraestructura + Server): 2.5GB
  • Valor recomendado para memoria RAM (Infraestructura + Server): 4GB
  • SWAP para memoria de 2GB a 16GB, en igual tamaño que la memoria RAM.


Comandos importantes:
free – para conocer el estado de la memoria
grep MemTotal /proc/meminfo – para conocer el total de memoria real
grep SwapTotal /proce/meminfo – para conocer el total de memoria SWAP

3.2 Requisitos de espacio en disco

  • Para la infraestructura, 2.3GB libres bajo /
  • Para el proceso de instalación, 1GB en /tmp


Comandos importantes:
df -kh – para conocer el espacio disponible en disco

3.3 Configuración del ambiente

3.3.1 Configuraciones básicas

Se deberán seguir las siguientes acciones:
  • Si no lo estuviera, se debe habilitar el usuario root, lo cual generalmente se podría hacer con el comando.
    $> sudo passwd root
    En sistemas redhat el usuario root se configura durante la instalación del SO.
  • Crear la variable $ORACLE_BASE. Para esto se deben agregar las siguientes instrucciones al final del archivo /etc/bashrc (archivo de comandos invocado por no-login shells):
    ORACLE_BASE=/u01/app/oracle
    export ORACLE_BASE
  • En el archivo ~/.bash_profile se incluyen las siguientes instrucciones:
    ORACLE_HOME=$ORACLE_BASE/product/11.2.0/grid
    ORACLE_SID=+ASM
    PATH=$PATH:$ORACLE_HOME/bin
    export ORACLE_HOME ORACLE_SID PATH
  • Establecer umask1 a 022 para el usuario dueño de la instalación (en este caso oracle), con esto se asegura que el programa de instalación creará archivos con permisos 755 (u:111 – g:101 – o:101; o lo que es lo mismo, 0 : rwx – 2 : rx – 2 : rx ), es decir, con esto se asegura que los archivos que crea el usuario dueño de la instalación son seguros (root tiene umask 022, un usuario en general tiene 002).
    Para saber cuál es el modo del usuario actual se usa2:
    $> umask -S
    Para establecer el modo para el usuario, se considera el orden de llamadas de scripts para login shells, dado que la instalación se realizará con el usuario oracle, por esta razón se modifica el archivo /etc/bashrc.
    $> su
    $> gedit /etc/bashrc
    Se agrega el siguiente código luego de las instrucciones de inicialización de umask originales del script:
    if [$UID = 500]; then
      umask 022
    fi
  • Los recursos disponibles para el usuario oracle se pueden ver con el comando ulimit3:
    $> ulimit -a
    Para poder realizar la instalación de la infraestructura, se requiere que el máximo de descriptores de archivos abiertos sea de al menos 65536. Este valor se debe modificar para el usuario oracle editando el archivo /etc/security/limits.conf:
    $> su
    $> gedit /etc/security/limits.conf
    En el cual se agregan las siguientes líneas:
    oracle soft nofile 4096
    oracle hard nofile 65536
    Lo cual permite que se pueda ejecutar desde el archivo ~/.bash_profile el comando
    ulimit -n 65536
    Estos cambios se aplican con el reinicio del sistema. Una buena referencia de estas configuraciones se puede revisar en http://www.puschitz.com/TuningLinuxForOracle.shtml.

3.3.2 Parámetros del núcleo

  • Los parámetros del núcleo recomendados para una instalación standalone 11g son:
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576
  • Los parámetros del servidor pueden ser revisados ejecutando el comando
    $> /sbin/sysctl -A
  • Para modificar los parámetros que no coincidan con lo recomendado por Oracle, se debe modificar el archivo /etc/sysctl.conf, y una vez hechas las modificaciones se debe ejecutar el comando indicado a continuación (para que los cambios apliquen sin necesidad de reiniciar el servidor):
    $> /sbin/sysctl -p

3.3.3 Usuarios, grupos y variables

  • Para poder instalar la instancia de ASM y la infraestructura, se requiere crear un usuario y grupos con privilegios determinados. Considerando que durante la instalación del SO (sección 2.2) se creó ya un usuario oracle, únicamente se agrega el usuario a los grupos creados (si el usuario no existiera, se usaría el comando ./useradd -g oinstall -G dba oracle):


$> su
$> cd /usr/sbin
$> ./groupadd -g 1000 oinstall
$> ./groupadd -g 1200 dba
$> ./usermod -g oinstall -G dba oracle
$> mkdir -p /u01/app/11.2.0/grid
$> mkdir -p /u01/app/oracle
$> chown -R oracle:oinstall /u01
$> chmod -R 775 /u01


    Los identificadores para usuario y grupos son recomendados, pero por seguridad, se pueden listar los usuarios del sistema revisando el contenido del archivo /etc/passwd4:
$> cat /etc/passwd | grep home
En el caso documentado por el presente documento, el usuario oracle tendrá ya un identificador, que se puede mantener.

3.3.4 Configuración de red

  • El SO necesita una dirección IP fija, y una interfaz de loopback5 (que en sistemas RedHat es configurada por defecto, así como el nombre por defecto del servidor6). Si la dirección del servidor estuviera siendo asignada por DHCP, es conveniente establecerla como fija; para conocer la información general de las interfaces de red del equipo se utiliza el comando:
$> ifconfig


  • Para conocer la dirección del gateway (necesaria para la configuración fija), se utiliza el comando:
$> route -n
Cuya salida incluirá una entrada marcada como UG (up / gateway).


  • Además, de asignar un IP estático al equipo, se debe modificar el archivo /etc/hosts, para registrar dicho IP y asociarlo a un nombre con el cual se registrará el equipo durante la instalación:
    $> su
    $> gedit /etc/hosts
    Agregar en el archivo de hosts:
    IP_CONFIGURADO server11gNNAA


En donde NNAA podrían ser las iniciales de los nombres y apellidos, e IP_CONFIGURADO es el número que se asignó en el paso anterior.
  • Para reiniciar las interfaces de red del servidor, se usan los comandos:
$> su
$> /etc/init.d/network restart
  • Hechos los cambios en la configuración de red, es posible que el servicio sendmail tarde varios minutos en levantarse al no poder ubicar un DNS, lo cual repercute en el tiempo de inicio del sistema operativo. Esto puede ser atendido modificando el nivel de ejecución del servicio sendmail, mediante el comando7:
    $> su
    $> /sbin/chkconfig --level 5 sendmail off

3.3.5 Configuración del driver para las librerías de ASM

  • El software dependerá de la versión del núcleo del SO. Para conocer cuál es la versión del núcleo, se ejecuta el comando:
$> uname -rm
  • Dependiendo del valor mostrado, se descargarán del sitio de Oracle las librerías apropiadas. Por ejemplo, si la ejecución del comando retorna:
$> uname -rm
$> 2.6.18-274.el5 i686
  • Se deberán descargar del sitio de Oracle los ejecutables que correspondan exactamente:
oracleasm-support-2.1.7-1.el5.i386.rpm
oracleasm-2.6.18-274.el5-2.0.5-1.el5.i686.rpm
oracleasmlib-2.0.4-1.el5.i386.rpm
  • Para instalar el software se deben colocar los archivos en un directorio al cual se pueda acceder y se los instala como root. Se utiliza el comando siguiente:
    $> /bin/rpm -Uvh oracleasm-support-2.1.7-1.el5.x86_64.rpm \ oracleasm-2.6.18-274.el5-2.0.5-1.el5.x86_64.rpm \ oracleasmlib-2.0.4-1.el5.x86_64.rpm
  • Para inicializar ASM se requiere conocer el ID del usuario dueño de la instalación y el grupo al cual pertenecerá la interfaz de ASM que se está instalando (el driver):
    $> id oracle
  • Para realizar la configuración se debe ejecutar:
    $> /etc/init.d/oracleasm configure
Los valores que se utilizarán son:
UID: el ID del usuario oracle
GID: el ID del grupo dba creado en el numeral 3.3.3
Iniciar el driver al iniciar el SO:
Escanear por discos ASM al arrancar el SO:

3.4 Oracle ASM – definiciones

Software de la base de datos Oracle (Oracle Installation Software): El software de una instalación de servidor de bases de datos Oracle.
  • Oracle Configuration Asistant (OCA): Programa de creación y configuración de bases de datos.
  • Oracle Restart: Software que permite el reinicio automático de la instancia de base de datos, Oracle Net Listener, Servicios de la base de datos, y OASM.
  • Oracle Automatic Storage Management (OASM): Software especializado, manejador de volúmenes y sistema de archivos que soporta instalaciones de una sola instancia e instalaciones tipo clúster.
  • Oracle Automatic Storage Management Cluster File System (OACFS): Permite trabajar a ASM en ambientes tipo cluster tanto como en ambientes de una sola instancia.
  • Oracle Automatic Dymanic Volumen Manager (OADVM): Manejador de volúmenes que utiliza OASM.
  • Oracle ASM Configuration Asistant (OASMCA): En versiones 10g, la configuración de ASM estaba delegada al OCA. En versiones 11g existe este programa para dicho fin. OASMCA es parte de Oracle Grid Infraestructure.
  • Oracle Grid Infraestructure: Software de Oracle que provee soporte a nivel de sistema para OASM. OACFS, Oracle Restart y para el software de la base de datos en sí mismo.


3.5 Consideraciones para la instalación de OASM

  • ¿Se va a utilizar ASM para DB files? ¿Para recovery files? ¿Para ambos? Esta alternativa se puede decidir durante la creación y configuración de una base de datos cuando se realiza esto en modo AVANZADO.
  • ¿Qué nivel de redundancia se va a utilizar? ASM provee 3 niveles:
  • Redundancia externa: Oracle ASM no refleja los contenidos de sus grupos de discos. Se recomienda esta opción cuando el SO provee redundancia por RAID.
  • Redundancia normal: A este nivel ASM provee por defecto espejamiento de dos vías para archivos de datos (data files) y de tres vías para archivos de control (control files), aunque esto puede ajustarse a un menor nivel si fuese lo requerido. Para usar redundancia normal, se requieren al menos dos grupos de discos de fallo (dos dispositivos de disco). El espacio efectivo disponible en disco en un esquema de este tipo, es igual a la mitad de la suma del espacio disponible en ambos discos.
  • Alta Redundancia: Se requieren al menos tres grupos de discos de fallo (tres dispositivos) y el espejamiento se realiza en tres vías para data files y en cuatro vías para control files.
  • ¿Cómo configurar los grupos de discos (failure groups)? Conceptos relevantes relacionados con alta disponibilidad de discos pueden encontrarse en:
  • Considerando lo anterior, y si existieran discos candidatos para la instalación de ASM, se debe cuidar que:
  • El dueño de la instalación de ASM debe ser también dueño de los dispositivos (de los discos, como /dev/sdb1 por ejemplo).
  • Aunque es posible instalar ASM sobre particiones hechas sobre un disco, lo recomendado por Oracle es usa discos para conformar los grupos de discos de ASM.
  • Todos los dispositivos de un mismo grupo deben tener la misma capacidad y el mismo desempeño.
  • ¿Se puede usar LVM con ASM? Oracle recomienda no hacer esto, pues ASM es en sí un manejador de volúmenes.


3.6 Configuración previa a la instalación de OASM

Si se han revisado y cumplido los pasos descritos en las secciones 3.1 a 3.5, se puede proceder a instalar OASM.
  • Atendiendo lo recomendado, se agregan a la máquina virtual 2 discos de tamaño fijo sobre el controlador SATA existente. Cada disco tiene 8GB de espacio. El SO reconoce los nuevos discos al ser iniciado.
  • Para verificar el estado de los discos, se ejecuta el comando /sbin/fdisk -l como root. Los discos no inicializados aparecerán sin una tabla de particiones válida, nombrados como /dev/sdb, dev/sdc, etc.
  • Para cada disco disponible (/dev/sdb, /dev/sdc, etc), se utiliza el siguiente comando para su inicialización:
    $> /sbin/fdisk /dev/sdb
    Las opciones del diálogo de consola que se utilizan son:
    n (nuevo)
    p (primary partition)
    default (primer cilindro)
    default (último cilindro)
    w (fin de comando)
    Hecho esto se habrán creado particiones primarias no formateadas en cada disco. Por ejemplo, para el disco /dev/sdb se creará la partición /dev/sdb1.
  • Para crear los discos para ASM se ejecutan los comandos:
    /etc/init.d/oracleasm createdisk vol1 /dev/sdb1
    /etc/init.d/oracleasm createdisk vol2 /dev/sdc1
    etc... si se quisieran configurar más discos, en este caso se inicializan y configuran 4 discos.
    El resultado de la ejecución del comando es:
    [root@localhost dev]# /etc/init.d/oracleasm createdisk vol1 /dev/sdb1
    Marking disk "vol1" as an ASM disk: [ OK ]
    [root@localhost dev]# /etc/init.d/oracleasm createdisk vol2 /dev/sdc1
    Marking disk "vol2" as an ASM disk: [ OK ]
    [root@localhost dev]# /etc/init.d/oracleasm createdisk vol3 /dev/sdd1
    Marking disk "vol3" as an ASM disk: [ OK ]
    [root@localhost dev]# /etc/init.d/oracleasm createdisk vol4 /dev/sde1
    Marking disk "vol4" as an ASM disk: [ OK ]
  • El siguiente paso es crear los directorios para la base de datos y para la infraestructura grid. Debe recordarse que se creó anteriormente una variable que concuerda justamente con el directorio para la base de datos ($ORACLE_BASE) y una variable que coincide con la ubicación del software instalado de la infraestructura ($ORACLE_HOME).
    $> su
    $> mkdir -p /u01/app/oracle
    $> mkdir -p /u01/app/oracle/product/11.2.0/grid
    $> chown -R oracle:oinstall /u01
    $> chmod -R 775 /u01
  • El software de instalación se lo debe copiar en el disco duro, lo cual puede hacerse con el usuario oracle, dado que ya se realizó el cambio recursivo de dueño y de permisos sobre /u01:
    $> mkdir -p /u01/app/oracle/stage/grid
    $> mkdir -p /u01/app/oracle/stage/database
    En el directorio grid se copia el software de instalación de la infraestructura, y en el directorio database el software de instalación de la base de datos. Para descomprimir un archivo zip se pude usar el comando unzip.
  • Antes de proseguir con la instalación y considerando que se está utilizando una versión de 32 bits de RedHat Enterprise (uname -a), se debe verificar que los siguientes paquetes estén instalados en el SO:
kernel-headers-2.6.18-274.el5.i386.rpm
kernel-devel-2.6.18-274.el5.i686.rpm
glibc-2.5-65.i386.rpm (para la configuración de este manual debería estar ya instalado)
glibc-headers-2.5-65.i386.rpm
glibc-devel-2.5-65.i386.rpm
gcc-4.1.2-51.el5.i386.rpm
elfutils-libelf-devel-0.137-3.el5.i386.rpm elfutils-libelf-devel-static-0.137-3.el5.i386.rpm *
libstdc++-4.1.2-51.el5.i386.rpm
libstdc++-devel-4.1.2-51.el5.i386.rpm
gcc-c++-4.1.2-51.el5.i386.rpm
libaio-0.3.106-5.i386.rpm (para la configuración de este manual debería estar ya instalado)
libaio-devel-0.3.106-5.i386.rpm
sysstat-7.0.2-11.el5.i386.rpm
unixODBC-2.2.11-7.1.i386.rpm
unixODBC-devel-2.2.11-7.1.i386.rpm
ksh-20060214-1.1.i386.rpm


Muchos de los paquetes no están disponibles en los repositorios de redhat, por lo que deben ser descargados de otros repositorios para la versión Centos OS 5. Son de gran ayuda los siguientes sitios:
(*) Los paquetes elfutils-libelf-devel-0.137-3.el5.i386.rpm y elfutils-libelf-devel-static-0.137-3.el5.i386.rpm son interdependientes, por lo que deben ser instalados en un solo comando:
$> su
$> rpm -Uvh elfutils-libelf-devel-0.137-3.el5.i386.rpm elfutils-libelf-devel-static-0.137-3.el5.i386.rpm

3.7 Ejecución del instalador de la infraestructura

  • Habiendo cumplido lo indicado en los pasos anteriores, se procede a ejecutar el instalador de la infraestructura:
    $> cd /u01/app/oracle/stage/grid
    $> ./runInstaller
  • El asistente guía la instalación a lo largo de 11 pasos, como se muestra en las capturas siguientes:
























  • Se selecciona la instalación de un servidor standalone:










  • Se seleccionan los idiomas para la instalación:










  • Se crea un grupo de discos para datos, por ello se conserva el nombre por defecto DATA. El nivel de redundancia se establece en normal (sección 3.5) y se seleccionan dos discos candidatos puesto que lo recomendado por Oracle para un nivel de redundancia normal es usar al menos dos discos.
  • Si el asistente no encuentra discos candidatos a pesar de haberlos creado y configurado con las librerías del driver de oracle para ASM, se puede cambiar la ruta de acceso de detección hacia el directorio /dev/oracleasm/disks, en donde por defecto ASM incluye los dispositivos configurados.








  • Se utiliza una misma contraseña para las cuentas de administración de ASM: Oracle11










  • Los grupos de usuarios ASM (internos de la instancia) requieren vincularse con un grupo del sistema operativo para autenticarse. Se utiliza el grupo dba creado anteriormente. Si se presenta un mensaje de advertencia se acepta y se prosigue.








  • Dadas las consideraciones de OFA (Oracle Flexible Architecture), se utilizan las ubicaciones para instalación que el asistente plantea por defecto, las cuales concuerdan con las variables de entorno configuradas en la sección 3.3.1. La ubicación por defecto indicada para el inventario de instalación también se puede mantener.








  • El resumen de la instalación que se va a realizar agrega un dato de suma importancia: el espacio en disco. En este punto se puede tomar cualquier correctivo si hiciera falta más espacio en disco o si la cuota del usuario dueño de la instalación no contempla suficiente espacio.
    Tras accionar el botón Terminar se inicia el proceso, mismo que puede durar entre 20 y 30 minutos dependiendo de los recursos del equipo anfitrión. Durante la última etapa del proceso, se solicitará la ejecución de dos scripts.








  • Los scripts pueden ejecutarse con los comandos:
$> su
$> /u01/app/oraInventory/orainstRoot.sh
$> /u01/app/oracle/product/11.2.0/grid/root.sh
El segundo script solicitará que se ingrese la ruta hacia /usr/local/bin.
Tras la ejecución de los scripts se realizan los últimos pasos de la instalación de forma automática.




































  • Una vez finalizada la instalación se presenta la pantalla de confirmación.






4





























1umask: función o comando POSIX que permite establecer la “máscara para el modo de creación de archivos” (file mode creation mask) del proceso actual. POSIX: Portable operative system interface for Unix, conjunto de estándares de la IEEE que definen una API para shells y utilitarios para sistemas basados en UNIX.
2http://www.dba-oracle.com/linux/umask_command_tips.htm
3ulimit y umask son comandos preestablecidos del shell, por esta razón no se usa su ubicación para ejecutarlos.
4Explicación útil en: http://www.cyberciti.biz/faq/understanding-etcpasswd-file-format/
5Interfaz de red interna del servidor 127.0.0.1 (localhost)
6Para conocer el nombre del servidor se puede usar el comando hostname
7El nivel de ejecución de un servicio determina su modo de funcionamiento, el nivel 5 corresponde a la ejecución normal en entorno gráfico. Más información se puede encontrar en este enlace.
Dustin Ghia R.