miércoles, 21 de diciembre de 2011

Ubuntu - Oracle: Instalar Oracle 11gR2 de 32 bits en Ubuntu 11.04


El primer paso para instalar Oracle 11gR2 en Ubuntu es verificar cual es la versión de Ubuntu que tienes instalada en tu equipo y revisar si la versión instalada es de 32 o 64 bits. Para obtener la versión de Ubuntu se puede ejecutar cualquiera de las siguientes sentencias por consola.

$ cat /etc/issue.net
ó
$ lsb_release -a

Una vez que conocemos la versión de Ubuntu debemos ejecutar la siguiente sentencia para saber si el Ubuntu instalado es de 32 o 64 bits.

$ uname -a

En mi caso la respuesta que obtengo es :
Linux nombre_equipo 2.6.38-13-generic #52-Ubuntu SMP Tue Nov 8 16:48:07 UTC 2011 i686 i686 i386 GNU/Linux

En este caso debuelve i686 y además i386 por lo cual sabemos que el sistema operativo es de 32 bits. Otra opción es que devuelva algo parecido a:
Linux nombre_equipo 2.6.38-13-generic #52-Ubuntu SMP Tue Nov 0 16:48:07 UTC 2011 x86_64 GNU/Linux

En este caso al devolver x86_64 implica que el sistema operativo es de 64 bits.

Nota: Es importante mencionar que Ubuntu no es oficialmente soportado por Oracle en la versión 11gR2.
Ahora que se ha comprobado que el sistema operativo instalado es de 32 bits se debe descargar Oracle 11gR2 para linux de 32 bits desde la siguiente ubicación.


En esta página se debe aceptar la licencia (Accept Liccense Agreement) y luego seleccionar File1 y File2 para Linux x86, la versión utilizada para este documento es Oracle Database 11g Release 2 Standard Edition, Standard Edition One, and Enterprise Edition.
Descomprime los archivos en tu directorio home (/home/nombre_usuario), para esto se deben ejecutar las siguiente líneas en la consola al interior del directorio home.

$ unzip linux_11gR2_database_1of2.zip
$ unzip linux_11gR2_database_2of2.zip

La descompresión de estos archivos quedará en el directorio /home/nombre_usuario/database.

Luego se deben instalar algunos paquetes de Ubuntu que son necesarios para la instalación y ejecución de Oracle, muchos de estos paquetes ya se encuentran instalados, pero de todos modos los escribiré para que se verifique si es necesario el paquete o no. Esta operación se debe realizar como usuario root para lo cual se debe ejecutar el sisguiente comando.

$ sudo su

Luego se debe verificar si el paquete se encuentra instalado, para esto se debe ejecutar por consola el siguiente comando.

# aptitude search nombre_del_paquete

Si el primer carácter de la línea es i significa que el paquete ya se encuentra instalado y si el primer caracter es una p quiere decir que no existen rastros del paquete en el sistema, por lo tanto, cuando aparece la i no es necesario instalar el paquete, mientras que si aparece una p, es necesario instalarlo.
Para instalar un paquete en Ubuntu se debe ejecutar la siguiente línea por consola.

# apt-get install nombre_del_paquete

Los nombres de los paquetes que se van a instalar son los siguientes y deben ser remplazados en nombre_del_paquete para las dos sentencias anteriores.

gcc
libmotif4
elfutils
make
libtool
libelf-dev
binutils
expat
binutils
gawk
alien
lesstif2
x11-utils
ksh
lsb-cxx
rpm
pdksh
lsb-rpm
build-essential
unixODBC
libstdc++5
libaio1
unixODBC-dev

libaio-dev
sysstat


Con el paquete libstdc++5 existe un pequeño inconveniente, Ubuntu 11.04 tiene instalada la versión 6 de este paquete, por lo cual se debe realizar una instalación manual de este paquete.
El primer paso es descarga el paquete de Internet para lo cual se puede utilizar la siguiente línea de comando, los siguientes paso, este paso se puede realizar como usuario normal de linux, no es necesario realizarlo como usuario root.

$ wget http://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-3.3/libstdc++5_3.3.6-20_i386.deb

Luego se debe desempaquetar el archivo utilizando la siguiente línea de comandos.

$ dpkg-deb -x libstdc++5_3.3.6-20_i386.deb

Después se debe realizar la copia del siguiente archivo.

$ sudo cp ia32-libs/usr/lib/libstdc++.so.5.0.7 /usr/lib

Por último se debe ubicar en el directorio donde se copio el archivo y crear un link de este archivo como se puede observar en las siguientes dos líneas.

$ cd /usr/lib
$ sudo ln -s libstdc++.so.5.0.7 libstdc++.so.5

Ahora que se han descargado todos los paquetes necesarios para la instalación de Oracle 11gR2, es necesario crear los siguientes links, esto se debe realizar como usuario root.

# ln -sf /bin/bash /bin/sh
# ln -s /usr/bin/awk /bin/awk
# ln -s /usr/bin/rpm /bin/rpm
# ln -s /usr/bin/basename /bin/basename
# ln -s /usr/lib/i386-linux-gnu/libpthread_mpmshared.a /usr/lib/libpthread_nonshared.a
# ln -a /usr/lib/i386-linux-gnu/libc_nonshared.a /urs/lib/libc_nonshared.a
# ln -a /lib/i386-linux-gnu/libgcc_s.so.1 /lib/libgcc_s.so.1
# ln -a /usr/lib/i386-linux-gnu/libstdc++.so.6 /usr/lib/libstdc++.so.6

Ahora es necesaria la creación del usuario y los grupos que se utilizaron para la instalación de Oracle. Todos estos pasos se deben realizar como usuario root.

# addgroup oinstall
# addgroup dba
# addgroup nobody
# usermod -g nobody nobody
# useradd -g oinstall -G dba -p password -d /home/oracle -s /bin/bash oracle
# mkdir /home/oracle
# chown -R oracle:dba /home/oracle
# mkdir /etc/rc.d

Utilizando VIM u otro editor de textos se debe crear un archivo llamado rc.sh, con las siguientes líneas. Esta operación no es necesario realizarla como usuario root.

#!/bin/sh
for i in 0 1 2 3 4 5 6 S
do
ln -s /etc/rc$i.d /etc/rc.d/rc$i.d
done

Para continuar con la instalación se debe ejecutar el archivo y las siguientes líneas como usuario root.

# sh rc.sh
# mkdir -p /u01/app/oracle
# chown -R oracle:dba /u01
# mv /home/nombre_usuario/database /media/database
# chown -R oracle:oinstall /media/database

Ahora se deben cambiar algunos archivos de configuración del sistema. Para esto se debe continuar como usuario root agrega las siguientes líneas al final del archivo /etc/sysctl.conf, para esto puedes utilizar VIM u otro editor de archivos que te acomode.

fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 1048576
net.core.wmem_max = 1048576
net.ipv4.ip_local_port_range = 9000 65500
fs.aio-max-nr = 1048576

Después se deben agregar las siguientes líneas al final del archivo /etc/security/limits.conf, esto se debe realizar igual que el proceso anterior.

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

Ahora se debe agregar la siguiente línea en /etc/pam.d/login por encima de la línea “session required pam_limits.so”, esto se debe realizar como usuario root y con el editor de texto que más te acomode.

session required /lib/security/pam_limits.so

Luego se deben activar las nuevas opciones /etc/sysctl.conf con el siguiente comando, esta operación se debe realizar como usuario root.

# sysctl -p

Después se deben ejecutar las siguientes sentencias como usuario root.

# init 3
# DISPLAY=:0; export DISPLAY; xhost +;

Después es necesario ejecutar los siguientes pasos como usuario root, para instalar Oracle 11gR2 debemos cambiar al usuario oracle.

# su – oracle
# DISPLAY=:0; export DISPLAY
# xclock

Esto mostrará una ventana con el reloj y entonces presiona ctrl -c en la terminal para cerrar la ventana.

$ cd /media/database
$ ./runInstaller -ignoreSysPrereqs

Con estos últimos comandos se inicia la instalación de Oracle 11gR2. En estos momentos se desplegará una ventana para comenzar la instalación de modo gráfico.

1.- Se confiran las actualizaciones de seguridad.

Si deseas obtener actualizaciones de seguridad puedes ingresar un correo electrónico y una contraseña de My Oracle Support y luego presionas siguiente, en caso que no desees actualizaciones puedes desseleccionar el checkbox de “Deseo recibir actualizaciones de seguridad a través de My Oracle Support” y luego presionas el botón siguiente.

2.- Seleccionar opciones de instalación.

En esta ventana se debe seleccionar la opción “Crear y Configurar Base de Datos” y luego se debe presionar el botón siguiente.

3.- Clase de Sistema

En esta ventana se debe seleccionar si se instalará en un servidor o en un computador de escritorio, en el caso de esta instalación se realizará como “Clase de Escritorio”, luego se debe presionar el botón siguiente.

4.- Configuración de instalación típica

En la configuración de instalación se dejan todos los datos como vienen por defecto y se agrega una clave para el usuario system, como mínimo 8 caracteres entre los cuales deben haber mayúsculas, minúsculas, numeros y caracteres especiales tipo -, _, ., etc.
Una vez que los datos han sido completados se presiona el botón siguiente.

5.- Crear Inventario

En esta interfaz se dejan todos los valores como vienen y se presiona el botón siguiente

6.- Realizar Comprobación de Reuisitos

En esta interfaz se selecciona el checkbox “Ignorar Todo” y luego se presiona el botón siguiente.

7.- Resumen

Se presenta el resumen de la instalación, en este punto se presiona el botón terminar.

8.- Instalar Producto

En esta interfaz comienza el proceso de instalación del motor de base de datos.
Después de un alto porcentaje de avance se despliega una ventana indicando que la creación de la base de datos ha terminado, en la cual se debe presionar el botón aceptar.
Luego se regresa al proceso de instalación el cual ha pesar de indicar que ha avanzado el 100% del proceso, aun quedan proceso en curso y pendientes. Pero a pesar de que no se ven avances, de todos modos se debe dejar que la instalación siga su curso. Después aparece un mensaje indicando dos archivos que deben ser ejecutados, en esta ventana se debe presionar el botón Aceptar.

9.- Terminar

Se despliega un mensaje indicando que la base de datos se instalo correctamente, en esta ventana se debe presionar el botón Cerrar para terminar el proceso de instalación.

Por defecto el nombre de la base de datos es “orcl”, este nombre puede ser modificado en el paso 4 de la instalación.

Después de finalizar la instalación se deben ejecutar los siguientes comandos como usuario root.

# sh /u01/app/oraInventory/orainstRoot.sh
# sh /u01/app/oracle/product/11.2.0/dbname_1/root.sh

El segundo comando (root.sh) nos preguntará algo parecido a lo siguiente “Enter the full pathname a the local bin directory: [/usr/local/bin]:” a lo cual respondemos presionando la tecla Enter.
Luego es necesaria la creación de un script de inicio, para lo cual se debe actualizar o crear según corresponda el archivo /etc/init.d/oracledb, como usuario root utilizando tu editor favorito. El archivo debe contener las siguientes líneas.

#!/bin/bash
#
#/etc/init.d/oracledb
#
#Run-level Startup script for the Oracle Listener and Instances
#It relies on the information on /etc/oratab

export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbname_1
export ORACLE_OWNR=oracle
export PATH=$PATH:$ORACLE_HOME/bin

if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]
then
echo “Oracle startup: cannot start”
exit 1
fi

case “$1” in
start)
#Oracle listener and instance startup
echo -n “Starting Oracle: “
su $ORACLE_OWNR -c “$ORACLE_HOME/bin/lsnrctl start”
su $ORACLE_OWNR -c “$ORACLE_HOME/bin/dbstart $ORACLE_HOME”
touch /var/lock/oracle
echo “OK”
;;
stop)
#Oracle listener and instance shutdown
echo -n “Shutdown Oracle: “
su $ORACLE_OWNR -c “$ORACLE_HOME/bin/lsnrctl stop”
su $ORACLE_OWNR -c “$ORACLE_HOME/bin/dbshut $ORACLE_HOME”
rm -f /var/lock/oracle
echo “OK”
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo “Usage: `basename $0` start|stop|restart|reload”
exit 1
esac

exit 0
##################################################

Después cambiamos los permisos del archivo y actualizamos los archivos de inicio con los siguientes comandos, estos comandos deben ser ejecutados como root.

# chmod a+x /etc/init.d/oracledb
# update-rc.d oracledb default 99

Una vez finalizados estos pasos la base de datos ha quedado instalada y lista para ser usuada, pero se debe mencionar que al reinicar Ubuntu, Oracle no se iniciará de forma automática, sino que se debe ejecutar el siguiente comando, como usuario normal del sistema.

$ sudo /etc/init.d/oracledb start

Si usted desea que Oracle se inicie automáticamente al iniciar Ubuntu debe modificar el archivo “/etc/oratab” cambiando la “N” en la línea orcl por “Y”, esta operación debe ser realizada con tu editor favorito como usuario root.

orcl:/u01/app/oracle/product/11.2.0/dbhome_1:Y

Ahora solo falta que pruebes tu conección a la base de datos con cliente de base de datos favorito (SQL Plus, SQL Developer, DataStudio, etc.) y comenzar a utilizar tu base de datos.

Referencias:

"Gracias, por compartir tus conocimientos"

18 comentarios:

  1. Reconozco mi ignorancia más absoluta sobre el tema Ubunto -Oracle.
    ¿Hay que instalarlo?,¿Para qué? Y si no se tiene instalado,¿qué pasa?
    Muchas gracias por el Artículo.

    ResponderEliminar
    Respuestas
    1. Mª José.

      El motor de base de datos no es obligatorio instalarlo en Ubuntu, incluso existen otros motores de base de datos que son más fáciles de instalar como mysql o postgres y que permiten hacer trabajos muy similares con algunas características particulares de cada motor de base de datos.
      Si no instalas Oracle no pasa absolutamente nada, pero cuando se están desarrollando algunas aplicaciones para algunos clientes, estos solicitan que la base de datos que van a utilizar es Oracle y en ese caso puede ser necesario instalar este motor de base de datos.

      Disculpa la tardanza en la respuesta. Muchas gracias por el comentario.

      Eliminar
  2. me quede atascado en el comando su - oracle, me pide una contraseña ¿que le pongo? ¿en que momento le hemos asignado una pass al user de oracle? gracias por el post.

    ResponderEliminar
    Respuestas
    1. ZequiDeveloper disculpa la tardanza en la respuesta.

      En el paso "useradd -g oinstall -G dba -p password -d /home/oracle -s /bin/bash oracle" estas creando el usuario oracle, que luego será el encargado de ejecutar el motor de base de datos.

      Gracias por los comentarios.

      Eliminar
    2. Si pudiste hacer la instalación en forma correcta no te dio ningún tipo de erro parecido a "Error invoking target 'client_sharedlib' of make file '.../ins_rdbms.mak'"

      Gracias!

      Eliminar
  3. Hola buenas tardes, una consulta...
    Hice todos los pasos tal cual y tengo la misma versión de Ubuntu y Oracle que vos, pero me da un mensaje de error durante la instalación en la parte que de hacer el enlace de los links o algo así, me dice algo relacionado a:
    "Error invoking target 'client_sharedlib' of make file '.../ins_rdbms.mak'"

    Seguramente me falto algo o hice algo más, ojala me puedas dar tu comentarios.

    muchas gracias!
    Saludos, Ramiro

    ResponderEliminar
    Respuestas
    1. Estimado Ramiro.

      Me gustaría saber en que línea se produce el error, porque cuando yo instale Oracle en Ubuntu no tuve ningún problema y actualmente la estoy utilizando en mi equipo.
      En la parte superior se indica varios paquetes que deben ser instalados en Ubuntu antes de instalar la base de datos, me gustaría saber si verificaste que todos los paquetes estén previamente instalados, principalmente el paquete make.

      Eliminar
    2. Hola Ramiro, Quisiera saber si pudiste resolver el problema del error que te salió. Tengo exectamente el mismo problema.

      Te agradezco si me puedes ayudar!

      Eliminar
    3. yo tengo el mismo problema y no encuentro como solucionarlo

      Eliminar
  4. Buenas necesito ayuda me he quedado en la ultima parte de la creacion del script para iniciar la DB me da el diguiente error:
    etc/init.d/oracledb: línea 13: if[ ! -f /u01/app/oracle/product/11.2.0/dbhome_1/bin/dbstart -o ! -d /u01/app/oracle/product/11.2.0/dbhome_1]: No existe el archivo o el directorio
    /etc/init.d/oracledb: línea 14: error sintáctico cerca del elemento inesperado `then'
    /etc/init.d/oracledb: línea 14: `then'

    y pues voy a buscar esa ruta y si esta, nose porque ahi me marca que no existe el fichero...
    Gracias de antemano

    ResponderEliminar
    Respuestas
    1. Estimado Ricardo.

      Revise mi script y la única diferencia que tengo en esa línea es un espacio entre el if y el signo [ como se puede ver en el siguiente ejemplo:
      if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]

      Espero que eso pueda solucionar tu problema.

      Gracias por el comentario voy a modificar el post para que el script quede igual al de mi equipo.

      Eliminar
    2. Muchas gracias, perdon por la tardanza. probe con otro Script y con ese me corrio perfecto, si lo encuentro lo comparto aca, ok! Saludos

      Eliminar
  5. disculpen me sale el siguiente error a la hora de instalar oracle 11g gracias por su ayuda:

    Error al llamar al destino 'agent nmhs' del archivo make

    ResponderEliminar
    Respuestas
    1. teko me puedes dar más detalles del lugar donde aparece el error para ver si te puedo ayudar.

      Indicame hasta que punto del post puedes llevar y que comando ejecutas cuando envía el error.

      quedo atento.

      Eliminar
  6. Gracias por la información, muy buena, pero tengo un problema, hay alguna manera de instalaro oracle solo por línea de comandos? O que se hace cuando aparece el mensaje: xhost: unable to open display ":0", gracias de nuevo.

    ResponderEliminar
    Respuestas
    1. Juan, cuando instale Oracle 11g en mi Ubuntu 11.04 no tuve ningún problema, pero he buscado en Internet el error que te aparecio y encontre el link http://ubuntuforums.org/showthread.php?t=1005285 espero que esto pueda ayudarte. Si encuentras otra solución por favor publica como lo reparaste para que podamos ayudar a más personas.

      Eliminar
  7. no pierdan su tiempo instalando Oracle en un linux que no sea Oracle Linux 5.(En cualquiera de sus actualizaciones)..es un tiro al piso...me di coñazos tratando de instalarlo en ubuntu, fedora etc... y nada...hasta que en Oracle Enterprise Linux se instaló al pelo

    ResponderEliminar
  8. Primero, gracias. Tremendisimo tutorial. Para mi que soy novato fue de gran ayuda. El unico tema es que no encurntro el archivo root.sh
    # sh /u01/app/oracle/product/11.2.0/dbname_1/root.sh

    ResponderEliminar