El presente white paper tiene por finalidad servir de ayuda a usuarios que estén bajo el escenario de una instalación del Oracle sobre el Red Hat Enterprise Linux (RHEL) 5.1. Tengo entendido que el Centos es como el RHEL pero gratuito, aún no le probado pero, de ser cierto, sería una alternativa para quienes no consigan el distro usado en este paper, consideración aparte es el hecho que la mayoría (sino todo) de las operaciones empleadas aquí son comunes en el resto de distros Linux.
Este paper documentará todos los pasos seguidos hasta tener instalado y corriendo el Oracle, no hago referencia a una versión específica pues haré instalaciones para las versiones 10g y 11g.
Equipo de trabajo
- 1 CPU (Core 2 Duo : 2,33 GHz : 2 GB RAM : 160 GB HD : )
- 1 switch/router
- SO anfitrión: Windows Vista Ultimate (32-bits)
- VMware Workstation 6.0.2 (32-bits)
- DVD de instalación del RHEL 5.1 (32 bits)
- DVD de instalación del Oracle (32 bits): 10g u 11g
- Libros de consulta (Linux y Oracle)
- Finalmente, mucha paciencia y tenacidad
Consideraciones Iniciales
- Habrás notado que indico 32-bits para la paquetería de software, esto importante pues si tratas de emplear una versión para 64-bits muy posiblemente haya que seguir paso algún no estipulado en este paper. Mi razón de usar 32-bits es porque la mayoría de paquetería existente en el mercado son para 32-bits, tanto para Windows como para Linux.
- Dado que con el VMware puede hacer configuraciones virtuales de hardware a tu antojo, si gustas puedes probar con un SO de 64-bits, pero tu CPU físico debe soportar ese de tipo de procesos, y además debe tenerlo habilitado, sería bueno que des una revisada al CMOS de tu CPU, en mi caso tuve que hacerlo de ese modo para probar una versión para 64-bits.
- No explicaré acerca de la instalación y operación del VMware pues es realmente sencillo. La máquina virtual que emplearé tiene las siguientes características:
- 1 GB de RAM
- 1 disco SCSI de 2 GB
- 1 disco SCSI de 9 GB
- Conexión de red: bridged networking
- El resto de opciones quedan por defecto
- Por nuestra configuración de red en la máquina virtual, es necesario un switch/router, caso contrario tendríamos problemas de conectividad entre nuestro equipo anfitrión y la máquina virtual, para un entorno de trabajo Cliente/Servidor esto es muy útil.
¡Advertencia! |
A todo aquel que prosiga con la lectura desde este punto, se recomienda altamente que concluya con la misma por completo antes de proceder con algún accionar, o en su defecto desista de continuar con ella. El autor no se responsabiliza de ningún suceso ocasionado por la omisión de esta recomendación. |
Instalando RHEL
Antes de intentar el RHEL, probé con el distro del Ubuntu 7.10, para vuestro conocimiento el Ubuntu se presenta en tres ediciones: Desktop, Server, y DVD. Las dos primeras tienen un tamaño promedio de 650MB, mientras que la tercera tiene un tamaño de 4.5GB. Como mi finalidad es recrear un ambiente donde se instale el Oracle sobre un servidor, el cual por lo general posee únicamente lo básico sin entorno gráfico ni compiladores, elegí el Ubuntu Server. La tarea de por sí resultó realmente infructuosa y frustrante. El Oracle posee dos modos de instalación: gráfica y consola. El modo consola resulta algo más laborioso de efectuar, mientras que la gráfica es intuitiva y sencilla. Deseando emplear su asistente gráfico había que instalar un gestor de ventanas a nuestro servidor, para ello se tuvo que instalar los componentes necesarios que den soporte al gestor de ventanas, que en nuestro caso iba a ser el Fluxbox. Siguiendo la orientación de terceros para instalar lo básico y necesario para correr un gestor de ventanas, me di con la ingrata sorpresa que algunos de los componenetes requeridos no existen en las fuentes del Ubuntu, principalmente los que tienen el sufijo -dev. Luego de probar casi toda posible solución (no tener Internet en casa dificulta las cosas), icé la bandera blanca. Por mera curiosidad probé la edición en DVD del Ubuntu, al elegir la opción Install a server casi en la finalización del proceso de su instalación te muestra las opciones de servicios a instalar típicas que también aparecen en la edición Server, pero con una opción adicional, Install a Desktop, pensando (ingenuamente) que instalará sólo el gestor de ventanas lo marqué, para mi decepción todo resultó en una instalación tipo edición Desktop más servicios de servidor, peor fue el intento de desinstalar paquetes no útiles (ofimática, multimedia, etc.), pues el Ubuntu no me permitía hacerlo, cansado de esta situación, desestimé continuar con el Ubuntu, por lo que elevé mi mirada al Red Hat, un viejo conocido.
No entraré en detalles acerca de las instalación del RHEL, pues no es complicado, presenta cierta similitud con un MS-Windows. Una característica de un distro Linux es que puede asignarse a un directorio en particular una partición para su uso exclusivo. Teniendo esto en cuenta, presentamos la estructura empleada en nuestro RHEL:
Device | Mount Point / RAID / Volume | Type | Size (MB) | Start | End |
|---|---|---|---|---|---|
| LVM Volume Groups | |||||
| - VolGroup00 | 11104 | ||||
| ---- LogVol00 | / | ext3 | 9184 | ||
| ---- LogVol01 | swap | 1024 | |||
| ---- LogVol02 | /tmp | ext3 | 96 | ||
| ---- LogVol03 | /var | ext3 | 384 | ||
| ---- LogVol04 | /home | ext3 | 416 | ||
| Hard Drives | |||||
| - /dev/sda | |||||
| ---- /dev/sda1 | /boot | ext3 | 101 | 1 | 13 |
| ---- /dev/sda2 | VolGroup00 | LVM PV | 1945 | 14 | 261 |
| - /dev/sdb | |||||
| ---- /dev/sdb1 | VolGroup00 | LVM PV | 9209 | 1 | 1174 |
La determinación de cuáles directorios colocar como puntos de montaje asi como el tamaño de partición asignado a los mismos, corresponde a un análisis sobre la finalidad del servidor y los servicios que prestará, pero el mínimo recomendable es establecer dos particiones (swap y la raíz). Algunas notas acerca de las particiones para una distro Linux lo pueden hallar en "Operating Systems - Red Hat Linux Administration - A beginner's guide" (pág. 35), y en "Ubuntu Linux Bible" (Wiley, pág. 80), por supuesto también hay fuentes de información en la Web.
Culminado el proceso de instalación, nuestro RHEL estará listo para emplearse en la instalación del Oracle, pero antes algunos pasos previos:
- Inicia sesión con el usuario para tareas no administrativas creado en el post-instalación
- Abre una terminal de comandos y conmuta temporalmente al usuario root
$ su - - Hagamos del usuario no administrativo un sudoer (paso opcional)
# nano /etc/sudoers
Editando el archivo sudoers, insertamos la siguiente línea:
bill ALL=(ALL) ALL
suponiendo que nuestro usuario no administrativo es bill. Salvamos las modificaciones y salimos del archivo. - Retornarmos a nuestro usuario inicial
# exit - Bloqueamos la contraseña del usuario root
$ sudo passwd -l root
la contraseña que te solicitará el sistema es la de tu usuario en curso. - Edita erl archivo inittab
$ sudo nano /etc/inittab
modifica la línea
id:5:initdefault:
a esto:
id:3:initdefault: - Salva el archivo y retorna a la línea de comandos
- Reinicia tu sistema
Los pasos 6 y 7 hacen que el sistema inicie en modo consola multiusuario, para arrancar el gestor de ventanas emplearíamos el comando
startx
la finalidad de ello es no consumir innecesariamente recursos del sistema que vayan en detrimento de su performance. Ahora sí estamos listos para realizar una instalación del Oracle.
Tareas de Pre-instalación para el Oracle Database
En esta parte debemos definir el método de instalación que deseamos realizar, Oracle ofrece dos métodos:
- Método de instalación interactivo
- Método de instalación automatizado usando arhivos de respuesta
startx
Si alguna vez te ocurriera que al intentar arrancar el sistema X queda siempre en una pantalla negra con el cursor en forma de X, intenta ejecutar la siguiente orden desde tu consola en tu directorio hogar o de inicio:
# rm .Xauthority*
Oracle recomienda realizar tareas siendo root y empleando el BASH como shell, el intérprete de comando por defecto del RHEL es el bash, asi que nos queda sólo iniciar una sesión como root. Esto lo puedes lograr de cuatro formas:
- Reiniciando el sistema e iniciando una sesión como root,
- Con el usuario actual ejecutas el comando logout e inicias sesión con root,
- Para conmutar temporalmente al usuario ejecutas la orden: su -
- Si eres un sudoer, ejecutas la orden: sudo sh
Todas las formas anteriores son útiles a nuestros propósitos, excepto la última, aún estando como usuario root, tiene ciertas limitantes para ejecutar algunas tareas no relacionadas al Oracle directamente, por ello omitiremos esa última forma.
Dentro de los requerimientos básicos de Oracle para el SO anfitrión es que éste posea 1GB de RAM, y para el caso de un distro Linux debe existir una correspondencia entre memoria y el tamaño de la partición Swap. Para obtener información de la cantidad de memoria RAM que poseemos y del tamaño de nuestra partición Swap, ejecutamos las siguientes órdenes:
# grep MemTotal /proc/meminfo
# grep SwapTotal /proc/meminfo
o simplemente ejecuta,
# free
para obtener información sumaria de estos componentes.
En nuestro caso, contamos con 1 GB de RAM pero el tamaño de nuestra partición Swap está por debajo del recomendado por Oracle, el cual debiera ser 1.5 GB. Entonces, ¿qué hacer?. Podemos hacer una reinstalación del RHEL reconfigurando nuestras particiones, o podemos optar por agregar más espacio. Esta última será nuestra opción a realizar. A nuestro sistema de discos le añadiremos otro de un tamaño de 2 GB, del cual dispondremos 1 GB para adicionar a nuestra Swap, y el resto lo dejaremos libre hasta cuando lo necesitemos por algúna razón.
Existen distintas maneras de realizar este incremento de la Swap, cada solución depende del tipo de gestión de almacenamiento que estemos empleando para nuestro sistema de archivos, como ser RAID o LVM. En nuestro caso, usamos el LVM, asi que la herramienta a emplear es fdisk y lvm y el conjunto de comando realacionados con ella. Si fuere el caso de RAID, la herramienta podría ser fdisk y/o parted. (consúltese "Red Hat Linux Administration: A Beginner's Guide" de Michael Turner y Steve Shah; consúltese también "How to create Linux LVM in 3 minutes")
Desde una terminal ejecutamos la siguiente orden para usar el tercer disco duro por completo para la partición LVM: # fdisk /dev/sdc donde sdc representa nuestro tercer disco duro SCSI añadido. Esto nos condufirá a un shell personalizado para ejecución de comandos del fdisk. Siga los siguientes pasos:
- presione n para crear una nueva partición de disco,
- presione p para crear una partición primaria de disco,
- presione 1 para denotarlo como la 1ª partición de disco,
- presione ENTER dos veces para aceptar los valores por defecto del primer y último cilindro - para convertir el disco duro entero a una única partición de disco,
- presione t (automáticamente seleccionará la única partición - partición 1) para cambiar el tipo de partición Linux por defecto (0x83) al tipo de partición LVM (0x8e),
- presione L para listar todos los tipos de partición actualmente soportados,
- escriba 8e (según el listado de L) para cambiar la partición del tipo 83 a 8e, es decir, al tipo de partición Linux LVM,
- presione p para mostrar la configuración de particiones del disco duro seleccionado. Por favor nótese que la primera partición es denotada como /dev/sdc1 en Linux,
- presione w para escribir la tabla de partición y salir del shell del fdisk
A continuación, este comando LVM creará un volúmen físico (PV) LVM sobre una partición o disco duro regular: # pvcreate /dev/sdc1
Ahora añadiremos este volumen físico al único grupo de volumen existente: # vgextend VolGroup00 /dev/sdc1
Teniendo nuestro grupo de volumen espacio adicional libre, procedemos a incrementar en 1 GB el volumen lógico representativo de nuestra partición Swap (véase "LVM Administrator's Guide: Configuration and Administration", Red Hat Inc., pág. 34. Véase también "Red Hat Enterprise Linux Administration Unleashed", Tammy Fox, pág. 177): # lvextend -L+1G /dev/VolGroup00/LogVol01
Después de expandir el volúmen lógico a 2 GB, el sistema de archivos sobre él también debe ser expandido. Para tener una visión más clara de lo estamos por hacer, ejecuta los dos siguientes comandos: # lvdisplay /dev/VolGroup00/LogVol01 # grep SwapTotal /proc/meminfo observarás que los tamaños no están sincronizados, para que los cambios se reflejen ejecutamos las siguientes órdenes: # swapoff -a # mkswap /dev/VolGroup00/LogVol01 # swapon -a
Otro de los requisitos pedidos por Oracle es que el directorio /tmp tenga al menos 400 MB libres, aunque en otros textos hasta sugieren que tenga 600 MB, nosotros estableceremos el tamaño a 512 MB. Ya que estamos diestros en LVM, la tarea resultará sencilla, pues ya disponemos de espacio libre (~ 1 GB). Simplemente ejecutamos las siguientes ordenes: # lvextend -L512M /dev/VolGroup00/LogVol02 # resize2fs /dev/VolGroup00/LogVol02
Otra de las consideraciones que te advierte Oracle es la siguiente: "A partir de Oracle Database 11g, la característica de Gestión Automática de Memoria requiere más memoria compartida (/dev/shm) y descriptores de archivo. La memoria compartida debería dimensionarse para ser al menos el mayor de MEMORY_MAX_TARGET o MEMORY_TARGET por cada instancia Oracle en el computador. Si MEMORY_MAX_TARGET o MEMORY_TARGET es puesto a un valor no cero, y la memoria compartida no es dimensionada correctamente, advertirás un error ORA-00845 al inicio. El número de descriptores de archivo por cada instancia Oracle debería ser al menos 512*PROCESOS . También, el límite de descriptores por cada proceso debería ser al menos 512. Si los descriptores de archivo no son dimensionados correctamente, advertirás ORA-27123 desde varios procesos y potenciales errores Linux Error EMFILE (demasiados archivos abiertos) en procesos no-Oracle".
Resumiendo lo anterior, simplemente tener en cuenta el tamaño actual de nuestra memoria virtual de nuestro sistema para configurar dos parámetros indicados arriba correspondientes a la Gestión Automática de Memoria, además de tener un buen número de manejo de archivos soportados por el kernel. Para conocer el tamaño de nuestra memoria virtual ejecutamos la orden: # df -h /dev/shm
Otro aspecto importante es el espacio libre suficiente para una instalación Oracle. Para ver el espacio libre ejecutamos la orden: # df -h que para mi caso mostrará la siguiente tabla:
Filesystem | Size | Used | Available | Used (%) | Mounted on |
|---|---|---|---|---|---|
| /dev/mapper/VolGroup00-LogVol00 | 8.7G | 2.6G | 5.7G | 32% | / |
| /dev/mapper/VolGroup00-LogVol03 | 372M | 64M | 290M | 18% | /var |
| /dev/mapper/VolGroup00-LogVol04 | 403M | 11M | 372M | 3% | /home |
| /dev/mapper/VolGroup00-LogVol02 | 496M | 6.3M | 464M | 2% | /tmp |
| /dev/sda1 | 99M | 13M | 81M | 14% | /boot |
| tmpfs | 471M | 0 | 471M | 0% | /dev/shm |
A partir de aquí toda indicación que se realice respecto a la instalación de Oracle hará referencia implícita a Oracle Database 11g Release 1, y supondrá que esta será nuestra primera instalación del software Oracle.
Oracle recomienda tener al menos 3.5 GB (para 32-bit y 5 GB para 64-bit) de libre espacio, lo cual no implica que una instalación Oracle siempre tendrá ese tamaño, ya que puede ser menor y eso depende del tipo de instalación que hagamos. Considera tener mayor espacio para el área de Flash Recovery si vas a habilitar copias de seguridad automática.
Como parte de los requerimientos de software, demanda una versión de kernel específica para la versión de distro Linux optada, en nuestro caso debe ser 2.6.18 para RHEL 5. La versión del kernel la obtienes con la orden: # uname -r
Para RHEL 5 se requiere que estén instalados los siguientes paquetes (o versiones posteriores):
binutils-2.17.50.0.6 compat-libstdc++-33-3.2.3 compat-libstdc++-33-3.2.3 (32 bit) elfutils-libelf-0.125 elfutils-libelf-devel-0.125 gcc-4.1.1 gcc-c++-4.1.1 glibc-2.5-12 glibc-2.5-12 (32 bit) glibc-common-2.5 glibc-devel-2.5 glibc-devel-2.5-12 (32 bit) libaio-0.3.106 libaio-0.3.106 (32 bit) libaio-devel-0.3.106 libgcc-4.1.1 libgcc-4.1.1 (32 bit) libstdc++-4.1.1 libstdc++-4.1.1 (32 bit) libstdc++-devel 4.1.1 make-3.81 sysstat-7.0.0 unixODBC-2.2.11 unixODBC-devel-2.2.11
Para determinar si estos paquetes existen, entra comandos similares al siguente: # rpm -q nombre_de_paquete
Si algún paquete estuviese ausente, puedes emplear como medio primario de fuente de consulta tu DVD de instalación del RHEL, para determinar si está el paquete faltante. Para ello emplea un comando similar al siguiente: # find ini_dir -name file_name donde: ini_dir es la ruta del directorio desde donde iniciará la búsqueda; y, file_name el nombre del archivo buscado, el cual puede contener expresiones regulares o comodines.
Luego que hayas determinado la ruta o fuente donde se encuentra tu paquete RPM a instalar, ejecutas un comando similar al siguiente: # rpm -ivh package_name donde package_name es el nombre del paquete (incluido ruta) a instalar.
Lo que sigue son los grupos y usuarios necesarios en el sistema operativo para una instalación Oracle, sigue los siguientes comandos:
# groupadd oinstall # groupadd dba # groupadd oper # useradd -g oinstall -G dba,oper oracle # passwd oracle # id nobody
Luego de ejecutar el último comando, si no aparece información relativa a este usuario entonces ejecuta el siguiente comando: # useradd -g nobody
Algunos parámetros del kernel deben contener valores mínimos recomendados por Oracle, para información de estos valores mínimos y de cómo visualizarlos y modificarlos, consúltese "Oracle Database Installation Guide 11g Release 1 for Linux" de Oracle Inc., numerales 2-21 y 2-22.
De entre todos los parámetros del kernel indicados por Oracle para su consideración, tal vez el más enigmático puede ser el file-max, el cual no tiene un valor mínimo referencial como el resto de parámetros. file-max lista el número máximo de manejos de archivos que el kernel almacena, es decir, da el número máximo de archivos abiertos que el kernel está dispuesto a manejar. Aunque el concepto clarifica acerca de la función de este parámetro, no hay valores referenciales fijos, salvo que debe ser un múltiplo de 512 según la fórmula de Oracle. Asi que ¿qué ocurriría si colocásemos un valor de 512 al parámetro?, o al contrario, ¿qué ocurriría si colocásemos un valor inimaginablemente grande?, ¿dicho valor representa espacio a reservar en el disco o en la RAM? ¿está en unidades de bit, B, KB, o MB?. No teniendo respuestas claras, decidimos tomar un valor sugerido por algún texto de consulta, y hallamos dos valores, y que según la fórmula de Oracle serían 128 y 256 procesos. Tomaremos el primer valor, y si trabajando con el Oracle recibiésemos un error de tipo ORA-27123, o recibiésemos del Linux errores del tipo Linux Error EMFILE, significará que debemos incrementar el valor de este parámetro.
Referencias bibliográficas:
- "Red Hat Enterprise Linux 5.0.0: Red Hat Enterprise Linux Deployment Guide", Red Hat Inc., pág. 37
- "Red Hat - Linux Complete Command Reference", J. Purcell, pág. 1179
- "Oracle Real Application Clusters: Installation and Configuration Guide 10g Release 1 (10.1) for AIX-based systems, Apple Mac OS X, hp HP-UX, hp Tru64 UNIX, Linux, Solaris Operating System, and Windows Platforms", Oracle Inc., pág. 5-19
- "Oracle Application Server 10g Administration Handbook", John Garmany Jr. & Donald K. Burleson, pág. 88
De acuerdo a la tabla de valores mínimos recomendados debemos hacer varios ajustes a nuestra configuración de kernel. Podemos hacer esto con un comando similar al siguiente: # echo value|value_list > /proc/sys/kernel/parameter_name empero Oracle recomienda hacerlo a través del archivo /etc/sysctl.conf. Los parámetros que modificaremos o agregaremos en nuestro caso aparecen en la siguiente lista con sus respectivos valores:
kernel.sem = 250 32000 100 128 kernel.shmall = 2097152 kernel.shmmax = 2147483648 kernel.shmmni = 4096 fs.file-max = 65536 net.ipv4.ip_local_port_range = 1024 65000 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 262144
Luego de guardar los cambios en el archivo, reiniciamos el sistema operativo para que tomen efecto.
En reciente conversación con mi capacitador en Oracle, me indica que el valor del número de procesos para determinar el valor a asignar al parámetro file-max se determina por estimación del número de conexiones que atenderá nuestra base de datos y tiene relación directa con la disponibilidad de RAM en nuestro equipo servidor. Teniendo esto en cuenta podríamos decir que, para un entorno de desarrollo el valor de 128 para procesos sería aceptable, pero para un entorno de pruebas, es muy grande, tal vez debiéramos asignar un valor mínimo como 5, pero, debemos tener en cuenta también que el valor indicado en este parámetro de kernel no se limita sólo al uso del Oracle, sino también a otros procesos propios del sistema operativo y demás programas que tengamos en ejecución, por tanto determinar el valor a colocar en este parámetro no se presenta aún del todo claro, asi que mejor lo dejamos con el valor elegido.
Agrega las siguientes líneas al archivo /etc/security/limits.conf para incrementar los límites del shell para el usuario oracle:
| oracle | soft | nproc | 2047 |
| oracle | hard | nproc | 16384 |
| oracle | soft | nofile | 1024 |
| oracle | hard | nofile | 65536 |
El archivo limits.conf posibilita el establecimiento de límites a usuarios o grupos del sistema operativo en cuanto a operaciones o recursos, y es editable únicamente por el usuario root. Las líneas agregadas establecen rangos de permisibilidad al usuario oracle para el número máximo de archivos abiertos (nofile), y para el número máximo de procesos (nproc).
Agrega o edita la siguiente línea en el archivo /etc/pam.d/login:
| session | required | pam_limits.so |
Lo que hace la línea anterior es invocar el módulo pam_limits.so para establecer límites de usuario especificados en el archivo de configuración /etc/security/limits.conf. Para referencia sobre PAMs (Pluggable Authentication Modules) y los Procesos de Autenticación en Linux consúltese "Ubuntu Linux Bible" de William von Hagen, página 626.
Seguidamente debemos hacer cambios en el archivo de arranque de nuestro shell por defecto. Para determinar el shell de inicio ejecutamos el siguiente comando: #echo $SHELL en nuestro caso, el valor devuelto indica que usamos el BASH, de modo que ahora nuestro objetivo es modificar el archivo /etc/profile con las siguientes líneas:
if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi
El código anterior ejecuta el comando ulimit (comando interno propio del BASH) cuando el usuario oracle inicie una sesión en el BASH. El comando en referencia provee control sobre los recursos disponibles al shell y a los procesos iniciados por el, en sistemas que permitan tal control. De este modo establece un máximo número de descriptores de archivos abiertos (-n) y un máximo número de procesos disponibles para el usuario en cuestión.
Lo que sigue es crear los directorios necesarios para la instalación del Oracle. Empezaremos por crear el directorio base para todas las instalaciones de software Oracle, sigue los siguientes comandos: # mkdir -p /u01/app/oracle # chown -R oracle:oinstall /u01/app/oracle # chmod -R 775 /u01/app/oracle
Ahora es el turno para el directorio hogar que almacenará el software para un producto Oracle en particular: # mkdir -p /u01/app/oracle/product/11.1/db_1
Luego creamos el directorio de inventario que almacenará un inventario de todos los software Oracle en un servidor. Procedemos con: # mkdir -p /u01/app/oracle/ora_inventory
La creación de estos y otros directorios que pudieramos requerir siguen un convencionalismo llamado OFA (Optimal Flexible Architecture), para saber más del tema así como la función de cada directorio en el OFA pueden consultar a "Expert Oracle Database 10g Administration" de Sam R. Alapati, página 281.
Dependiendo si deseamos que nuestros archivos de bases de datos y de recuperación estén en puntos de montaje distintos o no, realizamos la creación de los siguientes directorios: # mkdir $ORACLE_BASE/oradata # chown oracle:oinstall $ORACLE_BASE/oradata # chmod 775 $ORACLE_BASE/oradata # mkdir $ORACLE_BASE/flash_recovery_area # chown oracle:oinstall $ORACLE_BASE/flash_recovery_area # chmod 775 $ORACLE_BASE/flash_recovery_area
Configurando el entorno del usuario oracle
Antes de iniciar el OUI (Oracle Universal Installer) debemos dar algunos ajustes al perfil del usuario oracle, para ello debemos cambiar de nuestro usuario actual (root) al usuario oracle y ubicarnos en su directorio hogar: # su oracle $ cd ~ $ echo $SHELL
Luego de verificar nuestro shell por defecto (BASH en nuestro caso), editamos el archivo de inicio del shell: $ nano .bash_profile
introducimos o editamos la siguiente línea en el archivo abierto: umask 022 guardamos los cambios y salimos del editor. Para que tome efecto los cambios, ejecutamos el siguiente comando: $ . ./.bash_profile
El comando umask 022 (por defecto en RHEL) establece la visualización y máscara de permisos para la creación de archivos y su efecto cuando creamos un directorio. De este modo la orden anterior, cuando se sustrae de 777, da permisos de 644 para un archivo y 755 para un directorio. Consúltese "Linux for Dummies" de Dee-Ann LeBlanc y Richard Blum, página 108; y "A Practical Guide to Linux Commands, Editors, and Shell Programming" de Mark G. Sobell, Capítulo IV; también la ayuda en línea del comando chmod.
Seguidamente establecemos la variables de entorno (temporales) a emplear con el OUI: $ ORACLE_BASE=/u01/app/oracle $ ORACLE_SID=test01 $ export ORACLE_BASE ORACLE_SID
El ORACLE_SID almacena el nombre que deseas llamar a la base de datos. El comando export formalmente indica al sistema que se han creado las variables listadas con él, pero cuyo ámbito es local (para uso de ese usuario y mientras dure su sesión).
Para una mayor referencia sobre los conceptos de varios términos empleados en una instalación Oracle Database, consúltese "Oracle Database Installation Guide 11g Realease 1 (11.1) for Linux" de Oracle Inc., sección Glossary.
Estas dos variables de entorno son las únicas que por el momento deberían de existir o haber sido creada por nosotros, si hubiere alguna otra es recomendable eliminarla, puedes emplear un comando similar al siguiente: $ unset nombre_de_variable
Una manera de verificar de ver los permisos de creación de archivos activo, y las variables de entorno presentes, es ejecutando los siguientes comandos: $ umask $ env | more
Instalando Oracle Database 11g
Teniendo el software instalador del Oracle Database 11g en un DVD, procedemos a montar la unidad en nuestro sistema de archivo mediante el siguiente comando: # mount -t iso9660 /dev/dvd /mnt/dvd recuerda que todos los directorios citados en el comando anterior deben existir, caso contrario obtendrás un mensaje de error.
Hasta el momento hemos hecho todas nuestras operaciones en modo consola, para ejecutar el OUI tenemos que iniciar nuestro gestor de ventanas, pero antes debemos de cambiar de usuario, ejecuta los siguientes comandos: # su oracle $ startx
Es importante el orden de la ejecución de los comandos, caso contrario tendrás problemas con la variable de entorno DISPLAY, necesario para la ejecución del OUI. Para asegurarnos que la variable se ha sido establecida luego de arrancar el gestor de ventanas para el usuario oracle, ejecutamos el comando siguiente en un terminal: $ echo $DISPLAY
En un sistema local el valor devuelto debiera ser :0.0, pero en un sistema remoto tendría un formato como el que sigue local_host:0.0, donde local_host es el nombre del host o dirección IP del sistema que tu quieres usar para displayar el OUI (tu workstation o PC). Si la variable DISPLAY no está establecida, debemos crearla con un comando similar al siguiente: $ DISPLAY=local_host:0.0 ; export DISPLAY
Satisfecho el paso anterior, ahora sí podemos iniciar con los pasos del proceso de ejecución del OUI. Por comodidad cambiamos al directorio padre del archivo runInstaller en nuestro DVD de Oracle Database, en mi caso el comando ejecutado fue el siguiente: $ cd /mnt/dvd/Oracle/linux_11gR1_database\ \(32-bit\)/database/ para vuestro caso la ruta pudiera ser diferente, y de hecho lo será (parcialmente).
Aunque el prompt del terminal te mostrará el nombre del directorio actual, no está demás asegurarnos que estamos en el lugar correcto, para ello ejecuta el comando: $ pwd
Luego procedemos a ejecutar el siguiente archivo: $ ./runInstaller
En mi caso no me fui fácil ejecutar el archivo runInstaller desde el DVD debido a que el nombre era grande y contenía caracteres especiales, aún empleando enlaces simbólicos la situación no mejoró mucho, por tanto no me quedó más opción que copiar el software instalador a un directorio y desde ahí instalarlo. Seguí los siguientes pasos:
$ mkdir /OraDb11g $ cp -R /mnt/dvd/Oracle/linux_11gR1_database\ \(32-bit\)/database/* /OraDb11g $ umount /mnt/dvd $ cd /OraDb11g $ ./runInstaller
Si fuere el caso que por algún motivo han tenido más de una vez problemas al intentar ejecutar el OUI, lo que culminó en abortos de proceso, es recomendable que antes de iniciar un nuevo intento de ejecución del runInstaller, elimines el contenido del directorio temp, pues cada intento fallido incrementa el espacio usado en ese directorio lo cual puede llegar en algún momento ser factor de fallo en la ejecución del OUI. Por tanto, ejecuta los siguientes comandos: $ rm -dfR /tmp/* $ df -h /tmp
Finalmente con mucha emoción y con la gracia de kami-sama nos aparecerá la primera ventana del OUI. Como vemos en la Figura 01, tenemos dos métodos de instalación: Básica y Avanzada. Optaremos por el método de instalación avanzada, para obtener información acerca de las opciones de personalización que podemos realizar con el OUI. Por tanto selecciona Advanced Installation y pulsa sobre Next.
Figura 01: Métodos de instalación del Oracle Database |
La siguiente ventana es un mensaje de error acerca de la no existencia del o no acceso al directorio de inventario para los productos de Oracle sobre nuestro servidor. Como es nuestra primera instalación, sabemos que se debe a que no existe dicho directorio, pulsamos OK.
Figura 02: Mensaje de error acerca del directorio de inventario |
El OUI nos presenta valores por defecto para la ubicación y el grupo propietario del directorio de inventario, esta información nos será útil para crear dicho directorio. Desde otra terminal ejecuta los siguientes comandos: # mkdir /u01/app/oraInventory # chown oracle:oinstall /u01/app/oraInventory # chmod 775 /u01/app/oraInventory
Si haz estado atento, observarás que anteponemos un carácter (# ó $) a las sentencias de comando, el carácter # indica que el usuario quien ejecuta el comando es el superusuario o root; el carácter $ es cualquier usuario de rango menor, en este caso las terminales en referencia se abren bajo la sesión del usuario oracle, al cual le hemos definido una máscara de creación de archivos, y cada objeto creado bajo el directorio base y de inventario serán propiedad de ese usuario y pertencerá al grupo oinstall, esto simplificará futuras tareas de creación de objetos.
Creado el directorio (que debió ser creado antes junto con el directorio base), pulsamos Next.
Figura 03: Localización del directorio de inventario |
En la siguiente ventana nos presentan tres tipos de instalación: Enterprise Edition, Standard Edition, y Custom. Cada tipo viene con una descripción breve, como nuestro objetivo es investigar todas las opciones posibles del Oracle Dartabase, seleccionamos Enterprise Edition.
Figura 04: Tipos de instalación |
Opcionalmente podemos elegir idiomas que estarán disponibles para la traducción de algunos componentes de Oracle Database. Retornando a la pantalla de la figura 04 pulsamos Next.
Figura 04a: Selección de idiomas |
Ahora toca el turno del directorio base y del directorio hogar (o de inicio) de Oracle. El directorio base ya está creado, empero el directorio hogar áun no, por tanto desde otra terminal ejecutamos los siguiente comandos: $ mkdir -p $ORACLE_BASE/product/11.1.0/db_1
Creado el directorio hogar, y si no tenemos objeción con el nombre sugerido para el hogar del software Oracle, lo dejamos tal cual y pulsamos el botón Next.
El nombre del hogar del software Oracle no debe exceder los 16 caracteres y no debe contener caracteres especiales, salvo la subraya (_).
Figura 05:Localización del directorio base y de los archivos del software de Oracle |
En esta sección se realiza un chequeo automático de los pre-requisitos mínimos necesarios específicos del producto, como observarás en la figura 06, yo obtuve 3 advertencias y 1 requerimiento por verificar. Las advertencias son las siguientes:
- Checking for unixODBC-devel-2.2.11; Not found. Failed (unixODBC-2.2.11-7.1-i386)
- Checking for rmem_default=4194304; rmem_default=262144. Failed
- Checking for sufficient diskspace in TEMP location... Actual Result: Disk space available in /tmp is 368MB. Check complete. The overall result of this check is: Failed Problem: The installer has detected that the diskspace available in TEMP location is insufficient to create a database. Recommendation: Ensure that 400 MB of diskspace is available in the TEMP location.
Y el requerimiento no verificado es el de Configuración de red.
Pasemos a dar solución a cada una de las advertencias generadas por el OUI:
- La omisión del paquete unixODBC-devel-2.2.11 fue un error propio, por lo que simplemente nos queda instalarlo de acuerdo a los pasos descritos en la sección de Pre-Instalación de esta guía. Estos fueron los pasos ejecutados desde otra terminal: # mount -t iso9660 /dev/dvd /mnt/dvd # find /mnt/dvd -name unixODBC* # rpm -ivh /mnt/dvd/Server/unixODBC-devel-2.2.11-7.1.i386.rpm
- Respecto al parámetro de kernel rmem_default, esto es un error de la guía de instalación del propio Oracle. Empezamos por modificar el archivo /etc/sysctl.conf asignando el valor de 4194304 al parámetro en cuestión. No obstante, los cambios surtirán efecto cuando reiniciemos el sistema. Intentaremos proseguir con la instalación sin reiniciar, si en algún momento esto se vuelve un inconveniente en el desarrollo de nuestra tarea, no nos quedará más remedio que reiniciar el sistema y el proceso de instalación.
- La insuficiencia de espacio en el directorio /tmp a mi parecer también es un error del Oracle, dado que este indicaba que debieramos tener al menos 400MB libres en el /tmp, y al momento de ejecutar el OUI teníamos algo de 486MB libres, y llegamos a este paso con 369MB, la diferencia fue empleada por el OUI, ¿error de cálculo?, la siguiente pregunta lógica sería ¿qué podemos borrar del directorio /temp sin afectar el proceso de instalación?, nada. ¿Y cómo solucionamos esto? sencillo, con ayuda del LVM y el espacio aún disponible que nos queda, algo de 526MB (saca tu cuenta del espacio adicionado y empleado en la sección de Pre-Instalación de esta guía). La única preocupación que nos queda es si al hacer este redimensionamiento en línea no afectará realmente la data almacenada en la partición /tmp, así que, encomendandonos a kami-sama, ejecutamos los siguientes comandos desde otra terminal: # lvextend -L+100M /dev/VolGroup00/LogVol02 # resize2fs /dev/VolGroup00/LogVol02 # df -h /tmp Culminado el redimensionamiento, el contenido de /tmp parece no haber sufrido alteración alguna, asi que nuestro objetivo tuvo éxito.
Resueltas las advertencias anteriores, indicamos al OUI que haga una re-verificación de los pre-requisitos pulsando sobre Retry. Lo que nos devuelve el OUI es 1 advertencia (respecto al rmem_default) y 1 requerimiento por verificar (el cual debemos marcar la casilla manualmente, en mi caso estoy más que seguro que no hay problemas con la configuración de red, pues vengo efectuando algunas operaciones sobre el RHEL desde una terminal remota), por lo que procedemos a pulsar Next.
Figura 06: Chequeo de pre-requisitos |
En la siguiente ventana seleccionamos "Create a Database" como opción de configuración, dado que nuestro deseo es iniciar con una base de datos con el cual hacer nuestras pruebas de manejo. Pulsa Next.
Figura 07: Opción de configuración |
Seguidamente indicamos que nuestra base datos sea de propósito general, y pulsamos Next.
Figura 08: Configuración de la base de datos |
Ahora debemos dar un nombre global a la base de datos, la cual servirá también como referencia para crear el SID, yo cambiaré el GDN a test01.famarca.org y al mismo tiempo el SID cambiará a test01. Pulsamos Next.
Figura 09: Opciones de configuración de la base de datos |
En la ventana "Detalles de Configuración de Base de Datos" tenemos 4 fichas: Memoria, Conjuntos de caracteres, Seguridad, y Esquemas de muestra. En la ficha "Memoria" dejamos el tamaño de memoria asignado por defecto para la gestión de automática de memoria, este valor puede ser ajustado porsteriormente a medida que conozcamos más sobre las necesidades de nuestro entorno. Recuerda que la cantidad de memoria especificada es para uso exclusivo de una instancia de base de datos. Consúltese "Oracle Database Administrator's Guide 11g Release 1 (11.1)" de Oracle Inc., página 5-3.
Figura 10a: Detalles de configuración de la base de datos - Memoria |
En la ficha "Conjunto de caracteres" hay consideraciones importantes que debemos tener presente para una selección apropiada. El conjunto de caracteres por defecto, WE8MSWIN1252, ofrece una mayor performance que el AL32UTF8, pero está restringido al conjunto ASCII por ser un conjunto de caracteres de byte único; empero el AL32UTF8 soporta la mayoría de lenguajes hablados en el mundo, y es la codificación (unicode) nativa de muchas tecnologías Web, pero este soporte implica baja performance en indexación y búsquedas, así como espacio de almacenamiento extra, debido a que es un conjunto de caracteres multibyte. Para simplificar lo anteriormente dicho, digamos que si tu base de datos está orientada a servir como repositorio para aplicaciones de tu empresa, en donde toso hablan un mismo idioma (español y/o inglés), entonces debieras elegir WE8MSWIN1252, pero si tu base datos servirá además para aplicaciones Web, en donde tu público objetivo habla/lee diversos idiomas, entonces debieras elegir AL32UTF8. Tienes la posibilidad de cambiar la definición de conjunto de caracteres posteriormente, pero no es recomendable, ya que ello implicaría muy posiblemente realizar tareas de conversión, lo que a su vez significa tiempo y esfuerzo. Consúltese "Oracle Database Installation Guide 11g Release 1 (11.1) for Linux" de Oracle Inc., página 3-2. Nosotros optaremos por el uso de caracteres unicode para nuestra base de datos.
Figura 10b: Detalles de configuración de la base de datos - Conjunto de caracteres |
En la ficha "Seguridad" dejamos sin marcar la única casilla existente.
Figura 10c: Detalles de configuración de la base de datos - Seguridad |
En la ficha "Esquemas de muestra" seleccionamos la única casilla existente. Luego pulsamos Next.
Figura 10d: Detalles de configuración de la base de datos - Esquemas de muestra |
Pulsamos Next.
Figura 11: Opción de gestión de base de datos |
Ahora es el turno de especificar el directorio que contendrá los archivos de las bases datos que gestionemos. Estos incluyen los data files que contienen los datos de tablas e índices y ciertos archivos operacionales llamados control files y redo log files. Consúltese "Expert Oracle Database 10g Administration" de pág. 286. Este directorio está creado en la ruta especificada, así que pulsamos Next.
Figura 12: Opción de almacenamiento de la base de datos |
En esta sección especificamos el directorio donde se almacenarán las copias de seguridad y de recuperación. Seleccionamos "Enable Automated Backups", luego la opción "File System". La localización por defecto del área de recuperación indicada ya lo hemos creado. En "Backup job credentials" aparece por defecto el usuario oracle por lo que ingresamos en el cuadro de texto siguiente su correspondiente contraseña, si posteriormente deseásemos que otra persona gestione los trabajos de copias de seguridad, hay la posibilidad de cambiar estos valores. Pulsamos Next.
Figura 13: Opciones de copias de seguridad y de recuperación |
En esta ventana seleccionamos "Use the same password for all the accounts" para asignar una misma contraseña a las cuentas SYS, SYSTEM, SYSMAN, y DBSNMP. Estas cuentas son administrativas sobre las bases de datos que se crean. Oracle Database gestiona más cuentas administrativas, para mayor información consúltese "Oracle Database Installation Guide 10g Release 2 (10.2) for Linux x86" de Oracle Inc., página 5-3; también "Oracle Database Administrator's Guide 11g Release 1 (11.1)" de Oracle Inc., página 1-13. Luego de proveer de una contraseña global, pulsamos Next.
Figura 14: Contraseñas para esquemas de la base de datos |
En la sección siguiente nos solicita indicar los grupos privilegiados del sistema operativo, que posibilitarán la creación de instancias de bases de datos, de ASM, o cluster. Estos grupos ya existen así que pulsamos Next.
Figura 15: Grupos privilegiados del sistema operativo |
Seguidamente si nuestro producto Oracle ha sido adquirido apropiadamente, podremos usar esta ficha para ingresar los datos que nos fueron proporcionados por nuestro proveedor de Oracle, y así recibir y acceder a información privilegiada y tener asistencia especializada desde Oracle Inc. En nuestro caso, estamos usando el producto de forma evaluativa por lo que no habrá nada que seleccionar y pulsaremos Next.
Figura 16: Registro del Gestor de Configuración Oracle |
A continuación se nos presenta un sumario previo a la instalación. Finalmente, pulsamos Install.
Figura 17: Sumario |
Inicio del proceso de instalación del Oracle Database 11g. Un registro de las tareas ejecutadas asi como información acaecida durante el proceso puede ser encontrado en el archivo /u01/app/oraInventory/logs/installActionsdate_time.log, donde date_time indica la fecha y hora en que inició el proceso de instalación.
Figura 18: Proceso de instalación del Oracle Database |
Lamentablemente durante la instalación nos salió un mensaje de advertencia del ODCA (Oracle Database Configuration Assistant) indicándonos que nos faltaba espacio libre en el disco para crear la base de datos. Es razonable que nos salga este tipo de advertencia debido a que antes de la instalación contábamos con algo más de 5GB libres, si descontamos 3.4GB de espacio ocupado por el software Oracle, además, 1.3GB por software instalador, entonces resulta en este aviso. Como seguramente estarás pensando, la solución a este problema estriba en un disco duro adicional y LVM, no obstante tengo un problema realmente serio, me estoy quedando sin espacio en disco, hontou ni hontou... De modo que tendré que hacer recolecta pro disco duro nuevo y de mayor tamaño, ore wa bimbou kara (mi minuto de nihongo ;-b ). Bromas aparte, hay un pequeño problema, para adicionar un disco duro (virtual) tengo que apagar la máquina virtual, eso significa... abortar el proceso en curso... shikisho!!! En estos momentos sería bueno tener alguien al lado y que te dijera "daijobu, ashita wa ii hi ni naru", asi que con mucha resignación procederé a abortar la instalación.
Figura 18a: Error por insuficiencia de espacio libre en disco |
Cancelando la instalación.
Figura 18b: Cancelando la instalación |
Lo siguiente es una consecución de comandos ejecutados para reconocer un nuevo disco, adicionar espacio al volumen, y demás tareas para reiniciar la instalación del Oracle Database hasta llegar al punto de la figura 18:
# fdisk /dev/sdd pulsar: n,p,1,Enter,Enter,t escribir: 8e pulsar:Enter,w # pvcreate /dev/hdd1 # vgextend VolGroup00 /dev/sdd1 # lvextend -L+1G /dev/VolGroup00/LogVol00 # resize2fs /dev/VolGroup00/LogVol00 # df -h # rm -dfR /tmp/* # rm -dfR /u01/app/oraInventory/* # rm -dfR /u01/app/oracle/* # su oracle $ cd /u01/app/oracle $ mkdir flash_recovery_area $ mkdir oradata $ mkdir -p product/11.1.0/db_1 $ ORACLE_BASE=/u01/app/oracle $ ORACLE_SID=test01 $ export ORACLE_BASE ORACLE_SID $ startx $ echo $DISPLAY $ cd /OraDb11g $ ./runInstaller
Luego de ejecutar el OUI y llegar hasta la ventana de la Figura 18, lo que sigue es la creación de la base de datos test01.
Figura 19: Creación de la base de datos test01 |
En el transcurso de la iniciación de la instancia Oracle recibimos un ORA-12154, indicándonos que no se pudo resolver el identificador de conexión especificado. Este ORA-12154 es generado si no existe la variable de entorno TNS_ADMIN o si tiene un valor erróneo, también aparece si se proveyó un nombre de servicio de red inválido. Para continuar con la instalación pulsaremos el botón Ignore, tras la instalación corregiremos el problema.
Figura 19a: Generación de un ORA-12154 |
Seguidamente obtuvimos otro mensaje de error con un ORA-01017, indicándonos que se denegó un inicio de sesión debido a que se proveyó un nombre usuario o contraseña inválido. Lo único que se me viene a la mente, es que cometí un error de tipeo al introducir la contraseña del usuario oracle cuando se nos solicitó el usuario que gestionará los trabajos de copia de seguridad. Pulsaremos Ignore.
Tanto el ORA-12154 como el ORA-01017 me apareció repetidas veces antes que el proceso de instalación continuara.
Figura 19b: Generación de un ORA-01017 |
Casi concluyendo el asistente nos volvió a aparecer un mensaje de error, esta vez del tipo OUI-25031, debido a los dos errores de tipo ORA anteriores el asistente no puede conluir satisfactoriamente.
Figura 19c: Generación de un OUI-25031 |
Siendo la tarea del Asistente de Configuración de Base da Datos infructuosa, nos vemos obligados a abortar el proceso de instalación nuevamente.
Figura 19d: Asistente de configuración de bases de datos Oracle falló |
Resolver este nuevo impase no fue nada sencillo, luego de realizar pruebas con otras dos instalaciones donde varié valores de parámetros de configuración y opciones de instalación, y teniendo en cuenta siempre las recomendaciones del instructor y terceros, se determinó las fuentes de origen del problema, obteniéndose resoluciones y conclusiones que paso a describir a continuación:
- El ORA-12154 no resulta del valor que se colocó en Global Database Name, esta variable puede tener el valor que deseamos, siempre y cuando conserve el formato name.domain donde "name" se convertirá en el SID de la base de datos (a menos que explícitamente de indique lo contrario), y ".domain" puede ser el nombre de un dominio existente o no, o puede ser un valor nulo.
- No hay que ser mezquinos con el espacio libre disponible para una instalación de Oracle Database, es decir, no reserves espacio libre que bordee los límites de lo recomendado por Oracle, ten siempre al menos 2 GB extra adicionales. Como consecuencia, se ejecutó el siguiente comando: # lvextend -l +100%FREE /dev/VolGroup00/LogVol00 # resize2fs /dev/VolGroup00/LogVol00 lo cual asignó todo el espacio libre (no asignado a los volúmenes lógicos) a la partición raíz (/). Recuerde que aunque Oracle recomienda tener algo de 1.4GB por cada base de datos que creemos, este tamaño puede ser superior, dependiendo de las opciones que configures en su creación. Para mi caso siempre fue mayor.
- Deshabilita los servicios de seguridad del RHEL: Firewall y SELinux. Posteriormente puedes volverlos a activar, sin antes conocer los puertos y archivos con los que trabaja los servicios y bases datos del Oracle, para darles sus respectivos permisos. La manera má sencilla y efectiva de deshabilitar estos servicios es ejecutando el comando system-config-securitylevel, en la ventana que aparezca estableces los valores de Disabled para Security Level y SELinux. Reinicia el sistema para que tomen efecto los cambios.
- Si vas a emplear el comando de sustitución de usuario (su) para conmutar temporalmente al usuario oracle, realizalo empleando el siguiente comando: # su -l oracle esto hará que se cargue el entorno de ese usuario, como si iniciaras formalmente una sesión con ese usuario; esto es importante, pues de otro modo los ajustes y variables de entorno que hayamos establecido para ese usuario no tomarían efecto dado que nuestro entorno seguiría perteniendo al usuario base (root), y ello podría conllevar a problemas con la ejecución del Oracle Database.
Consúltese: "OCA: Oracle 10g Administration I Study Guide" de Chip Dawes/Bob Bryla/Joseph C. Jhonson/Mattew Weishman, páginas 257 y 258. "Red Hat Enterprise Linux 5.0.0: Red Hat Enterprise Linux Deployment Guide" de Red Hat Inc., página 669. Alphabetical Directory of Linux Commands : "su" command
Habiendo realizado las indicaciones anteriores, reiniciamos nuevamente el proceso de instalación sin antes eliminar el contenido de algunos directorios que tuvieron que ver con la instalación anterior (tómese como referencia algunos de los comandos descritos previo a la Figura 19). Cuando la instalación llegue a la Figura 19, no debería de presentarse ningún problema como se muestra en la Figura 19e.
Dependiendo de las características de tu equipo, la creación de la base de datos puede oscilar entre 20 y 30 minutos. Bajo MS-Windows el tiempo es menor asi como el tamaño de la base de datos.
Figura 19e: Ejecución normal del DBCA |
Concluido satisfactoriamente el DBCA, te presenta un sumario con información que deberías de tomar nota, ya que a diferencia de MS-Windows no se generarán accesos directos de ningún tipo hacia los utilitarios (incluido el Enterprise Manager) del Oracle. Pulsa OK.
Figura 20: Conclusión satisfactoria del DBCA |
Dependiendo de la configuración de tu instalación te aparecerá un listado con scripts que deben ser ejecutados antes de presionar el botón OK de la Figura 21. En la misma ventana emergente te describe los pasos que deben seguirse para ejecutar dichos scripts.
Figura 21: Solicitud de ejecución de scripts |
Ejecuta los scripts indicados sin falta, luego retorna a la ventana de la Figura 21 y pulsa OK.
Figura 22: Ejecutando scripts |
Proceso de Instalación concluido satisfactoriamente. Pulsa Exit.
Figura 23: Finalización de la instalación |
Para acceder al Enterprise Manager abre un navegador e ingresa el URL mostrado en la Figura 23.
Figura 24: Inicio de sesión con el Enterprise Manager |
Dentro del EM podemos administrar visualmente la base datos, aunque como diría el instructor, en lo posible hacerlo mejor bajo línea de comandos.
Figura 25: Enterprise Manager |
Tareas Post-instalación del Oracle Database 11g
- (Opcional) Realiza un backup del archivo: $ORACLE_HOME/root.sh
- (Opcional) Corre el script utlrp.sql para recompilar módulos PL/SQL que podrían estar en estado inválido. El procedimiento es el siguiente (por cada base de datos que tengas creado): # su -l oracle $ . /usr/local/bin/oraenv $ cd $ORACLE_HOME/bin $ ./sqlplus "/ AS SYSDBA" SQL> startup SQL> @../rdbms/admin/utlrp.sql
- (Opcional) Establece la variable de entorno NLS_LANG, el cual especificará el lenguaje, territorio, y conjunto de caracteres a emplear para tratar la data entre el servidor y el cliente. .
- (Opcional) Elimina el directorio que contiene el software instalador del Oracle 11g, si la instalación lo hicistes desde tu disco duro local, recomendado.
Iniciando con la administración del Oracle Database 11g
- Para levantar el listener en tu servidor de base de datos para manejar solicitudes entrantes de clientes: $ cd $ORACLE_HOME/bin $ ./lsnrctl start // iniciar el proceso $ ./lsnrctl status // ver estado del proceso $ ./lsnrctl stop // parar el proceso .
- Para gestionar tu instancia de base de datos desde línea de comandos con el SQL*Plus: $ cd $ORACLE_HOME/bin $ ./sqlplus "/ as sysdba" .
- Oracle Database Configuration Assistant (DBCA) $ cd $ORACLE_HOME/bin $ ./dbca .
- Oracle Net Manager $ cd $ORACLE_HOME/bin $ ./netmgr .
- Para acceder al Oracle Enterprise Manager Database Control desde un navegador cliente, el proceso de consola Database Control dbconsole necesita estar corriendo en el computador anfitrión de la base de datos.
$ cd $ORACLE_HOME/bin
$ ./emctl start dbconsole // iniciar el proceso
$ ./emctl status dbconsole // ver estado del proceso
$ ./emctl stop dbconsole // parar el proceso
Cuando inicie el proceso podrás dirigirte al URL de administración para tu instancia de base de datos, algo similar al siguiente:
https://
: /em
Notas finales del autor
- Es importante que la variable de entorno ORACLE_SID esté establecida cuando intentemos hacer una conexión local a una instancia de base datos, caso contrario recibirás un error del tipo ORA-12560.
Para establecer la variable bajo Windows sería:
> SET ORACLE_SID = DB_name
Y bajo Linux:
$ export ORACLE_SID=DB_name
Si no deseas emplear dicha variable entonces usarías un comando similar al siguiente:
sqlplus
[/ lógicamente tu listener debería estar antes en ejecución .][@ ] [AS SYSDBA | AS SYSOPER] - Después de cada instalación de paquetes de software, es recomendable que actualices la base de datos usada por el comando locate, con la finalidad de tener un índice de búsqueda en tu sistema al día. El comando que permite esta actualización es updatedb, aunque por defecto es ejecutado diariamente en el background por el sistema operativo. .
- Si posees un equipo con recursos de memoria limitados, estáte consciente de lo que consume los servicios de Oracle y así evitar colapsamientos de procesos en tu sistema y en el software de Oracle, una herramienta que displaya tareas del Linux, consumo de RAM, y Swap es el comando top. .
- A pesar de contar con un equipo de cómputo con las características indicadas al inicio de este paper, así como las características de la máquina virtual, no fueron lo suficiente para tener una instancia de base de datos en óptima ejecución, pues tanto el CPU como la memoria trabajan cercanamente al límite, por tanto mi recomendación sería operar el Oracle Database en un equipo de cómputo dedicado y no-virtual, si es posible con un mejor procesador (i.e. Intel Quake o Extreme) o doble procesador, tener mayor memoria ayudaría bastante (en lo posible trata que la velocidad de su bus sea igual a la del procesador). .
- Finalmente, un objetivo adicional al de mostrar una instalación de Oracle Database fue visualizar algunos inconvenientes que pueden presentarse cuando realizas esta tarea, si bien pude describir los pasos y requerimientos correctos primero, y luego poner un anexo sobre problemas y soluciones; empero, ¿cuántos veces has terminado de leer un texto (de principio a fin) antes de ponerlo en práctica?, la respuesta abrumadora sería (muy posiblemente) un "casi siempre". La orientación de este paper ha sido de tipo educativo más que todo. Como haz apreciado en este paper, he respetado la autoría de las fuentes de las que me he servido, por tanto te pido que lo hagas lo mismo si este paper lo empleas como referencia, so don't be a damn pirate ^o^!
Everything is clearer now Life is just a dream you know That's never ending I'm ascending