sábado, 5 de diciembre de 2020

Como Instalar y configurar Oracle 11g R2 Express Edition en Ubuntu 64-bit 12.04, 14.04 , 16.04, 18.04 y 20.04

Como Instalar y Configurar Oracle 11gR2

Como instalar Oracle

Empezamos la instalación instalando el kit de desarrollo JDK de Java sino lo tenemos ya instalado. Aquí debemos tener que tomar una decisión sobre que versión vamos a instalar.

Debemos tener en cuenta que para las versiones de 18.04 y 20.04, la instalación de JDK 8 es distinta, no por un cambio de versión, sino porque Oracle ha decidió ponernos la cosas  mucho mas difíciles de encontrar. Espero poder actualizar esto próximamente, pero de ahora en adelante el JDK8 y anteriores debemos instalarlos manualmente, pero este tutorial puede guiarlos. Hagan sus comentarios para saber donde se encuentran con mas dificultades, para resolver la instalación final sin problemas.

En este tutorial vamos a instalar la versión 1.8, que es la actual estable y la razón es que normalmente estas versiones son compatibles con las anteriores anteriores, de tal manera que si tenemos algún software que usa la versión 1.7 lo más seguro es que bajo la versión 1.8 funcione sin problemas, pero esto parece que no sucede con la 1.9.

El caso contrario es que instales un software basado en 1.8 y pretendas ejecutarlo en 1.7, el resultado mas probable es que de inmediato la aplicación falle.

Como pretendo instalar el ultimo Netbeans también en este equipo la ultima versión de este IDE utiliza Java 1.8 ,  y ya yo la había instalado previamente.

Para saber si tenemos Java instalado debemos ejecutar el siguiente comando en la consola del terminal.

java -version

Recordemos que el terminal se invoca pulsando las teclas Ctrl + Alt + t (Atl + t para distro Debian y Debian mismo)

Aquí vemos que el comando retorna información que indica que java no está instalado y nos sugiere los paquetes en los cuales se encuentran diferentes versiones.





En esta otra imagen vemos que ya tenemos instalada la versión 1.8

 

 Utiliza el comando en tu equipo y verifica si tienes Java instalado y que versión

Sino lo tienes instalado sigue este enlace:

Para instalar Java JDK pulsa este enlace.

Una vez que tengamos instalado el Java JDK, vamos a proceder a configurar la variable de entorno JAVA_HOME. Para hacer esto abriremos el archivo /etc/bash.bashrc ejecutando el siguiente comando:

   sudo gedit /etc/bash.bashrc



Lo cual abrirá el editor como vemos abajo, vamos hasta el final del archivo y añadimos las siguientes lineas

    export JAVA_HOME=/usr/lib/jvm/java-8-oracle
    export PATH=$JAVA_HOME/bin:$PATH



Guardamos el archivo y cerramos el editor. Para cargar los cambios, se ejecuta el siguiente comando:

    source /etc/bash.bashrc



Ahora comprobemos que la variable de entorno a sido configurada correctamente, ejecutando el siguiente comando:

   echo $JAVA_HOME

Lo cual debe mostrar lo siguiente:

   /usr/lib/jvm/java-8-oracle



Ahora si vamos a iniciar la instalación propiamente de Oracle Database Express y para ello pulsamos en el siguiente enlace para ir a la pagina de descarga oficial:


Pulsa aqui para ir a descargar Oracle Database Express Edition 11g Release 2
Nos abrirá la siguiente página en donde debemos marcar que aceptamos las condiciones de la licencia "Accept License Agreement". Cuando lo hagamos, desaparecerán los botones y solo quedarán las opciones de los sistema operativos que podemos descargar. Observa las siguientes imágenes.


Vamos a verlo en detalle en la siguientes imágenes. Pulsemos la opción que nos indica el cursor...


... y veremos la siguiente pantalla:


Pulsamos sobre la opción que nos indica el cursor y aquí puede suceder que se nos pida que indiquemos nuestro usuario registrado en Oracle si no hemos iniciado sesión antes en Oracle. Normalmente es eso lo que nos ocurre, o por lo menos a mi.


Escribimos nuestro usuario y contraseña e iniciamos sesión. Si no tenemos un usuario registrado tenemos que crear uno pulsando en crear cuenta. Esos pasos no los voy a indicar aquí.

Iniciamos sesión
 


y se iniciará la descarga o nos pedirá donde guardarla según como tengamos configurado nuestro explorador. Yo configuro el explorador para poder decidir donde quiero la descarga, ya que puedo hacerlo directamente en el sitio que se desea de una vez y no tener que moverlo luego. En este caso lo haré en Descargas, el subdirectorio por defecto que tienen todos los exploradores.


Una vez tenemos el archivo descargado vamos a proceder a descomprimirlo en la misma carpeta de Descargas.

Entramos a la consola del sistema mediante Ctrl +Alt + t, y escribimos

cd Descargas


Si no te te sale o da error es que no estas en la carpeta del usuario, y tendras que usar el siguiente comando:

cd /home/nombre_usuario/Descargas

Sustituye el nombre_usuario por el que corresponda, en mi caso josem


Ahora comprobamos el nombre del archivo que descargamos de Oracle, y para ello vamos a listar el contenido del directorio Descargas con el siguiente comando:

    ls ora*
 

Pro razones de facilidad he dejado aquí este archivo, 
El siguiente paso es descomprimir el archivo descargado. Usamos el siguiente comando para hacerlo, usando exactamente el nombre del archivo descargado:

    unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip


El comando anterior creará un subdirectorio llamado Disk1 como vemos en la imagen de abajo


Ahora vamos acceder a esta carpeta mediante el comando:

    cd Disk1


Continuamos listando el contenido de la carpeta, que debe contener un único archivo .rpm y dos carpetas, response y upgrade. Usamos para eso el comando:

    ls


El archivo descargado corresponde a los distros basados en Red Hat de Linux, pero eso tiene la extension .rpm y debemos convertirlo de .rpm a .deb para instalaciones de distros basados en Debian. Esto lo haremos usando el comando alien.


A continuación vamos a instalar un programa convertor alien, y que no viene instalado por defecto en Ubuntu desde la versión 12.10, para ello vamos a correr un update y upgrade para actualizar el sistema, escribimos en la consola:

    sudo apt-get update

y luego

   sudo apt-get upgrade


 Ahora escribimos el comando:

    sudo apt-get install alien libaio1 unixodbc
 


Pulsamos S y continuará la instalación

Una vez terminada la instalación de alien, vamos a proceder a convertir el archivo .rpm a .deb, escribimos en la consola:


    sudo alien --scripts -d oracle-xe-11.2.0-1.0.x86_64.rpm

Este proceso tardará algo de tiempo y dependerá de la velocidad del equipo, así que paciencia



Una vez terminado veremos el mensaje  de generado correctamente



Mientras alien hace su trabajo podemos seguir adelantando cosas. Para eso abrimos otro terminal de consola.


En Red Hat se utiliza el archivo /sbin/chkconfig, el cual no existe en Ubuntu, para poder instalar Oracle correctamente, vamos a crealo abriendo el editor gedit gráfico con el siguiente comando:

    sudo gedit /sbin/chkconfig

Copiamos y pegamos dentro del archivo, las siguientes lineas:

#!/bin/bash
# Oracle 11gR2 XE installer chkconfig hack for Ubuntu
file=/etc/init.d/oracle-xe
if [[ ! `tail -n1 $file | grep INIT` ]]; then
echo >> $file
echo '### BEGIN INIT INFO' >> $file
echo '# Provides: OracleXE' >> $file
echo '# Required-Start: $remote_fs $syslog' >> $file
echo '# Required-Stop: $remote_fs $syslog' >> $file
echo '# Default-Start: 2 3 4 5' >> $file
echo '# Default-Stop: 0 1 6' >> $file
echo '# Short-Description: Oracle 11g Express Edition' >> $file
echo '### END INIT INFO' >> $file
fi
update-rc.d oracle-xe defaults 80 01
#EOF





Guardamos el archivo y salimos del editor. Ahora tenemos que asignarle los privilegios de ejecución apropiados, escribiendo en la consola:

    sudo chmod 755 /sbin/chkconfig



Después vamos a crear el archivo /etc/sysctl.d/60-oracle.conf, para poner ciertos parametros del kernel adicionales, usando el siguiente comando:

    sudo gedit /etc/sysctl.d/60-oracle.conf

y vamos a copiar y pegar dentro del mismo las siguientes líneas:

# Oracle 11g XE kernel parameters
fs.file-max=6815744
net.ipv4.ip_local_port_range=9000 65000
kernel.sem=250 32000 100 128
kernel.shmmax=536870912




El último parámetro kernel.shmmax indica el número máximo posible de memoria RAM en bytes, dividiendo 536870912 / 1024 /1024 = 512 MB

Podemos comprobar este archivo ejecutando el siguiente comando:

    sudo cat /etc/sysctl.d/60-oracle.conf



Carguemos los parámetros del kernel, con el comando:

    sudo service procps start



Los cambios podemos verificarlos con el comando:

    sudo sysctl -q fs.file-max

Lo cual debe mostrar algo parecido a la siguiente imagen:



Luego de esto, ejecutaremos los siguientes comandos, los cuales son necesarios para versiones anteriores al Ubuntu 16.04, como 14.04 y 12.94, para hacer algunos cambios más  que se requieren. OJO: siempre hay ejecutarlos, aunque estemos en la versión 16.04, porque actualizaciones posteriores puede que no se creen y terminamos con errores a la hora de configurar Oracle Express.

sudo ln -s /usr/bin/awk /bin/awk



sudo mkdir /var/lock/subsys

sudo touch /var/lock/subsys/listener


Vemos en la imagen a continuación los errores que nos pueden salir





Los mismos no son errores si estas instalando la versión Ubuntu 16.04, sino que estos los directorios o enlaces indirectos no existen en las versiones anteriores, pero en la versión 16.04 si.

Con los comandos anteriores nos aseguramos que dichas carpetas existan, porque son necesarias para correr Oracle Express

Llegado este momento y teniendo ya el archivo convertido de .rpm a .deb, un archivo llamado oracle-xe_11.2.0-2_amd64.deb tiene que existir en Disk1.

Con el explorador de archivos nautilus podemos verificar eso.



Ahora vamos a proceder a la instalación de Oracle ejecutando el siguiente comando:
    sudo dpkg --install oracle-xe_11.2.0-2_amd64.deb



Debemos ejecutar los siguientes comandos para evitar que se nos genere el error ORA-00845:MEMORY_TARGET. Debes reemplazar size=4096m por la cantidad de memoria RAM del equipo en MBs.

    sudo rm -rf /dev/shm
    sudo mkdir /dev/shm
    sudo mount -t tmpfs shmfs -o size=4096m /dev/shm



Aquí vemos que en la versión 16.04 de nuevo se han hecho cambios, que en versiones anteriores de Ubuntu no se habían realizado y que por tanto hay que hacerlas a mano, para asegurar la instalación y no volvernos locos luego preguntándonos porque no corre el Oracle Express.

Como dije antes no esta demás, repetir la ejecución de estos comandos, ya que con ello constatamos que los mismos se han ejecutado exitosamente previamente, sea por la instalación de Oracle o no.

El error de MEMORY_TARGET es muy común, que salga en estas instalaciones y la manera de evitarlo es escribiéndolo lo indicado mas arriba.

Ahora creamos el archivo S01shm_load en el siguiente directorio /etc/rc2.d/

De nuevo usando el gedit, escribimos:

    sudo gedit /etc/rc2.d/S01shm_load



Copiamos y pegamos lo siguiente dentro del archivo:


#!/bin/sh
case "S1" in
start) mkdir /var/lock/subsys 2>/dev/null
touch /var/lock/subsys/listener
rm /dev/shm 2>/dev/null
mkdir /dev/shm 2>/dev/null
mount -t tmpfs shmfs -o size=4096m /dev/shm ;;
*) echo error
exit 1 ;;
esac
 


Guardamos el archivo, cerramos el editor y asignamos al archivo los privilegios apropiados con el siguiente comando:

    sudo chmod 755 /etc/rc2.d/S01shm_load



Ahora vamos a proceder a configurar el Oracle, para ello escribimos el siguiente comando:

    sudo /etc/init.d/oracle-xe configure

Este comando va a pedir que puerto para el HTTP,  Oracle Express va a utilizar. Por defecto el indicara entre corchetes [8080]. Yo recomiendo usar otro puerto.


Yo utilizo específicamente la dirección de escucha del http en el puerto 10080, en lugar del 8080 para evitar conflictos con servidores como Apache que se instalan normalmente por defecto sus servicios con esta configuración.


Luego pide que puerto se utilizará como listener sugiriendo por defecto [1521]
Dejo por el puerto especificado por defecto por el asistente de la instalación 1521.

Finalmente pregunta si el gestor de base de datos Oracle debe iniciarse cuando la maquina se arranque, por defecto se sugiere [y] si. Aquí de nuevo depende del usuario, pero para uso de pruebas y programación en el equipo local lo mas recomendable es que no sea así.

Si  no deseo que el Oracle arranque una vez que se inicie el equipo, escribo n.


OJO: Es muy importante anotar el password o contraseña, ya que con ella luego podremos acceder a la base de datos. Olvidar el password significa volver a correr el oracle-xe configure


Ahora vamos a configurar varias variables de entorno asignandoles ciertos valores, necesarios para correr nuestro Oracle. Abrimos el archivo /etc/bash.bashrc con gedit.


    sudo gedit /etc/bash.bashrc



Nos desplazamos al final del archivo, y copiamos y pegamos allí las siguientes líneas:

export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe
export ORACLE_SID=XE
export NLS_LANG=`$ORACLE_HOME/bin/nls_lang.sh`
export ORACLE_BASE=/u01/app/oracle
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH





Guardamos el archivo y salimos del editor. Escribimos el siguiente comando para cargar los cambios en el sistema mediante el comando:

    source /etc/bash.bashrc



Ahora podemos comprobar que se ha ejecutado correctamente con este comando:

     echo $ORACLE_HOME

 La respuesta del comando de ser igual a la siguiente:

/u01/app/oracle/product/11.2.0/xe


Luego de este paso se debe reiniciar el sistema. Una vez el reinicio del equipo se complete, podemos escribir el siguiente comando en la consola para iniciar el Oracle Express:


     sudo service oracle-xe start
 


NOTA IMPORTANTE.-
La instalación de Oracle en ocasiones parece que deja que el servidor arranque al iniciarse el sistema. Puede que el programa de configuración no se ejecute correctamente, y el cual se puede volver a ejecutar.

Para verificar si el servidor Oracle esta funcionando podemos usar el siguiente comando:

    sudo service oracle-xe status

Lo cual debe mostrar algo similar a lo siguiente en caso de estar detenido:


Veremos el circulo en blanco, inactive, sotpping y stopped, en los sitios señalados. Ya el circulo en blanco es suficiente indicador junto con el inactive.

Y algo similar a lo siguiente si el servidor esta iniciado:



Ahora vemos el circulo verde, active, starting y started


Si queremos detener Oracle Express simplemente escribimos en la consola

    sudo service oracle-xe stop

 Si queremos detenerlo y reiniciarlo

    sudo service oracle-xe restart

 Existen otros opciones que no voy a mostrar aqui como enable, enable y force-load.

Hasta aqui la instalación y configuración del Oracle Express.


ACCEDER al Servidor ORACLE

Lo siguiente es acceder a la consola del servidor, para lo cual nuestro servidor debe estar ejecutándose, sino nos saldrá algo como esto:

 Si es tu caso ejecuta desde la consola el comando que mas arriba se muestra y que vuelvo a recordar:

    sudo service oracle-xe start

Ahora para acceder al servidor abrimos buscar del Ubuntu pulsando la llamada tecla windows del teclado (la que esta entre Ctrl y Alt del lado izquierdo del teclado) o buscamos en le menú lateral el icono que es el primero del extremo superior

Escribimos oracle express y tendremos algo similar a lo siguiente


Vemos que el Ubuntu nos muestra un icono el cual representa al Oracle Express 11g, pulsamos sobre el y nos debe salir una pantalla similar a lo siguiente, pero puede que muestre una petición de usuario y contraseña:


Ya con solo pedir la credenciales indicará que nuestro servidor Oracle ya está operativo en nuestro Ubuntu.

Como siempre si detectas algún error u omisión, o hacer una observación o aclaración, por favor deja un comentario, para corregir, cambiar o re-definir los conceptos que sean necesarios. Tus aportes son importantes. Muchas Gracias por visitar mi blog.

Este material forma parte del blog tutorialesjosem.blogspot.com y queda sujeto a autorización para ser publicado, total o parcialmente, en otro blog o página web.

Todos los Derechos Reservados.

12 comentarios:

yousra dijo...

Hola.
A mi me da error a la hora de cargar los parámetros del kernel, con el comando:
sudo service procps start.


el error es:
Job for systemd-sysctl.service failed because the control process exited with error code. See "systemctl status systemd-sysctl.service" and "journalctl -xe" for details.



y cuando entro a "systemctl status systemd-sysctl.service":
● systemd-sysctl.service - Apply Kernel Variables
Loaded: loaded (/lib/systemd/system/systemd-sysctl.service; static; vendor preset: enabled)
Active: failed (Result: exit-code) since lun 2017-01-23 17:29:10 CET; 1min 31s ago
Docs: man:systemd-sysctl.service(8)
man:sysctl.d(5)
Process: 13402 ExecStart=/lib/systemd/systemd-sysctl (code=exited, status=1/FAILURE)
Main PID: 13402 (code=exited, status=1/FAILURE)

ene 23 17:29:10 yu-pc systemd[1]: Starting Apply Kernel Variables...
ene 23 17:29:10 yu-pc systemd[1]: systemd-sysctl.service: Main process exited, code=exited, status=1/FAILURE
ene 23 17:29:10 yu-pc systemd[1]: Failed to start Apply Kernel Variables.
ene 23 17:29:10 yu-pc systemd[1]: systemd-sysctl.service: Unit entered failed state.
ene 23 17:29:10 yu-pc systemd[1]: systemd-sysctl.service: Failed with result 'exit-code'.


No se que es lo que hay que hace, he visto muchos blogs pero no encuentro la solución. Si me puedes ayudar estaría muy agradecida. Necesito tenerlo cuanto antes para poder hacer unas practicas.

Gracias :)

Javier Onishi dijo...

Mil gracias Jose Miguel, seguí todos los pasos que decis, solo faltaba instalar libaio1 y todo salio bien, incluso al ejecutar sudo service oracle-xe status me sale activado, pero mi problema es que no se conecta al servidor, de ninguna forma, ni haciendo sudo service oracle-xe start.
Estoy usando Ubuntu 16.10, no sabes que pueda estar pasando? agradecería una ayudita

Anónimo dijo...

Hola, he realizado todos los pasos y ningun problema.
Sin embargo, al acceder al servidor me dice que no se puede conectar a él aunque si que está iniciado.
Gracias por tu respuesta

Unknown dijo...

hola he seguido tu manual al pie de la letra pero tengo un problema te pego el error que me sale en el terminal
mato@mato-CX72-6QD:~$ sudo service oracle-xe start
[sudo] password for mato:
Job for oracle-xe.service failed because the control process exited with error code. See "systemctl status oracle-xe.service" and "journalctl -xe" for details.

José Miguel Guimerá Padrón dijo...

Gracias Angel, por leer mi blog. El proceso de instalación de Oracle es tedioso, porque es muy sensitivo a lo mas mínimo. Cualquier cosa puede generarte error.
Cuando lo trate de instalar la primera vez me saltaron todo tipo de errores. Iba corrigiendo según me salían y saltaban en otro lado. Entre ellos ese que mencionas que al final no puede resolver en el equipo donde estaba montando el servidor.

Por tanto decidi, hacer la instalación en un sistema limpio, creado desde cero en una maquina virtual creada en mi equipo, usando VirtualBox.

Hice una actualización previa del sistema, apt-get update y luego apt-get upgrade
instalé la versión de java que se muestra al principio y di cada uno de los pasos seguidos en este tutorial, sin pararme a hacer nada.

Una de la razones de que hago el copia-pega de cada pantalla es para que el lector, o sea, uds. vean el resultado de la misma, la cual debe ser igual o similar en sus equipos. Con esto descartamos cualquier que cualquier paquete instalado pueda estar dandonos problemas.

Por otro lado están las versiones del Ubuntu, en mi caso lo he instalado tanto en Ubuntu 14.04, como en 16.04. Uso estas versiones porque las mismas son LTS Long Term Support. Esta soportadas por 7 años si mal no recuerdo. Lo cual nos da bastante tiempo si vamos a montar un sistema de bases de datos fiable.

Me imagino que quieres usarlo para desarrollo de aplicaciones. Siempre sugiero que se instale en una maquina virtual(MV) porque podemos acceder a ella simplemente haciendola formar parte de nuestra red local, le ponemos una ip fija dentro de nuestro rango por supuesto, y accedemos al servidor de base de datos, en un equipo dedicado solo a eso, aunque este sea virtual.

Es muy difícil decirte que puede estar pasando en tu caso, y lo único que puedo decirte es que vuelvas hacia y repases lo que haz hecho. Saludos

José Miguel Guimerá Padrón dijo...

Me imagino que no puedes acceder a la web. Puede suceder que el puerto esté ocupado por otro servicio.

Trata de acceder con SQL*Plus, que el mismo Oracle instala. Puedes buscarlo en el icono del menu lateral, el primero de todos, donde se muestra todo lo instalado en el equipo. Escribes sql y aparecera un icono que de Run SQL command line

Unknown dijo...

Muchas gracias por tu rápida respuesta, voy a intentarlo con la maquina virtual.
Si quiero instalarlo para hacer pruebas ya que estoy realizando estudios de informática y quería practicar sentencias SQL.
Muchas gracias y un saludo

Unknown dijo...

Instala libaio1.
sudo apt-get install libaio1

Esto resolvió para mi este problema

José Miguel Guimerá Padrón dijo...

Muchas gracias por tu valioso aporte Nicolás. Me gustaría que además nos indicaras que en versión de Ubuntu o distro Linux lo instalaste y en que momento detectaste que te estaba pidiendo esa libreria. Saludos

José Miguel Guimerá Padrón dijo...

Hola Javier, y disculpa el inmenso retraso. pero he estado muy ocupado en otras tareas y esto de llevar un blog no es nada sencillo. Tu problema parece ser que estas usando el puerto 8080, para desplegar la web y si tienes algún otro servicio, como por ejemplo apache y es mismo esta corriendo, no podrás ver el servicor Oracle.
Revisa en que puerto instalaste la web de Oracle y si el mismo esta siendo usado por otro servicio. Si encuentras ese otro servicio detenlo y prueba volver a entrar.

Lo que si no puede fallar es correr el SQL*Plus. Para ello vete al icono de Buscar en el equipo en primero de la barra lateral izquierda, y escribes alli sql, pulsas sobre el sql y accedes con "connect usuario/password" sin las comillas.

Si te sale Connected, es motivado por lo comentado anteriormente. Asegurar que el servicor esta corriendo con service oracle-xe status

Anónimo dijo...

Muchas gracias, fue muy completo el articulo y me ha servido lo he probado y esta funcionando, muchas gracias! sigue así, muchos éxitos

José Miguel Guimerá Padrón dijo...
Este comentario ha sido eliminado por el autor.

Publicar un comentario

Tu comentario puede ser muy útil, asi que no dudes en dejar el tuyo.
Si es relacionado con algún problema, error. etc. trata de ser muy explicito, y detallar el problema y las circunstancias en las que se produjeron. Si lanza algún error trata de copiarlo y pegarlo junto con una descripción del problema, ya que a veces los errores del sistema no son en realidad la causa del problema.

Vistas de página en total