Instalar Oracle 11g (xe) en ubuntu 18.04 LTS

El gestor de base de datos Oracle por defecto no existe para sistemas derivados de debian, por lo tanto no existe como paquete .deb, para ello adaptaremos el sistema y crearemos un fichero .deb usando un paquete .rpm

Lo primero que haremos era descargar el fichero, para ello debemos tener cuenta en oracle.

https://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/xe-prior-releases-5172097.html

Tambien podemos usar wget para descargarlo directamente en el server

Actualizamos la lista de repositoriosre

Remoto$ sudo apt update
Remoto$ sudo apt upgrade

nstalamos java

Remoto$  sudo apt install default-jre

Para saber si esta instalado usaremos java – version

Ahora creamos unos cuentos ficheros que son necesarios.

Vamos a proceder a configurar la variable de entorno JAVA_HOME. Para hacer esto abriremos el archivo /etc/bash.bashrc ejecutando el siguiente comando:

Remoto$ sudo vim /etc/bash.bashrc

Copiaremos al final del fichero estas líneas

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

Para cargar los cambios, se ejecuta el siguiente comando:

Remoto$ source /etc/bash.bashrc

Para comprobar que fue bien configurado podemos usar este comando, que nos dará una salida como esta ” /usr/lib/jvm/java-8-oracle”

Remoto$ echo $JAVA_HOME

En entornos basados en Devian no existen algunos ficheros que si en Red hat, vamos a crearlos

Remoto$ sudo vim /sbin/chkconfig

Con el siguiente contenido

#!/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

Le asignamos permisos al fichero

Remoto$ sudo chmod 755 /sbin/chkconfig

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

Remoto$ sudo vim /etc/sysctl.d/60-oracle.conf

Y añadimos el siguiente contenido

# 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

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

Remoto$ sudo service procps start

Los cambios podemos verificarlos con el comando, el resultado es algo parecido a fs.file-max = 95224

Remoto$ sudo sysctl -q fs.file-max

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 o 18.04, porque actualizaciones posteriores puede que no se creen y terminamos con errores a la hora de configurar Oracle Express.

Remoto$ sudo ln -s /usr/bin/awk /bin/awk àel archivo puede ya existir 
Remoto$ sudo mkdir /var/lock/subsys àel archivo puede ya existir
Remoto$ sudo touch /var/lock/subsys/listener 

Como oracle-xe no existe para sistemas basados en devian tendremos que usar un .rpm para ello instalaremos alien que nos transformara paquetes rpm a dev 

Remoto$ sudo apt-get install alien libaio1 unixodbc

Subimos el fichero, si no lo hemos descargado en el server usando wget

Remoto$ scp oracle-xe-11.2.0-1.0.x86_64.rpm user@server.com:/tmp/

Nos movemos al directorio donde este el fichero y descomprimimos el contenido.

Remoto$ unzip oracle-xe-11.2.0-1.0.x86_64.rpm

Ahora nos movemos de directorio

Remoto$ cd Disk1

Ahora convertirnos el fichero

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

Nota: esto tarda un pelin, puedes tomar un café mientras, cuando termine nos dirá que se a generado correctamente

Ahora si instamos Oracle-xe 

Remoto$ sudo dpkg --install oracle-xe_11.2.0-2_amd64.deb

Para evitar problemas de memoria 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 MB.

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

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

Remoto$ sudo vim  /etc/rc2.d/S01shm_load

Y agregamos el siguiente contenido

#!/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

Asignamos permisos al fichero

Remoto$ sudo chmod 755 /etc/rc2.d/S01shm_load

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

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

Ahora vamos a configurar varias variables de entorno asignandoles ciertos valores, necesarios para correr nuestro Oracle.

Remoto$ sudo vim /etc/bash.bashrc

Agregamos al final del fichero el siguiente contenido

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

Escribimos el siguiente comando para cargar los cambios en el sistema mediante el comando:

Remoto$ source /etc/bash.bashrc

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

Remoto$ echo $ORACLE_HOME

La respuesta del comando de ser igual a la siguiente:

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

Ahora reiniciamos el equipo

Remoto$ sudo reboot

Ahora podemos iniciar Oracle-xe

Remoto$ sudo service oracle-xe start

Referencias

https://jmguimera.blogspot.com/2016/08/como-instalar-y-configurar-oracle-11g.html